我想编写一个mdi的程序,但我并不要求他支持文档/视图模式,而且,我要在点击菜单中的一项时能够产生一个子窗口,就象在vb、powerbuilder等程序中实现的mdi的形式。
开始时我想这个子窗口应该是由CDialog类派生而来的吧所以我这样做:
先插入一个对话框CMydialog,ID号是:ID_mydialog,并将其设置为child形式;
我在程序中这样调用他:
CMydialog * m_dialog = new CMydialog();
if (m_dialog->GetSafeHwnd()==0)
{
m_dialog->Create(ID_mydialog,this);
}
最后我在调用函数将它显示出来。 可是我这样做有一下疑问:
1、这样的子窗口的title栏为什么中是灰的,只有将CMydialog设置成popup
的形式才能够使title拦变量,但这时子窗口和父窗口的title不能够同时变亮。
2、我在子窗口中放置的编辑控件CEide不能够获得焦点。
既然不能够实现,所以我就另想办法了:我们在用wizard直接建立一个mdi程序框架,我们运行该框架程序,将可以产生一个新的框架窗口,该窗口满足我界面要求,但他是一个视,而不是一个对话框,不能够在上面放置按纽,所以我这样改造该程序:
插入一个dialog,然后用classwizard将该dialog生成一个新类CMyDialog并将其基类设置为CMDIChildFrm,在将CHhApp::OnFileNew()/*我的工程为Hh*/改写如下:
{
CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);
pFrame->CreateNewChild(
RUNTIME_CLASS(CMyDialog), IDD_DIALOG1, NULL, NULL); // create a new MDI child window
/* pFrame->CreateNewChild(
RUNTIME_CLASS(CChildFrame), IDR_HHTYPE, m_hMDIMenu, m_hMDIAccel);
*/}
运行,结果怎么样,还是不行:(,出来的还是一个视窗口,我也不知道怎么回事,我估计这种方法是可以的,高手可以帮我想想吗?我就这个问题有另一个帖子:
http://expert.csdn.net/Expert/topic/1499/1499298.xml?temp=.7618372
开始时我想这个子窗口应该是由CDialog类派生而来的吧所以我这样做:
先插入一个对话框CMydialog,ID号是:ID_mydialog,并将其设置为child形式;
我在程序中这样调用他:
CMydialog * m_dialog = new CMydialog();
if (m_dialog->GetSafeHwnd()==0)
{
m_dialog->Create(ID_mydialog,this);
}
最后我在调用函数将它显示出来。 可是我这样做有一下疑问:
1、这样的子窗口的title栏为什么中是灰的,只有将CMydialog设置成popup
的形式才能够使title拦变量,但这时子窗口和父窗口的title不能够同时变亮。
2、我在子窗口中放置的编辑控件CEide不能够获得焦点。
既然不能够实现,所以我就另想办法了:我们在用wizard直接建立一个mdi程序框架,我们运行该框架程序,将可以产生一个新的框架窗口,该窗口满足我界面要求,但他是一个视,而不是一个对话框,不能够在上面放置按纽,所以我这样改造该程序:
插入一个dialog,然后用classwizard将该dialog生成一个新类CMyDialog并将其基类设置为CMDIChildFrm,在将CHhApp::OnFileNew()/*我的工程为Hh*/改写如下:
{
CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);
pFrame->CreateNewChild(
RUNTIME_CLASS(CMyDialog), IDD_DIALOG1, NULL, NULL); // create a new MDI child window
/* pFrame->CreateNewChild(
RUNTIME_CLASS(CChildFrame), IDR_HHTYPE, m_hMDIMenu, m_hMDIAccel);
*/}
运行,结果怎么样,还是不行:(,出来的还是一个视窗口,我也不知道怎么回事,我估计这种方法是可以的,高手可以帮我想想吗?我就这个问题有另一个帖子:
http://expert.csdn.net/Expert/topic/1499/1499298.xml?temp=.7618372
解决方案 »
- MFC连接数据库 怎么用 pConn->ConnectionString="Provider=SQLOLEDB.1;Password=123456;Persis
- 让父进程保持焦点
- 工具提示,能不能控制其在什么消息下显示?
- 如何做像Winamp类似的停靠窗口!!!!!!
- 如何改变窗口边框的颜色?
- 请教目录的数据库设计(ACCESS),每个目录结点都有个顺序序号,当插入一个目录结点后,后面的序号要依次加一,用数据库一般怎样实现?
- 怎样编程从USB的摄像头中直接得到图像?png或者gif的(在线等待)
- 怎样通过程序使自己的进程不能被结束?
- 散分,请发表意见
- 请问关于SOCKER的简单问题
- 有关evc下是实现工具条提示问题
- 如何实现VC的“tool->options->Directories”中选择Directory那样的list?
如果你已经创建好了程序,就重新先做一个资源对话框,改成CHILD类型,添加一个类,从新类,从CFormView继承,资源选你的对话框资源,然后把主程序里面的类似于下面的语句的最后一行的VIEW
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_SXJTTYPE,
RUNTIME_CLASS(CSXJTDoc),
RUNTIME_CLASS(CHomeFrame), // custom MDI child frame
RUNTIME_CLASS(CHomeView));
改写为你的新类就可以了.呵呵,这是俺在CSDN上写的最详细的帖子了,一定要给我分哦