GoldWolf Temat założony przez niniejszego użytkownika |
[WinAPI] Jak poprawnie pisać program, gdzie umieszczać poszczególne jego elementy? » 2011-05-30 11:09:42 Szukałem sposobu zmiany rozmiaru czcionki i trafiłem na takie przykład:
#include <windows.h> #include <commctrl.h>
HWND hEdit, hButton, hWnd; HFONT hFont;
CHAR szClassName[] = "OknoRodzica"; HINSTANCE * hInst;
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
INT WINAPI WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR lStart, INT nShow ) { hInst =& hInstance; WNDCLASSEX wc; wc.hInstance =* hInst; wc.lpszClassName = szClassName; wc.lpfnWndProc = WndProc; wc.style = 0; wc.cbSize = sizeof( WNDCLASSEX ); wc.hIcon = LoadIcon( 0, IDI_APPLICATION ); wc.hIconSm = LoadIcon( 0, IDI_APPLICATION ); wc.hCursor = LoadCursor( 0, IDC_ARROW ); wc.lpszMenuName = 0; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground =( HBRUSH ) COLOR_BACKGROUND; if( !RegisterClassEx( & wc ) ) return 0; hWnd = CreateWindowEx( 0, szClassName, "Użycie edit'a", WS_OVERLAPPEDWINDOW, 20, 20, 600, 300, 0, 0, * hInst, 0 ); ShowWindow( hWnd, nShow ); MSG msgs; while( GetMessage( & msgs, 0, 0, 0 ) ) { TranslateMessage( & msgs ); DispatchMessage( & msgs ); } return msgs.wParam; }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wPar, LPARAM lPar ) { switch( msg ) { case WM_CREATE: hEdit = CreateWindowEx( WS_EX_CLIENTEDGE, WC_EDIT, "Tu mozna cos napisac", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | WS_VSCROLL | WS_HSCROLL, 10, 10, 570, 200, hwnd, 0, * hInst, 0 ); hFont = CreateFont( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Arial" ); SendMessage( hEdit, WM_SETFONT,( WPARAM ) hFont, 0 ); hButton = CreateWindowEx( 0, WC_BUTTON, "Wyczyść tekst w kontrolce", WS_CHILD | WS_VISIBLE, 10, 220, 570, 40, hwnd,( HMENU ) 1, * hInst, 0 ); break; case WM_COMMAND: if( wPar == 1 ) SetWindowText( hEdit, "" ); break; case WM_DESTROY: DeleteObject( hFont ); DestroyWindow( hEdit ); DestroyWindow( hButton ); PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wPar, lPar ); } return 0; }
Pytam o metodologie, bo w kursie tutaj zamieszczonym tworzenie niektórych elementów odbywa się w ciele klasy okna. Ma to w ogóle jakieś znaczenie? W msdn jest podobnie jak tutaj.
Tak na chłopski co umieszczać w "INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR lStart,INT nShow)", a co w "LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)". Czy w ogóle się tym przejmować? |