是这样的.我用了LibUIDK的库(免费版)来创建了我的主窗口(我的程序只要一个窗口),是基于单文档的.
而我需要在这个窗口的一个区域里放置一些控件,贴一些图,接受一些输入等等...由于主窗口(CMainFrame)是基于LibUIDK的CUIWnd类的,我觉得它把消息处理搞得很乱,所以我想,在主窗口的我想控制的那个区域放上一个基于FrameWnd的窗口,我就可以分割它,贴图什么的,就是那种轻车熟路的方式了.
于是乎,我在主框架类的OnCreat函数中这样写:
CClientWin *pWndClient = new CClientWin;
pWndClient->LoadFrame(IDR_MAINFRAME,
WS_CHILD|WS_OVERLAPPED|WS_VISIBLE, this,NULL);
pWndClient->ShowWindow(SW_SHOW);
pWndClient->UpdateWindow();那个CClientWin就是基于FrameWnd的一个类.我上面的代码完全是按照MFC抄的.
我的本意是把这个窗口贴上去后,再在OnSize里把它调整到我需要的位置.不要标题菜单什么的,就要客户区.问题是:我试了很多LoadFrame 函数中窗口的属性,总是达不到效果,有的时候,它是独立的一个窗口跳出来,有的时候又什么都没有.
请问我这个思路行吗?具体要怎么操作???
我想要的效果就是这样,就好像是又贴了一个客户区在主窗口上.不知道我说明白了没有,呵呵...
这应该是一个基础的界面问题吧?
而我需要在这个窗口的一个区域里放置一些控件,贴一些图,接受一些输入等等...由于主窗口(CMainFrame)是基于LibUIDK的CUIWnd类的,我觉得它把消息处理搞得很乱,所以我想,在主窗口的我想控制的那个区域放上一个基于FrameWnd的窗口,我就可以分割它,贴图什么的,就是那种轻车熟路的方式了.
于是乎,我在主框架类的OnCreat函数中这样写:
CClientWin *pWndClient = new CClientWin;
pWndClient->LoadFrame(IDR_MAINFRAME,
WS_CHILD|WS_OVERLAPPED|WS_VISIBLE, this,NULL);
pWndClient->ShowWindow(SW_SHOW);
pWndClient->UpdateWindow();那个CClientWin就是基于FrameWnd的一个类.我上面的代码完全是按照MFC抄的.
我的本意是把这个窗口贴上去后,再在OnSize里把它调整到我需要的位置.不要标题菜单什么的,就要客户区.问题是:我试了很多LoadFrame 函数中窗口的属性,总是达不到效果,有的时候,它是独立的一个窗口跳出来,有的时候又什么都没有.
请问我这个思路行吗?具体要怎么操作???
我想要的效果就是这样,就好像是又贴了一个客户区在主窗口上.不知道我说明白了没有,呵呵...
这应该是一个基础的界面问题吧?
跟没有这个ClientWnd是一样的.到底是怎么回事呢?一个晚上了,还没搞定...
CreateWindowEx(NULL,
TEXT("Child Wnd Class"),
NULL,
WS_VISIBLE | WS_CHILD, // dwStyle
0, 0,
64, 64,
hwnd, // hWndParent
(HMENU)1, // hMenu. For a child window, hMenu specifies the child-window ID
NULL,
NULL);
m_wnd.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, CRect(0,0,100,100), this, NULL);
m_wnd;是CFrameWnd类型的成员变量.实际上你可以再制作一个CUIWnd窗口作为主窗口的子窗口,由于CUIWnd是可以由皮肤编辑器制作的,可任意贴图,控制起来比你用CFrameWnd贴图更容易.所以推荐你使用这种方法.LibUIDK安装文件夹下的Demo程序也都包含子窗口的.全部是贴图,你可以参考一下.
http://www.iuishop.com/download/LibUIDK%203.0.B00788FR.exe
更新日期:August 03, 2006