Шустрый

Профиль
Группа: Участник
Сообщений: 104
Регистрация: 25.10.2008
Репутация: нет Всего: нет
|
У меня есть программа, в ней три окошка, вопрос состоит в том: как я так сделал что регистрируется один класс окна, а создается несколько окон? я так понимаю нужно регистрировать по одному классу на каждый обьект? | Код | #include <windows.h> HWND hwnd; // класс HWND для создания окна HINSTANCE hInstance; HWND hwnd2; HWND hwnd3; int Count=0; int Count2=0;
//функция для дальнейший обработки из обработчика событий
LRESULT CALLBACK MainWinProc(HWND hwnd, //дискриптор UINT msg, //идентификатор событий которое должно быть передано в эту функцию WPARAM wparam, LPARAM lparam) // дополнительные параметры обработки { if (hwnd==hwnd2) { switch(msg) { case WM_PAINT: //перерисовка окна при изменение break; case WM_DESTROY: //закрытие окна case WM_LBUTTONDOWN: { if ( Count++%2==1) ShowWindow(hwnd3, SW_HIDE); else ShowWindow(hwnd3, SW_SHOWDEFAULT); break; }; {
return(0); } break; } return (DefWindowProc(hwnd2, msg, wparam, lparam)); }
if (hwnd==hwnd3) { switch(msg) { case WM_PAINT: //перерисовка окна при изменение break; case WM_DESTROY: //закрытие окна case WM_LBUTTONDOWN: { if (Count2++%2==1) ShowWindow(hwnd2, SW_HIDE); else ShowWindow(hwnd2, SW_SHOWDEFAULT); break; }; {
return(0); } break; } return (DefWindowProc(hwnd3, msg, wparam, lparam)); }
switch(msg) { case WM_PAINT: //перерисовка окна при изменение break; case WM_DESTROY: //закрытие окна case WM_LBUTTONDOWN: break; { return(0); } break; } return (DefWindowProc(hwnd, msg, wparam, lparam));
}
int WINAPI WinMain (HINSTANCE hinstance,HINSTANCE hprevinstanse ,LPSTR LpCmdLine,int nCmdShow) { WNDCLASSEX windowsclass; MSG msg; windowsclass.cbSize = sizeof(WNDCLASSEX);//размер создаваемой структуры windowsclass.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW; // флаги стиля окна windowsclass.lpfnWndProc = MainWinProc; //указатель на функцию обратного вызова windowsclass.cbClsExtra = 0; // для хранения дополнительной информации windowsclass.cbWndExtra = 0; // для хранения дополнительной информации windowsclass.hInstance = hinstance; //отвечает зп экземляр созлдаваемого приложения windowsclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //для определения пиктограмы приложения windowsclass.hCursor = LoadCursor(NULL,IDC_ARROW); //для определения курсора приложения windowsclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // отвечает за цвет окна windowsclass.lpszMenuName = NULL; //поле для подключения стандартного меня к окну windowsclass.lpszClassName = "WINDOWSCLASS"; //задаеться ваше названеи класса окна windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);//дескриптор малой пиктограммы , которая выводиться на панель задач
//регистрируем класс if(!RegisterClassEx(&windowsclass)) return(0); // создаем окно указателе смотреть ниже
if(!(hwnd = CreateWindowEx(NULL, "WINDOWSCLASS", "Form1", WS_OVERLAPPEDWINDOW|WS_VISIBLE| WS_MAXIMIZEBOX|WS_ICONIC|WS_CAPTION, 0,0, 500,400, NULL, NULL, hinstance ,0 ))) return(0); // CreateWindow("window", "Press me", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, // 30, 30, 80, 30, hwnd, (HMENU)10000, hInstance, NULL);
hwnd2 = CreateWindowEx(NULL, "WINDOWSCLASS", "Left",WS_CHILD | WS_OVERLAPPEDWINDOW|WS_VISIBLE| WS_MAXIMIZEBOX|WS_ICONIC|WS_CAPTION, 20,20, 90,90, hwnd, NULL, hinstance ,0); ShowWindow(hwnd2, SW_SHOWDEFAULT); //нарисуем окно UpdateWindow(hwnd); hwnd3 = CreateWindowEx(NULL, "WINDOWSCLASS", "Right",WS_CHILD | WS_OVERLAPPEDWINDOW|WS_VISIBLE| WS_MAXIMIZEBOX|WS_ICONIC|WS_CAPTION, 240,20, 90,90, hwnd, NULL, hinstance ,0); ShowWindow(hwnd3, SW_SHOWDEFAULT); //нарисуем окно UpdateWindow(hwnd);
ShowWindow(hwnd, SW_SHOWDEFAULT); //нарисуем окно UpdateWindow(hwnd); // обновим окно /// //главный обработчик событий
while(GetMessage(&msg, NULL,0,0)) // прототип глядеть внизу { TranslateMessage(&msg); //приобразованеи клавиатурного ввода DispatchMessage(&msg); // обработка и пересылка сообшений в WinProc } return(msg.wParam); }
|
|