mfc中使用主菜单view中嵌入一个dialog

blogcaicai01 2015-07-28 10:02:16
mfc中使用主菜单view中嵌入一个dialog,但是dialog中的控件都不能用了,好像都变为了只读的一样,只能看见它的显示,但是不能实现以前的操作。
例如,之前是使用DoModel()函数实现的弹出式dialog ,上面的控件已实现各种读写显示,按钮点击触发事件。现在,我把DoModel()给改了,用了movewindow()函数将该dialog显示到主窗口的view里,现在的dialog上的控件句都不能用了,仿佛都是只读的一样,求大神解决。
希望,将dialog显示到view上,并且原来dialog已实现的功能不变。只是把原来的dialog'从弹出式显示,变为了在view显示。
...全文
622 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_1251942602 2018-08-02
  • 打赏
  • 举报
回复
请教一下,那个Dialog只能看,像是只读的,不能点,这个情况怎么解决的
附上代码
private:
CForgingDrawingDlg* pDlg;

BOOL CForgingDrawingBaseView::OnCreate()
{
pDlg = new CForgingDrawingDlg;
if (!pDlg)
{
return E_UNEXPECTED;
}
if (!pDlg->Create(IDD_FORGINGDRAE_DLG, this))
{
return E_UNEXPECTED;
}
pDlg->ShowWindow(SW_SHOW);
CBaseView::OnPaint();
return TRUE;
}
OnShowWindow和你的一样
blogcaicai01 2015-07-28
  • 打赏
  • 举报
回复
我的问题我自己解决了。核心问题是不能再mainfram 这个文件下创建dialog,如果要把dialog平铺到view的客户区,必须是在view 的类的成员函数来创建dialog。那么要在主界面点击菜单按钮来创建一个嵌入view的dialog,就必须在点击按钮的回调函数中发送消息,让view里的成员函数作为消息处理函数来创建dialog。并且在创建后要调用 view::onpaint()函数来重新绘制,在dialog的消息 onshowwindow()函数中要编辑dialog的大小 这样会随着view的大小而改变。 LRESULT CSinoUpPCView::OnCreateOLDDCS(WPARAM wParam, LPARAM lParam) { COldDcsDlg *olddcs=new COldDcsDlg; olddcs->Create(IDD_OLDDCS,this); olddcs->ShowWindow(SW_SHOW); //消息处理函数 CView::OnPaint(); return 0; } void COldDcsDlg::OnShowWindow(BOOL bShow, UINT nStatus) //dialog中 的刷新函数 diaolog每次显示调用 这样会随着vi { //ew的变化 变化 CDialogEx::OnShowWindow(bShow, nStatus); CRect cr; CWnd *pWnd=(CWnd *)GetParent(); pWnd->GetClientRect(&cr);//获取对话框客户区域大小 pWnd->ClientToScreen(&cr);//转换为荧幕坐标 int x= GetSystemMetrics(SM_CXSCREEN);//获取荧幕坐标的宽度,单位为像素 int y= GetSystemMetrics(SM_CYSCREEN);//获取荧幕坐标的高度,单位为像素 MoveWindow(0,0,x,y);//设置窗口显示的位置以及大小 } 同时要记得dialog中的border属性要改为NONE,Style 要改为 child。
blogcaicai01 2015-07-28
  • 打赏
  • 举报
回复
木有大神知道怎么弄么?

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧