Win32的客服区内建立子窗口,子窗口无法挂菜单吗? //代码如下,该如何处理
Win32的客服区内建立子窗口,子窗口无法挂菜单吗? //代码如下
------解决方案--------------------
SDK做界面不太熟悉
- C/C++ code
#include "stdafx.h" #include "stdio.h" #include "windows.h" #include "resource.h" HINSTANCE g_hInstance; LRESULT CALLBACK Windowproc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch(uMsg) { case WM_DESTROY: PostQuitMessage(0); break; } return DefWindowProc(hWnd,uMsg,wParam,lParam); } LRESULT CALLBACK ChildProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) return DefWindowProc(hWnd,uMsg,wParam,lParam); } void Register(LPSTR pszClassName, WNDPROC pszWndProc ) { WNDCLASSEX obj={0}; obj.cbSize = sizeof(obj); obj.cbClsExtra=0; obj.cbWndExtra=0; obj.hbrBackground=(HBRUSH)(COLOR_GRAYTEXT+2); obj.hCursor=NULL; obj.hIcon=NULL; obj.hIconSm=NULL; obj.hInstance=g_hInstance; obj.lpfnWndProc=pszWndProc; obj.lpszClassName=pszClassName; obj.lpszMenuName=NULL; obj.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC; RegisterClassEx(&obj); } HWND Create(LPSTR pszClassName,LPSTR pszWndName) { HWND hWnd= CreateWindowEx(NULL,pszClassName,pszWndName,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,NULL); return hWnd; } HWND CreateChild(LPSTR pszClassName,LPSTR pszWndName,HWND hParent) { HMENU hMenu = LoadMenu(g_hInstance,MAKEINTRESOURCE(IDR_MENU1)); HWND hChild = CreateWindowEx(0,pszClassName,pszWndName,WS_CHILD|WS_VISIBLE|WS_OVERLAPPEDWINDOW,100,100,350,350,hParent,hMenu,g_hInstance,NULL); return hChild; } void Display(HWND hWnd) { ShowWindow(hWnd,SW_SHOW); UpdateWindow(hWnd); } void Message(HWND hWnd) { MSG nMsg={0}; while(GetMessage(&nMsg,NULL,0,0)) { TranslateMessage(&nMsg); DispatchMessage(&nMsg); } } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. g_hInstance=hInstance; Register("Main", (WNDPROC)Windowproc); Register("child", (WNDPROC)ChildProc); HWND hMain = Create("Main","Application"); HWND hChild = CreateChild("child","Hello,Client",hMain); Display(hMain); Message(hMain); return 0; }
------解决方案--------------------
SDK做界面不太熟悉