кодинг на чистом API. Как нажать на кнопку?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
кодинг на чистом API. Как нажать на кнопку? - 2005-10-22 16:13:32
|
|
|
je0n
Сообщений: 126
Оценки: 0
Присоединился: 2004-07-05 23:40:07
|
Привет. Хочу просто сделать форму с кнопкой и чтобы при нажатии на кнопку что-нить делалось (все равно что) на чистом API. Форму я сделал и могу обрабатывать сообщения которые в неё поступают, у меня при нажатии на кнопку левой или правой кнопкой меняется текст окна и если открыт «Блокнот», то меняется и текст его заголовка окна. Добавил и кнопку на форму, но вот как обрабатывать сообщения для кнопки я не догоню!!! Собственно вот и вопрос – как сделать обработчик для кнопки. Вот код, который у меня получился:
<code>
#include <windоws.h>
LONG WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { HWND hwnd,bhwnd; MSG msg; WNDCLASS w; memset(&w,0,sizeof(WNDCLASS)); w.style=NULL; w.lpfnWndProc=WndProc; w.hInstance=hInstance; w.hbrbаскgrоund=(HBRUSH)COLOR_windоw; w.lpszClassName="First"; w.hCursor=LoadCursor(NULL, IDC_ARROW); RegisterClass(&w); hwnd=Createwindоw("First","fucking windоw",WS_OVERLAPPEDwindоw,1,1,500,400,NULL,NULL,hInstance,NULL); bhwnd=Createwindоw("BUTTON","OK",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,10,10,100,100,hwnd,NULL,NULL,NULL); Showwindоw(hwnd,nShowCmd); Updatewindоw(hwnd); while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
LONG WINAPI WndProc(HWND hwnd,UINT Message,WPARAM wparam,LPARAM lparam) { switch(Message) { case WM_DESTROY: PostQuitMessage(0); break; case WM_LBUTTONDOWN: SetwindоwText(hwnd,"not fucking windоw"); break; case WM_RBUTTONDOWN: HWND hnd; hnd=Findwindоw(NULL,"Áåçûìÿííûé - Áëîêíîò"); SetwindоwText(hnd,"jeon''s soft - notepad"); SetwindоwText(hwnd,"its so scary in a world with peoples who are idiots"); break; default: return DefwindоwProc(hwnd,Message,wparam,lparam); } return 0; }
</code>
|
|
|
кодинг на чистом API. Как нажать на кнопку? - 2005-10-24 16:54:28
|
|
|
lolik
Сообщений: 152
Оценки: 0
Присоединился: 2005-03-19 19:25:42
|
вроде нужно обрабатывать сообщение WM_COMMAND. Там в WPARAM или LPARAm будет идентификатор нажатой кнопки. вроде так, точно не помню..
|
|
|
кодинг на чистом API. Как нажать на кнопку? - 2005-10-28 00:08:15
|
|
|
Avlak
Сообщений: 134
Оценки: 0
Присоединился: 2005-05-18 17:04:13
|
при создании кнопки в поле "handle of menu, or child-windоw identifier" указываешь свой идентификатор кнопки, скажем btnExecute=7, тогда это будет выглядеть примерно так:
bhwnd=Createwindоw("BUTTON","OK",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,10,10,100,100,hwnd,btnExecute,NULL,NULL);
switch(Message) { case WM_COMMAND: switch(HIWORD(WPARAM)) { case BN_CLICKED: if(LOWORD(WPARAM)==btnExecute) //if(LOWORD(WPARAM)==7) { //твой код } break; } break; }
|
|
|
|
|