MFC对话框如何设置可用不可用

flyingcatkin1 2014-11-20 03:03:17
我做的界面先做了窗口分割,上部分是视图,下部分是对话框,IDD_RUN是其ID,对话框的Disabled 设成True; 对话框涉及的函数都在rundlg.cpp;
加了菜单,有个菜单项是启用,对应函数是onsta(),在mainfrm.cpp里,预想的是点击启用后,对话框变成可用的;

void ontar()
{AfxMessageBox("打开成功!");
GetDlgItem(IDD_RUN)->EnableWindow(true);
}
求大家帮忙看下是怎么回事?请问是因为对话框函数和onstar()没在一个cpp内吗?该怎么破?
...全文
354 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyingcatkin1 2014-11-26
  • 打赏
  • 举报
回复
引用 11 楼 mlqxj35674 的回复:
对不起你了,我以为这个贴子已经结贴了,楼主很认真,看楼主会不会来,想感受一下吵架的感觉。 回答你最后的两个问题 1 SB是你的口头语吗?回答 :不是,生活中我是一个很爱开玩笑,很注意形象的人,很少有脏话出口,那不是我的口头语 2 还是水平低的都是SB?回答:不是,最其码你不是,你已经表现的很不一般了,让了有了自责的感觉。
这几天没上来,我把MFC一些基础看了看,还是很有不懂的地方,窗口分割其实的上部分和下部分都是对话框,都是CFormView,但是确实是不行的,第一句代码总是报错 error C2440: “初始化”: 无法从“CWnd *”转换为“CFormView *”,我现在的水平确实不知道怎么调试 还是谢谢你解答
mlqxj35674 2014-11-20
  • 打赏
  • 举报
回复
对不起你了,我以为这个贴子已经结贴了,楼主很认真,看楼主会不会来,想感受一下吵架的感觉。 回答你最后的两个问题 1 SB是你的口头语吗?回答 :不是,生活中我是一个很爱开玩笑,很注意形象的人,很少有脏话出口,那不是我的口头语 2 还是水平低的都是SB?回答:不是,最其码你不是,你已经表现的很不一般了,让了有了自责的感觉。
flyingcatkin1 2014-11-20
  • 打赏
  • 举报
回复
引用 9 楼 mlqxj35674 的回复:
看这些SB表现出来的SB劲,真无语了,MFC分割视图的操作方法,需要SPY么,装模作样分析一番,然后把楼上的代码修改一下,这样罢了,遇上了个更SB
至于SPY 是什么,至于我现在的水平还真的不知道是什么,麻烦给解释下吧 另外问一句 SB是你的口头语吗? 还是水平低的都是SB??????
阿良良木月火 2014-11-20
  • 打赏
  • 举报
回复
引用 7 楼 flyingcatkin1 的回复:
[quote=引用 5 楼 mlqxj35674 的回复:] 楼主真够SB的,如此结贴,无语了
我都试了下,三楼分析的很对,只有一句代码解决最快,最好的,我就给多分了,我这边一共就30分,我想给3楼多点分也没有异议吧,你为什么要骂我呢,新手不会的东西很多,是很白痴,谁没有个过程呢?[/quote]他sb不用理他
flyingcatkin1 2014-11-20
  • 打赏
  • 举报
回复
引用 5 楼 mlqxj35674 的回复:
楼主真够SB的,如此结贴,无语了
我都试了下,三楼分析的很对,只有一句代码解决最快,最好的,我就给多分了,我这边一共就30分,我想给3楼多点分也没有异议吧,你为什么要骂我呢,新手不会的东西很多,是很白痴,谁没有个过程呢?
flyingcatkin1 2014-11-20
  • 打赏
  • 举报
回复
引用 5 楼 mlqxj35674 的回复:
楼主真够SB的,如此结贴,无语了
新手遇到问题不知道怎么解决,求教一下怎么了?你凭什么骂人啊?
flyingcatkin1 2014-11-20
  • 打赏
  • 举报
回复
引用 3 楼 piaobotudou 的回复:
如果是用CSplitterWnd分割, 窗口结构应该看起来是这样 CMainFrame CSplitter 视图 对话框 弄不清楚结构的话可以用Spy++查看。 获取对话框的方法应该类似 m_wndSplitter.GetPane(1, 0) 所以应为 m_wndSplitter.GetPane(1, 0)->EnableWindow(TRUE);
这个才是正确的答案,我没弄清楚结构,改掉就对了 void Cmainfrm::ontar() {AfxMessageBox("打开成功!"); m_wndSplitter.GetPane(1, 0)->EnableWindow(TRUE); }
微型蚂蚁 2014-11-20
  • 打赏
  • 举报
回复
如果是用CSplitterWnd分割, 窗口结构应该看起来是这样 CMainFrame CSplitter 视图 对话框 弄不清楚结构的话可以用Spy++查看。 获取对话框的方法应该类似 m_wndSplitter.GetPane(1, 0) 所以应为 m_wndSplitter.GetPane(1, 0)->EnableWindow(TRUE);
mlqxj35674 2014-11-20
  • 打赏
  • 举报
回复
首先通过CSplitterWnd的GetPane得到指定的View,你的对话框是属于CFormView CFormVIew *pFormView=m_splitterWnd.GetPane(1,0); if(pFormView) pFormView->EnableWindow(TRUE);
jianghandaxue 2014-11-20
  • 打赏
  • 举报
回复
这个代码是上面意思? void ontar()-------------》void Cmainfrm::ontar() {AfxMessageBox("打开成功!"); GetDlgItem(IDD_RUN)->EnableWindow(true);------------>在这你应该实例化一个对话框的变量 }

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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