Показать сообщение отдельно

  #2  
Старый 09.11.2006, 02:03
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию

Вот теперь мы сделали две кнопки, и указатели на эти кнопки хранятся в соответствующих переменных, которые мы объявили в самом начале. Кнопки создаются функцией CreateWindow, которую мы подробно описали. Единственное, что стоит добавить – это то, что BUTTON (см. первый параметр) – это стандартный класс предусмотренный Windows. Ну вот, теперь можно писать для этих кнопок обработчик сообщений (событий), который с ними происходят. Добавим в WndProc следующие строчки:
Код:
LONG WINAPI WndProc(HWND hwnd,UINT Message,WPARAM wparam,LPARAM lparam)
{
	switch(Message)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	case WM_LBUTTONDOWN:
		SetWindowText(hwnd,"not fucking WINDOW");
		break;
	case WM_RBUTTONDOWN:
		HWND hnd;
		hnd=FindWindow(NULL,"Áåçûìÿííûé - Áëîêíîò");
		SetWindowText(hnd,"jeon's soft - notepad");
		SetWindowText(hwnd,"its so scary in a world with peoples who are idiots");
		break;
	case WM_COMMAND:
		if((HWND) lparam==b1hwnd)SetWindowText(hwnd,"OK was clicked");
		if((HWND) lparam==b2hwnd)SetWindowText(hwnd,"Cool was clicked");
	default:
		return DefWindowProc(hwnd,Message,wparam,lparam);
	}
	return 0;
}
Ну вот и все…. Удачного программирования, это тебе не Делфи или ВБ, тута все круто. Вот полный код программы:
Код:
#include <windows.h>

LONG WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);
HWND b1hwnd,b2hwnd;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
	HWND hwnd;
	MSG msg;
	WNDCLASS w;
	memset(&w,0,sizeof(WNDCLASS));
	w.style=CS_SAVEBITS;
	w.lpfnWndProc=WndProc;
	w.hInstance=hInstance;
	w.hbrBackground=(HBRUSH)COLOR_WINDOW;
	w.lpszClassName="First";
	w.hCursor=LoadCursor(NULL, IDC_ARROW);
	RegisterClass(&w);
	hwnd=CreateWindow("First","fucking window",WS_OVERLAPPEDWINDOW,100,100,500,400,NULL,NULL,hInstance,NULL);
	b1hwnd=CreateWindow("BUTTON","OK",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,10,10,100,100,hwnd,NULL,NULL,NULL);
	b2hwnd=CreateWindow("BUTTON","Cool",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,110,110,100,100,hwnd,NULL,NULL,NULL);
	ShowWindow(hwnd,SW_MAXIMIZE);
	UpdateWindow(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:
		SetWindowText(hwnd,"not fucking WINDOW");
		break;
	case WM_RBUTTONDOWN:
		HWND hnd;
		hnd=FindWindow(NULL,"Áåçûìÿííûé - Áëîêíîò");
		SetWindowText(hnd,"jeon's soft - notepad");
		SetWindowText(hwnd,"its so scary in a world with peoples who are idiots");
		break;
	case WM_COMMAND:
		if((HWND) lparam==b1hwnd)SetWindowText(hwnd,"OK was clicked");
		if((HWND) lparam==b2hwnd)SetWindowText(hwnd,"Cool was clicked");
	default:
		return DefWindowProc(hwnd,Message,wparam,lparam);
	}
	return 0;
}
если че пиши на jeon@inbox.ru