#define STRICT #include #include HINSTANCE hInstance; //Programinstans HWND hWnd; //Handtag till huvud fönstret HWND hTextbox; //Handtag till textbox MSG msg; //Meddelande-struct //Fönsterprocedur för textbox: long FAR PASCAL TextboxProc(HWND hTextbox,UINT msg,WPARAM wParam,LPARAM lParam); #include "dialog.h" //Saker som har att göra med textbox-dialogen #include "action.h" //Här sker allt det roliga... //Fönsterprocedur för huvudfönster: long FAR PASCAL StartWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam); //Registrering av fönsterklasser: void DoRegisterClasses(HINSTANCE hInstance,HINSTANCE hPrevInstance); /*---------------------------------------------------------------------------*/ /* MAIN */ /*---------------------------------------------------------------------------*/ int PASCAL WinMain ( HINSTANCE hInstance, //Programinstans HINSTANCE hPrevInstance, //Tidigare instans LPSTR lpszCmdLine, //Kommandosträng (jfr. argv) int nShow) //Initial visning av fönster { DoRegisterClasses(hInstance,hPrevInstance); //--Registrera fönsterklass- hWnd = CreateWindow( //------Skapa fönster------- "APPLIKATION", //Klassnamn "Smile Paint v.1.0", //Fönster titel WS_OVERLAPPEDWINDOW, //Fönster stil CW_USEDEFAULT, //X-punkt övre vänstra hörn CW_USEDEFAULT, //Y-punkt övre vänstra hörn CW_USEDEFAULT, //cx (bredd) CW_USEDEFAULT, //cy (höjd) NULL, //Förälderfönster LoadMenu(hInstance,"MY_MENU"), //Meny hInstance, //Programinstans NULL); //Data pekare assert(hWnd != NULL); //Lyckad fönsterskapning? ShowWindow(hWnd, nShow); //-------Visa fönster------- while (GetMessage(&msg,0,0,0)) //----Ta emot meddelande---- { TranslateMessage(&msg); //Översätter tangent-komb. DispatchMessage(&msg); //Skickar meddelande till //"rätt" ställe } return 0; } /*---------------------------------------------------------------------------*/ /* REGISTRERAR FÖNSTERKLASSEN */ /*---------------------------------------------------------------------------*/ void DoRegisterClasses(HINSTANCE hInstance,HINSTANCE hPrevInstance) { WNDCLASS wndclass; if (!hPrevInstance) //Redan registrerad tidigare? { //--------------------------Huvudfönstret------------------------------ wndclass.lpszClassName = "APPLIKATION"; //Klassnamn wndclass.hInstance = hInstance; //Prg instans wndclass.lpfnWndProc = StartWndProc; //Fönsterproc wndclass.hCursor = LoadCursor(hInstance,"MY_ARROW"); //Musmarkör wndclass.hIcon = LoadIcon(hInstance,"MY_ICON"); //Ikon wndclass.lpszMenuName = "MY_MENU"; //Meny wndclass.hbrBackground = CreateSolidBrush(RGB(255,255,255)); //BG-färg wndclass.style = 0L; //Fönsterklass stil wndclass.cbClsExtra = 0; //Extra bytes för klass wndclass.cbWndExtra = 0; //Extra bytes för fönster RegisterClass(&wndclass); //Registrerar klass //------------------Dialogrutan för textinmatning---------------------- wndclass.lpszClassName = "DIALOGRUTA"; //Klassnamn wndclass.hInstance = hInstance; //Prg instans wndclass.lpfnWndProc = TextboxProc; //Fönsterproc wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //Musmarkör wndclass.hIcon = NULL; //Ikon wndclass.lpszMenuName = NULL; //Meny wndclass.hbrBackground = CreateSolidBrush(RGB(255,255,255)); //BG-färg wndclass.style = 0L; //Fönsterklass stil wndclass.cbClsExtra = 0; //Extra bytes för klass wndclass.cbWndExtra = 0; //Extra bytes för fönster RegisterClass(&wndclass); //Registrerar klass } } /*---------------------------------------------------------------------------*/ /* HANTERING AV MEDDELANDE */ /*---------------------------------------------------------------------------*/ long FAR PASCAL StartWndProc( HWND hWnd, //Fönsterhandtag UINT msg, //Meddelande WPARAM wParam, //Parameter (w) LPARAM lParam) //Parameter (l) { switch(msg) { case WM_CREATE: //Fönstret skapat aINIT(hWnd); break; case WM_PAINT: //Fönster behöver ritas om aUPDATE(hWnd); break; case WM_COMMAND: //Menyval aMENU(hWnd,wParam); break; case WM_LBUTTONDOWN: //Vänsterknapp aLMBD(hWnd,lParam); break; case WM_LBUTTONUP: //Vänsterknapp upp aLMBU(hWnd,lParam); break; case WM_CLOSE: //Om anv. försöker //stänga fönstret aQUIT(hWnd); break; case WM_DESTROY: //Om WM_DESTROY PostQuitMessage(0); //skickar vi WM_QUIT break; case WM_MOUSEMOVE: //Om musen flyttas aMV(lParam); break; default: //Övriga funktioner return(DefWindowProc(hWnd,msg,wParam,lParam)); } return 0L; }