【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在win32中,有的时候需要创建额外的子窗口。所谓子窗口的概念,就是窗口本身不会超出母窗口的边界,所有的操作都是在母窗口里面完成的。子窗口可以用os提供的默认类型来完成,也可以自定义类型来完成,即自定义WNDCLASSEX。常用的子窗口有BUTTON、COMBOBOX、EDIT、LISTBOX、STATIC、SCROLLBAR、RichEdit等类型,注意msdn提供的另外一种MDICLIENT类型是专门为mdi程序准备的。
那么,代码怎么编写呢?很简单,基本上就是一行代码,在WM_CREATE里面添加就可以了,
case WM_CREATE:
HWND hsub;
hsub = CreateWindow(
"BUTTON", // predefined class
"OK", // button text
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // styles
10, // starting x position
10, // starting y position
100, // button width
100, // button height
hWnd, // parent window
NULL, // No menu
hInst,
NULL); // pointer not needed
case WM_CREATE:
HWND hsub;
hsub = CreateWindow(
"SCROLLBAR", // predefined class
"OK", // button text
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // styles
10, // starting x position
10, // starting y position
100, // button width
100, // button height
hWnd, // parent window
NULL, // No menu
hInst,
NULL); // pointer not needed
case WM_NOTIFY:
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;