26. februar 2002 - 08:42
#3
Måske dette kan bruges?
#include "stdafx.h"
HINSTANCE hInst;
#define IDC_BUTTON 100
LRESULT CALLBACK WndProc1(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc2(HWND, UINT, WPARAM, LPARAM);
char *szTitle = "Test", *szMsgClass1 = "msgClass1", *szMsgClass2 = "msgClass2";
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
WNDCLASSEX wcex;
HWND hWnd;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = NULL;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)COLOR_WINDOW;
wcex.lpszMenuName = NULL;
wcex.hIconSm = NULL;
wcex.lpfnWndProc = (WNDPROC)WndProc1;
wcex.lpszClassName = szMsgClass1;
RegisterClassEx(&wcex);
wcex.lpfnWndProc = (WNDPROC)WndProc2;
wcex.lpszClassName = szMsgClass2;
RegisterClassEx(&wcex);
hInst = hInstance;
hWnd = CreateWindow(szMsgClass1, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc1(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND hWnd2;
static HWND hButton;
switch (message)
{
case WM_CREATE:
hButton = CreateWindow("BUTTON", "Click me!", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 5, 5, 100, 20, hWnd, (HMENU)IDC_BUTTON, hInst, NULL);
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_BUTTON:
hWnd2 = CreateWindow(szMsgClass2, "Vindue nr 2", WS_CHILD | WS_VISIBLE | WS_SYSMENU | WS_CAPTION,
30,30, 200, 200, hWnd, NULL, hInst, NULL);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
LRESULT CALLBACK WndProc2(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}