我在对话框上加了个按钮,如果想单击后改变视图中的一个值,并且关闭这个对话框,应该怎么做?

ming6 2005-04-27 02:24:13
不能够调用OnOK(),OnCancel()来关闭对话框,
这个CSetting::OnBnClickedButton1函数应该怎么写//CSetting是我的对话框类
...全文
243 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
sgc8228 2005-04-30
  • 打赏
  • 举报
回复
要改变view中的变量值,那首先肯定要取得view的指针么,给你推荐一篇文章描述的如何在各个类之间获取指针,网上一搜肯定有
sdgzhk 2005-04-29
  • 打赏
  • 举报
回复
补充一下:如果你有两个地方调用了CDialog::OnOK();
那你可以利用返回值判断是那一个地方返回的。
sdgzhk 2005-04-29
  • 打赏
  • 举报
回复
调用CDialog::OnOK();
至于要改View中的值嘛,在你的对话框类中设个返回值,
最后在你调用对话框的地方:
CXXXlog ldlg;
if(ldlg.DoModal() == IDOK)
{
  CString val=ldlg.GetVal();<-(在你的对话框类中设个返回值就存于对话框类的这个函数中)
  //下面你想用Val修改什么都可以。
}
ming6 2005-04-29
  • 打赏
  • 举报
回复
可以调试看看它返回什么值,我在自己的程序中试过了,返回值是IDCANCEL
-------------------------------
IDCANCEL不是取消的返回值吗?自己定义的按钮也返回这个值,我试试
ming6 2005-04-28
  • 打赏
  • 举报
回复
我在对话框上加了个按钮(IDC_BUTTON1),如果单击后关闭这个对话框,DoModal返回什么值?
ming6 2005-04-28
  • 打赏
  • 举报
回复
是模式对话框,问题是我不知道我加的按钮在对话框返回时是返回什么值

OnOk是返回IDOK,但是我不能够在OnOk里面改,OnOk我让他完成其他的动作
xiao_xiao_zi 2005-04-28
  • 打赏
  • 举报
回复
模式对话框还是无模式?
模式的话对话框返回时修改view的值不就行了
无模式的话传入个MyView指针就可以了
loki2k 2005-04-28
  • 打赏
  • 举报
回复
//对话框怎么才可以访问MyView中的数据?
修改dlg构造函数
CDlg dlg(pView,NULL)
pView是MyView的指针
ming6 2005-04-28
  • 打赏
  • 举报
回复
除了消息传递,还有其他的办法吗
fxlcoy 2005-04-28
  • 打赏
  • 举报
回复
可以调试看看它返回什么值,我在自己的程序中试过了,返回值是IDCANCEL
fxlcoy 2005-04-27
  • 打赏
  • 举报
回复
MyView是什么,是继承至CView的视图类吗?

因为View和Dialog都是继承至CWnd的,你可以把这两个看作是两个独立的窗口,窗口与窗口之间可以用SendMessage来传递数据,具体用法可以参考MSDN
ming6 2005-04-27
  • 打赏
  • 举报
回复
试试SendMessage(WM_CLOSE);
----------------
这个可以
如何改变MyView中的值呢
对话框怎么才可以访问MyView中的数据?
xiao_xiao_zi 2005-04-27
  • 打赏
  • 举报
回复
::SendMessage(this->GetSafeHwnd(),WM_CLOSE,0,0);
fxlcoy 2005-04-27
  • 打赏
  • 举报
回复
试试SendMessage(WM_CLOSE);
ming6 2005-04-27
  • 打赏
  • 举报
回复
void CSetting::OnBnClickedButton1()
{
//作一些你有趣的事
this->DestroyWindow();//这个应该可以把你的窗口给关了

}
----------------
这个也是不行的
ming6 2005-04-27
  • 打赏
  • 举报
回复
很简单:
void CSetting::OnBnClickedButton1()
{
//作一些你有趣的事

PostQuitMessage(0);
}

-------------
这个怎么行呢?把整个程序给退出去了
...
uovk 2005-04-27
  • 打赏
  • 举报
回复
上面那个是关闭程序了
void CSetting::OnBnClickedButton1()
{
//作一些你有趣的事
this->DestroyWindow();//这个应该可以把你的窗口给关了

}

uovk 2005-04-27
  • 打赏
  • 举报
回复
很简单:
void CSetting::OnBnClickedButton1()
{
//作一些你有趣的事

PostQuitMessage(0);
}
ming6 2005-04-27
  • 打赏
  • 举报
回复
void CSetting::OnBnClickedButton1()
{
//AfxMessageBox("1");
CDialog::OnClose();
}
你试过吗?
我试了不行,没有反映
fxlcoy 2005-04-27
  • 打赏
  • 举报
回复
那就在你的那个button响应函数中要关闭对话框的地方调用CDialog::OnClose();
加载更多回复(4)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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