比如:
使用 HWND child = CreateWindowEx(0,L"childclass",NULL,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS,100, 100, 500, 500,hWnd,(HMENU)(1),hInst,NULL);創建子窗口時會出現1407的錯誤提示,然后返回空句柄
這是因為沒有注冊子窗口,所以你必須先注冊:
WNDCLASS mywndclass; mywndclass.style = CS_HREDRAW | CS_VREDRAW; mywndclass.lpfnWndProc = HelloWndProc; mywndclass.cbClsExtra = 0; mywndclass.cbWndExtra = sizeof(long); mywndclass.hInstance = hInstance; mywndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); mywndclass.hCursor = LoadCursor (NULL, IDC_ARROW); mywndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); mywndclass.lpszMenuName = NULL; mywndclass.lpszClassName = L"childclass"; if (!RegisterClass (&mywndclass)) { MessageBox (NULL, TEXT ("RegisterClass failed"), NULL, MB_ICONERROR); return 0; }
再創建回調函數HelloWndProc, 這樣就可以了。
如果你想使用系統定義的注冊類,比如靜態控件,按鈕之類的,可以這樣寫:
HWND child = CreateWindowEx(0,L"static",NULL,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS,100, 100, 500, 500,hWnd,(HMENU)(1),hInst,NULL);
如果你想自定義控件,就是控件里的內容都是自己設計,那么你可以使用SetWindowSubClass,具體案例可以參考:使用更安全的方法去子類化控件