24. juni 2004 - 15:51
Der er
5 kommentarer og 1 løsning
CreateWindow SDK
Hej, jeg er ved at lege lidt med SDK og C++. I den forbindelse har jeg lavet standard vindue.. Hvis jeg ønsker at halvdelen skal være hvid, hvordan gør jeg så det? Jeg antager jeg skal bruge CreateWindow igen, og så kalde den med dwStyle WS_CHILD... Men skal jeg også udfylde en wndClass?? Hvor jeg så sætter baggrundsfarve til hvid? Håber nogle kan forstå og evt hjælpe! :o)
Annonceindlæg fra DE-CIX
Hvis du vil lave et seperart child vindue: #include <windows.h> #include <windowsx.h> #include <commctrl.h> #include <string.h> HINSTANCE hInst; // Instance handle HWND hwndMain; //Main window handle HBRUSH ChildWndBrush; HWND ChildWnd; LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK ChildWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { return DefWindowProc(hwnd, msg, wParam, lParam); } static void CreateChildWnd(void) { WNDCLASS wc; ChildWndBrush = CreateSolidBrush(RGB(128,128,128)); memset(&wc,0,sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = (WNDPROC )ChildWndProc; wc.hInstance = hInst; wc.hbrBackground = ChildWndBrush; wc.lpszClassName = "NG43ChildClass"; wc.lpszMenuName = 0; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); if (!RegisterClass(&wc)) return; ChildWnd = CreateWindow("NG43ChildClass", NULL, WS_CHILD | WS_VISIBLE, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, hwndMain, NULL, hInst, NULL); } static BOOL InitApplication(void) { WNDCLASS wc; memset(&wc,0,sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = (WNDPROC )MainWndProc; wc.hInstance = hInst; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszClassName = "NG43WndClass"; wc.lpszMenuName = 0; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); if (!RegisterClass(&wc)) return 0; return 1; } HWND Createng43WndClassWnd(void) { return CreateWindow("NG43WndClass", "ng43", WS_MINIMIZEBOX | WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_MAXIMIZEBOX|WS_CAPTION|WS_BORDER|WS_SYSMENU|WS_THICKFRAME, CW_USEDEFAULT,0,CW_USEDEFAULT,0, NULL, NULL, hInst, NULL); } LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) { case WM_SIZE: { if(ChildWnd && hwnd) { int Width, Height; RECT R; GetClientRect(hwnd, &R); Width = (R.right - R.left)/4; Height = (R.bottom - R.top)/4; MoveWindow(ChildWnd, Width, Height, Width*2, Height*2, TRUE); } return TRUE; } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,msg,wParam,lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow) { MSG msg; hInst = hInstance; if (!InitApplication()) return 0; if ((hwndMain = Createng43WndClassWnd()) == (HWND)0) return 0; CreateChildWnd(); ShowWindow(hwndMain,SW_SHOW); while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }