Avatar billede mussepower5 Nybegynder
24. november 2008 - 19:51 Der er 4 kommentarer

Insæt billede

Hejsa!

Jeg sidder og læser lidt på c++ og har fået det til at virker ( Åbne et vindue )

Vær opmærksom på dette er kopiret ( vilket vil sige det engelsk, er kun ved at lære det, har nemmest ved at se koden og så lærer det ):

#include <windows.h>

LRESULT CALLBACK WindowProcedure(HWND hwnd, unsigned int message, WPARAM wParam, LPARAM lParam);

class MyWindow {
    public:
        MyWindow(WNDPROC winProc, char const * className, HINSTANCE hInst);
        void Register() {
            ::RegisterClass(&_class);
        }
    private:
        WNDCLASS _class;
};

MyWindow::MyWindow(WNDPROC winProc, char const * className, HINSTANCE hInst) {
    _class.style        = 0;            // Windows Style (future article)
    _class.lpfnWndProc  = winProc;            // The Window Procedure
    _class.cbClsExtra    = 0;            // Extra memory for this class
    _class.cbWndExtra    = 0;            // Extra memory for this window
    _class.hInstance    = hInst;            // The definition of the instance of the application
    _class.hIcon        = 0;            // The icon in the upper left corner
    _class.hCursor      = ::LoadCursor(0, IDC_ARROW);    // The cursor for this window
    _class.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);    // The background color for this window
    _class.lpszMenuName  = 0;            // The name of the class for the menu for this window
    _class.lpszClassName = className;        // The name of this class
}
class WindowCreator {
    public:
        WindowCreator() : _hwnd(0) {}    // Inline contructor
        WindowCreator(char const * caption, char const * className, HINSTANCE hInstance);
        void SetVisible(int cmdShow) {    // Makes the window visible after it is created
            ::ShowWindow(_hwnd, cmdShow);
            ::UpdateWindow(_hwnd);
        }
    protected:
        HWND _hwnd;
};

WindowCreator::WindowCreator(char const * caption, char const * className, HINSTANCE hInstance) {
    _hwnd = ::CreateWindow(
        className,        // Name of the registered window class
        caption,        // Window Caption to appear at the top of the frame
        WS_OVERLAPPEDWINDOW,    // The style of window to produce (overlapped is standard window for desktop)
        CW_USEDEFAULT,    // x position of the window
        CW_USEDEFAULT,    // y position of the window
        CW_USEDEFAULT,    // width of the window
        CW_USEDEFAULT,    // height of the window
        0,        // The handle to the parent frame (we will use this later to simulate an owned window)
        0,        // The handle to the menu for this window (we will learn to create menus in a later article)
        hInstance,     // the application instance
        0);        // window creation data
}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char * cmdParam, int cmdShow) {
    char className[] = "Program";
    MSG  msg;
    int  status;
   
    MyWindow myWindow(WindowProcedure, className, hInst);
    myWindow.Register();
   
    WindowCreator window("Programming Is Fun!", className, hInst);
    window.SetVisible(cmdShow);   
   
    while((status = ::GetMessage(&msg, 0, 0, 0)) != 0) {
        if(status == -1) {
            return -1;
        }
       
        ::DispatchMessage(&msg);
    }
   
    return  msg.wParam;
}

LRESULT CALLBACK WindowProcedure(HWND hwnd, unsigned int message, WPARAM wParam, LPARAM lParam) {
    switch(message) {
        case WM_DESTROY:
            ::PostQuitMessage(0);
            return 0;
    }
   
    return ::DefWindowProc(hwnd, message, wParam, lParam);
}




________________________________________________________________

Kan i måske give et hint eller noget andet sådan ejg måske kunne finde ud af at lægge et billede ind i dette vindue?
Avatar billede bertelbrander Praktikant
24. november 2008 - 22:45 #1
Du kan måske få lidt inspiration her:
http://damb.dk/snip/bitmap.html
Avatar billede arne_v Ekspert
25. november 2008 - 02:34 #2
Virker der også i MFC sammehæng ?
Avatar billede bertelbrander Praktikant
25. november 2008 - 19:26 #3
Man kan sådan set godt bruge det sammen med MFC, men så vidt jeg kan se er mussepower5's kode ikke MFC.
Avatar billede arne_v Ekspert
27. november 2008 - 23:40 #4
Du har ret. Jeg synes bare at det ligned MFC med classes og :: foran Win32 API kald.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester