对SDI程序,点击菜单在文档类中调用了一个对话框(创建了一个对话框类的实例).在对话框中点击一下按钮时,怎么把消息传到文档类中去? 对SDI程序,点击菜单在文档类中调用了一个对话框(创建了一个对话框类的实例).在对话框中点击一下按钮时,怎么把消息传到文档类中去? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 模式对话框? 应该可以用 AfxGetMainWnd来取得主框架的指针p. 再用p发送消息,让文档接收,不过文档类好像不接收非命令消息的. 我试过在对话框构造函数中加入Doc 的指针. 我要做实时的数据采集,当点击对话框按钮时,把这一时刻的数据保存到文档类中去.也就是要把消息传到文档类中去.TO: xxqfperfect(勇仔) / myhaocat(一天,一年,一世) 能不能说详细一点啊???? 你是不是要响应button,后调用doc的函数啊. TO myhaocat(一天,一年,一世): 是的! 对话框有一个标准的OK按钮,点击后可以执行: if(dataAcqDlg.DoModal()==IDOK) { // 对话框数据可以和文档类交互 } 现在我的对话框上还有SAVE和NEW按钮,我点击后希望分别进行如下的动作,怎么做?void CTestBedDoc::OnDocDataacquisition() { CDataAcquisitionDlg dataAcqDlg; if(dataAcqDlg.DoModal()==IDOK) { // 对话框数据可以和文档类交互1 } if(dataAcqDlg.DoModal()==IDSAVA) { // 对话框数据可以和文档类交互2 } else if(dataAcqDlg.DoModal()==IDNEW) { // 对话框数据可以和文档类交互2 }} 也就是怎么把消息传到文档类中去? 我是这样做的,在CTestdlg的头中加入class CTestdoc;.........pubilic:CTestDoc *m_pDoc;然后在构造函数中加入CTestDlg(CTestDoc *pDoc,....){ m_Doc=pDoc;} DoModal()要么返回IDOK, 要么返回IDCANCEL,不会返回IDSAVA和IDNEW.所以要重载DoModal()函数 可以在对话框中定义一个自定义消息。#define WM_USERAPPLY WM_USER+5重写一个带参数的CDialog构造函数,参数为视图指针。响应button时调用:UpdateData(True);视图指针->sendmessage(WM_USERAPPLY);在view类中手工添加自定义消息的消息响应通过视图类的GetDocument函数访问文档类 刚才回去查了一下,DoModal()的返回值是EndDialog()函数的参数也就是说当你点击IDSAVE按扭的时候,在其响应函数里要加上如下语句: EndDialog(IDSAVE);这样做的话,就不需要重载DoModal()了. 我通过以下方式做保存数据的事: if(dataAcqDlg.DoModal()==IDSaveStatusPoint) { // 保存数据 }但保存后对话框不关闭.这要怎么做??另外,当点击退出对话框上的"关闭"按钮后,会弹出确认关闭对话框.点击"是"按钮后退出,怎么写代码啊? 能不能替我更改一下代码???void CDataAcquisitionDlg::OnSaveStatusPoint() { // TODO: Add your control notification handler code here EndDialog(IDSaveStatusPoint);}void CDataAcquisitionDlg::OnQuit() { // TODO: Add your control notification handler code here// DialogResult result = MessageBox.Show(// "您确实要退出采集界面吗?",// MessageBoxButtons.YesNo,// MessageBoxIcon.Error// );//// if (result == DialogResult.Yes)// { EndDialog(IDQuit);// } }void CTestBedDoc::OnDocDataacquisition() { CDataAcquisitionDlg dataAcqDlg; if(dataAcqDlg.DoModal()==IDSaveStatusPoint) { // 保存数据 } else if(dataAcqDlg.DoModal()==IDQuit) {// CDialog::OnCancel(); }} void CDataAcquisitionDlg::OnSaveStatusPoint() { // TODO: Add your control notification handler code here EndDialog(IDSaveStatusPoint); OnQuit(); }void CDataAcquisitionDlg::OnQuit() { if(AfxMessageBox(参数查一下MSDN)==IDOK) { CDialog::OnCancel(); }}void CTestBedDoc::OnDocDataacquisition() { CDataAcquisitionDlg dataAcqDlg; if(dataAcqDlg.DoModal()==IDSaveStatusPoint) { // 保存数据 } else if(dataAcqDlg.DoModal()==IDQuit) {// CDialog::OnCancel(); }}你调试一下看行不行.不行的话,发到我的油箱,我看看[email protected] TO myhaocat(一天,一年,一世):我再保存时不希望对话框销毁. MSDN: The EndDialog function destroys a modal dialog box, causing the system to end any processing for the dialog box. 你也可以看看帖子:http://community.csdn.net/Expert/topic/3974/3974810.xml?temp=.9936334 决定还是用消息传递:对话框消息-->MAINFRAME响应---->调用文档类函数 用CFile open 创建文件失败 DX9画图元之前为什么总要定义一个矩阵 HashData 的原理谁帮我解释下,好吗?用什么加密算法? 救人啊,急死了,请大侠帮忙... 我的vc6.0类视图中为什么不能显示所有的类?请大虾帮忙! 请各位大侠,我如何使用我的WIN32程序控制其他DOS程序的键盘输入? vc编译环境能否设置成big endian方式??? 用ado访问access做数据库搜索却总是报错,请指教 高分求教:谁有关于office助手方面编程的资料阿 今天在书市见到候杰的《深入浅出MFC》,80大洋啊含一张CD! 推荐书籍 两个简单问题:加速键和保存设置
应该可以用 AfxGetMainWnd来取得主框架的指针p. 再用p发送消息,让文档接收,不过文档类好像不接收非命令消息的.
也就是要把消息传到文档类中去.TO: xxqfperfect(勇仔) / myhaocat(一天,一年,一世)
能不能说详细一点啊????
是的!
对话框有一个标准的OK按钮,点击后可以执行:
if(dataAcqDlg.DoModal()==IDOK)
{
// 对话框数据可以和文档类交互 } 现在我的对话框上还有SAVE和NEW按钮,我点击后希望分别进行如下的动作,怎么做?
void CTestBedDoc::OnDocDataacquisition()
{
CDataAcquisitionDlg dataAcqDlg; if(dataAcqDlg.DoModal()==IDOK)
{
// 对话框数据可以和文档类交互1 }
if(dataAcqDlg.DoModal()==IDSAVA)
{
// 对话框数据可以和文档类交互2 }
else if(dataAcqDlg.DoModal()==IDNEW)
{
// 对话框数据可以和文档类交互2
}}
也就是怎么把消息传到文档类中去?
在CTestdlg的头中加入class CTestdoc;
.........
pubilic:CTestDoc *m_pDoc;然后在构造函数中加入
CTestDlg(CTestDoc *pDoc,....)
{
m_Doc=pDoc;
}
所以要重载DoModal()函数
#define WM_USERAPPLY WM_USER+5
重写一个带参数的CDialog构造函数,参数为视图指针。
响应button时调用:
UpdateData(True);
视图指针->sendmessage(WM_USERAPPLY);
在view类中手工添加自定义消息的消息响应
通过视图类的GetDocument函数访问文档类
也就是说当你点击IDSAVE按扭的时候,在其响应函数里要加上如下语句:
EndDialog(IDSAVE);
这样做的话,就不需要重载DoModal()了.
if(dataAcqDlg.DoModal()==IDSaveStatusPoint)
{ // 保存数据 }
但保存后对话框不关闭.这要怎么做??另外,当点击退出对话框上的"关闭"按钮后,会弹出确认关闭对话框.点击"是"按钮后退出,怎么写代码啊?
能不能替我更改一下代码???
void CDataAcquisitionDlg::OnSaveStatusPoint()
{
// TODO: Add your control notification handler code here
EndDialog(IDSaveStatusPoint);
}void CDataAcquisitionDlg::OnQuit()
{
// TODO: Add your control notification handler code here
// DialogResult result = MessageBox.Show(
// "您确实要退出采集界面吗?",
// MessageBoxButtons.YesNo,
// MessageBoxIcon.Error
// );
//
// if (result == DialogResult.Yes)
// {
EndDialog(IDQuit);
// }
}void CTestBedDoc::OnDocDataacquisition()
{ CDataAcquisitionDlg dataAcqDlg;
if(dataAcqDlg.DoModal()==IDSaveStatusPoint)
{ // 保存数据 }
else if(dataAcqDlg.DoModal()==IDQuit)
{
// CDialog::OnCancel();
}
}
{
// TODO: Add your control notification handler code here
EndDialog(IDSaveStatusPoint);
OnQuit();
}void CDataAcquisitionDlg::OnQuit()
{ if(AfxMessageBox(参数查一下MSDN)==IDOK)
{
CDialog::OnCancel();
}}void CTestBedDoc::OnDocDataacquisition()
{ CDataAcquisitionDlg dataAcqDlg;
if(dataAcqDlg.DoModal()==IDSaveStatusPoint)
{ // 保存数据 }
else if(dataAcqDlg.DoModal()==IDQuit)
{
// CDialog::OnCancel();
}
}
你调试一下看行不行.不行的话,发到我的油箱,我看看[email protected]
你也可以看看帖子:
http://community.csdn.net/Expert/topic/3974/3974810.xml?temp=.9936334