Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

кодинг на чистом API. Как нажать на кнопку?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> кодинг на чистом API. Как нажать на кнопку?
Имя
Сообщение << Старые топики   Новые топики >>
кодинг на чистом 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,"&#193;&#229;&#231;&#251;&#236;&#255;&#237;&#237;&#251;&#233; - &#193;&#235;&#238;&#234;&#237;&#238;&#242;");
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>
Post #: 1
кодинг на чистом API. Как нажать на кнопку? - 2005-10-24 16:54:28   
lolik

Сообщений: 152
Оценки: 0
Присоединился: 2005-03-19 19:25:42
вроде нужно обрабатывать сообщение WM_COMMAND. Там в WPARAM или LPARAm будет идентификатор нажатой кнопки. вроде так, точно не помню..
Post #: 2
кодинг на чистом 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;
}



Post #: 3
Страниц:  [1]
Все форумы >> [Веб-программинг] >> кодинг на чистом API. Как нажать на кнопку?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.