aspoka Temat założony przez niniejszego użytkownika |
[WinAPI] Reakcja na kliknięcie przycisku » 2013-07-29 17:37:45 Witam, mam problem z obiektami kontrolnymi a dokładnie z przyciskiem. Napisałem program który wyświetla okno z: ramką, polem tekstowym, listą rozwijaną, polem wyboru, polem opcji i przyciskiem. Gdy przycisnę przycisk program ma wyświetlić komunikat "Naciśnięto przycisk!" ale tego nie robi. Oto mój kod źródłowy: #include <windows.h>
LRESULT CALLBACK WndProc( HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam ) { HWND Ramka, Pole_tekstowe, Pole_opcji_1, Pole_opcji_2, Lista_rozwijana, Pole_wyboru_1, Pole_wyboru_2, Przycisk; switch( Message ) { case WM_CLOSE: { DestroyWindow( hwnd ); break; } case WM_DESTROY: { PostQuitMessage( 0 ); break; } default: return DefWindowProc( hwnd, Message, wParam, lParam ); case WM_COMMAND: if(( HWND ) lParam == Przycisk ) MessageBox( hwnd, "Nacisnięto przycisk!", "Komunikat", MB_ICONINFORMATION ); break; } return 0; }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { WNDCLASSEX wc; HWND hwnd; MSG Msg; memset( & wc, 0, sizeof( wc ) ); wc.cbSize = sizeof( WNDCLASSEX ); wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); wc.lpszClassName = "WindowClass"; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); if( !RegisterClassEx( & wc ) ) { MessageBox( NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK ); return 0; } HWND Ramka, Pole_tekstowe, Pole_opcji_1, Pole_opcji_2, Lista_rozwijana, Pole_wyboru_1, Pole_wyboru_2, Przycisk; hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, "WindowClass", "Moje Okno", WS_VISIBLE | WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 375, 330, NULL, NULL, hInstance, NULL ); Ramka = CreateWindowEx( 0, "BUTTON", "Ramka", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 10, 10, 335, 270, hwnd, NULL, hInstance, NULL ); Pole_tekstowe = CreateWindowEx( WS_EX_CLIENTEDGE, "COMBOBOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 20, 30, 150, 30, hwnd, NULL, hInstance, NULL ); Lista_rozwijana = CreateWindowEx( WS_EX_CLIENTEDGE, "COMBOBOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | CBS_DROPDOWN, 20, 80, 150, 200, hwnd, NULL, hInstance, NULL ); SendMessage( Lista_rozwijana, CB_ADDSTRING, 0,( LPARAM ) "Opcja1" ); SendMessage( Lista_rozwijana, CB_ADDSTRING, 0,( LPARAM ) "Opcja2" ); SendMessage( Lista_rozwijana, CB_ADDSTRING, 0,( LPARAM ) "Opcja3" ); Pole_wyboru_1 = CreateWindowEx( 0, "BUTTON", "Pole wyboru 1", WS_CHILD | WS_VISIBLE | BS_CHECKBOX, 210, 30, 125, 30, hwnd, NULL, hInstance, NULL ); Pole_wyboru_2 = CreateWindowEx( 0, "BUTTON", "Pole wyboru 2", WS_CHILD | WS_VISIBLE | BS_CHECKBOX, 210, 80, 125, 30, hwnd, NULL, hInstance, NULL ); Pole_opcji_1 = CreateWindowEx( 0, "BUTTON", "Pole opcji 1", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 210, 130, 125, 30, hwnd, NULL, hInstance, NULL ); Pole_opcji_2 = CreateWindowEx( 0, "BUTTON", "Pole opcji 2", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 210, 180, 125, 30, hwnd, NULL, hInstance, NULL ); Przycisk = CreateWindowEx( 0, "BUTTON", "Przycisk", WS_CHILD | WS_VISIBLE, 127, 230, 70, 30, hwnd, NULL, hInstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK ); return 0; } while( GetMessage( & Msg, NULL, 0, 0 ) > 0 ) { TranslateMessage( & Msg ); DispatchMessage( & Msg ); } return Msg.wParam; }
Bardzo proszę o pomoc. |