Djony1987 Ага, неправильно.
Я бы делал так:
1. Создал и зарегистрировал класс главного окна.
2. Создал и зарегистрировал класс вспомогательного окна (почему оно называется временным, кстати?).
3. В обработчике сообщения WM_CREATE главного окна создал бы четыре вспомогательных окна (рекомендую, кстати, для определения размеров клиентской области использовать GetClientRect - это сразу даст нужные координаты, а с GetWindowRect мороки будет куда больше
) класса из п.2 со стилем WS_CHILD (а не WS_OVERLAPPEDWINDOW и не WS_POPUP!). И задал бы каждому свой заголовок.
4. В обработчике сообщений вспомогательного окна ловил бы WM_LBUTTONDOWN, вытаскивал бы заголовок (GetWindowText) и показывал бы его.
Вот, слегка подкрутил исходник, для лучшего понимания.
[more]//---------------------------------------------------------------------------
#include <windows.h>
//---------------------------------------------------------------------------
LRESULT CALLBACK HelloWorldWndProc(HWND, UINT, UINT, LONG);
LRESULT CALLBACK SecondWndProc(HWND, UINT, UINT, LONG);
HWND hChildWind_1, hChildWind_2, hChildWind_3, hChildWind_4;
const char *szMainClassName="Hello World!";
const char *szSecondClassName="Second window";
const char *nameWnd[4]={"Временное окно №1","Временное окно №2","Временное окно №3","Временное окно №4"};
MSG Msg;
RECT R;
int x1,x2,y1,y2;
WNDCLASS WndSecondClass;
//---------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpszCmdParam,
int nCmdShow)
{
HWND hWnd;
WNDCLASS WndClass;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
WndClass.lpfnWndProc=HelloWorldWndProc;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hInstance=hInstance;
WndClass.hIcon=LoadIcon(NULL, IDI_APPLICATION);
WndClass.hCursor=LoadCursor(NULL, IDC_ARROW);
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.lpszMenuName=NULL;
WndClass.lpszClassName=szMainClassName;
if(!RegisterClass(&WndClass))
{
MessageBox(NULL, "Невозможно зарегистрировать класс", "Ошибка!!", MB_OK);
return 0;
}
WndSecondClass.style=CS_HREDRAW | CS_VREDRAW;
WndSecondClass.lpfnWndProc=SecondWndProc;
WndSecondClass.cbClsExtra=0;
WndSecondClass.cbWndExtra=0;
WndSecondClass.hInstance=hInstance;
WndSecondClass.hIcon=LoadIcon(NULL, IDI_APPLICATION);
WndSecondClass.hCursor=LoadCursor(NULL, IDC_ARROW);
WndSecondClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndSecondClass.lpszMenuName=NULL;
WndSecondClass.lpszClassName=szSecondClassName;
if(!RegisterClass(&WndSecondClass))
{
MessageBox(NULL, "Невозможно зарегистрировать класс", "Ошибка!!", MB_OK);
return 0;
}
hWnd=CreateWindow(szMainClassName, "Прога №1", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
if(!hWnd)
{
MessageBox(NULL, "Невозможно создать окно", "Ошибка!!", MB_OK);
return 0;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK HelloWorldWndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{
RECT Rect;
int x,y,x0,y0,i;
HWND hw;
switch(Message) {
case WM_CREATE:
GetClientRect(hWnd,&Rect);
x=Rect.right/2;
y=Rect.bottom/2;
for(i=0;i<4;i++) {
x0=(i%2)*x;
y0=(i<2?0:y);
hw=CreateWindow(szSecondClassName,nameWnd[i],WS_CHILD|WS_VISIBLE,x0,y0,x,y,hWnd,NULL,WndSecondClass.hInstance,0);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, Message, wParam, lParam);
}
return 0;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK SecondWndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{
char Buffer[500];
switch(Message) {
case WM_LBUTTONDOWN:
GetWindowText(hWnd,Buffer,sizeof(Buffer));
MessageBox(GetParent(hWnd),Buffer,"Header",MB_ICONINFORMATION|MB_OK);
return(0);
default:
return DefWindowProc(hWnd, Message, wParam, lParam);
}
}[/more]