关于建立子窗口解决方法
关于建立子窗口
我建立了一个MFC对话框程序
我想在上面加一个子窗口
CttDlg m_ttdlg;//H文件
m_ttdlg.ShowWindow(SW_NORMAL);//cpp文件
这样好象不对 应该是怎么写呢
------解决方案--------------------
加一个子窗口 要用非模式窗体, 用Create 直接创建(设置父窗体),
修改子窗体属性无标题..., 自己修正位置就OK了
------解决方案--------------------
看CDialog::Create的参数说明就有答案
------解决方案--------------------
自己查MSDN啊。
------解决方案--------------------
如果你想showwindow的话,那么这个窗口必须要create,在create的时候指定父窗口指针pParentWnd,并且属性dwStyle中应该要有WS_CHILD子窗口风格
------解决方案--------------------
m_ttdlg.Create(IDD_DIALOG_XXX,this);
------解决方案--------------------
如果是模态窗口就用:
m_ttdlg.DoModal();
如果是非模态窗口就用:
CttDlg m_ttdlg; // 这个必需是成员或在堆上分配的内存
m_ttdlg.Create(...);
m_ttdlg.ShowWindow(SW_SHOWNORMAL);
------解决方案--------------------
楼主是想将子窗口镶在主窗口中吧,那就不能用对话框了,就切分视图吧
------解决方案--------------------
如果你是通过对话框模板创建子窗口的话,那么就应该用CDialog::Create( ... )
Create有两个参数,第一个参数是对话框的ID也就是你的CttDlg对应的对话框ID
第二个参数是指向父窗口的指针,一般是 this(主对话框)
比如:
CttDlg* pDlg = new CttDlg( );
pDlg->Create( IDD_DIALOG1, this );
pDlg->ShowWindow( SW_SHOW );
如果你想通过CttDlg m_ttDlg创建窗口,那必须保证m_ttDlg是类成员变量
如果是局部变量那必须保证最后 m_ttDlg.Detach( );
最后:既然你想创建的是子窗口,所以必须保证你的IDD_DIALOG1的Style是Child(否则位置可能不正确)
如果不想要标题可以去掉 TitleBar属性(这些可以在IDD_Dialog1的属性里改)
对于子窗口的位置可以用SetWindowPos或MoveWindow来实现
------解决方案--------------------
那不就是在主窗口内添加编辑框么?
为何一定要建立子窗口呢?
我建立了一个MFC对话框程序
我想在上面加一个子窗口
CttDlg m_ttdlg;//H文件
m_ttdlg.ShowWindow(SW_NORMAL);//cpp文件
这样好象不对 应该是怎么写呢
------解决方案--------------------
加一个子窗口 要用非模式窗体, 用Create 直接创建(设置父窗体),
修改子窗体属性无标题..., 自己修正位置就OK了
------解决方案--------------------
看CDialog::Create的参数说明就有答案
------解决方案--------------------
自己查MSDN啊。
------解决方案--------------------
如果你想showwindow的话,那么这个窗口必须要create,在create的时候指定父窗口指针pParentWnd,并且属性dwStyle中应该要有WS_CHILD子窗口风格
------解决方案--------------------
m_ttdlg.Create(IDD_DIALOG_XXX,this);
------解决方案--------------------
如果是模态窗口就用:
m_ttdlg.DoModal();
如果是非模态窗口就用:
CttDlg m_ttdlg; // 这个必需是成员或在堆上分配的内存
m_ttdlg.Create(...);
m_ttdlg.ShowWindow(SW_SHOWNORMAL);
------解决方案--------------------
楼主是想将子窗口镶在主窗口中吧,那就不能用对话框了,就切分视图吧
------解决方案--------------------
如果你是通过对话框模板创建子窗口的话,那么就应该用CDialog::Create( ... )
Create有两个参数,第一个参数是对话框的ID也就是你的CttDlg对应的对话框ID
第二个参数是指向父窗口的指针,一般是 this(主对话框)
比如:
CttDlg* pDlg = new CttDlg( );
pDlg->Create( IDD_DIALOG1, this );
pDlg->ShowWindow( SW_SHOW );
如果你想通过CttDlg m_ttDlg创建窗口,那必须保证m_ttDlg是类成员变量
如果是局部变量那必须保证最后 m_ttDlg.Detach( );
最后:既然你想创建的是子窗口,所以必须保证你的IDD_DIALOG1的Style是Child(否则位置可能不正确)
如果不想要标题可以去掉 TitleBar属性(这些可以在IDD_Dialog1的属性里改)
对于子窗口的位置可以用SetWindowPos或MoveWindow来实现
------解决方案--------------------
那不就是在主窗口内添加编辑框么?
为何一定要建立子窗口呢?