vs2008 MFC 怎样对手动创建的对话框 进行消息事件响应 如点击按钮响应MessageBox(L"nihao")。
基本对话框(父对话框)添加一个按钮控件“生成”,左键单击"生成",响应DoModal()函数生成一个子对话框,在子对话框中添加按钮控件“点击”,左键单击“点击”,响应Me...
基本对话框(父对话框)添加一个按钮控件“生成”,左键单击"生成",响应DoModal()函数生成一个子对话框,在子对话框中添加按钮控件“点击”,左键单击“点击”,响应MessageBox函数,弹出一个对话框 !
怎么实现?
我建立一个基本对话框程序,对话框中有个按钮。通过点击这个按钮可以打开一个模态对话框。
希望模态对话框在激活时,它里面的控件能够被初始化。请问,我改在哪里对这些控件做初始化。
我之前在OnInitDialog()设置了,但是打开的模态对话框时无效的,代码如下:
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
GetDlgItem(IDC_BTN)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTestDlg::OnBtn()
{
CDialog aboutDlg(IDD_TEST);
aboutDlg.DoModal();
}
谢谢! 展开
怎么实现?
我建立一个基本对话框程序,对话框中有个按钮。通过点击这个按钮可以打开一个模态对话框。
希望模态对话框在激活时,它里面的控件能够被初始化。请问,我改在哪里对这些控件做初始化。
我之前在OnInitDialog()设置了,但是打开的模态对话框时无效的,代码如下:
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
GetDlgItem(IDC_BTN)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTestDlg::OnBtn()
{
CDialog aboutDlg(IDD_TEST);
aboutDlg.DoModal();
}
谢谢! 展开
2个回答
展开全部
step1.父对话框:ID:IDD_LIBRARY_DIALOG
在里面建一个button:ID:IDC_SHENGCHEN 命名:生成
step 2.子对话框:ID:IDD_SON
在里面建一个button:ID:IDC_DIANJI 命名:点击
step 3.在子对话框[建立类向导],VC会提醒你要为子对话框新建一个类,新建它,命名为son,点击确定
step 4.在父对话框
点击“生成”之后的行为指令
void CTestDlg::OnOK()
{
UpdateData(); //父对话框的数据传进来,这里可以省略
son DlgObj; //son类为刚才为 子对话框新建的类
DlgObj.DoModal();
}
step 5.在这个CtestDlg.cpp(父对话框cpp)的前面添加#include "son.h",如果没添加的话,
son DlgObj;这个语句电脑识别不了son类
step 6在子对话框
点击“点击”之后的行为指令
void son::OnOK()
{
UpdateData(); //子对话框的数据传进来,这里可以省略
MessageBox("好好学习,天天向上!");
UpdateData(FALSE); //将相关数据传回子对话框,这里什么也没传
}
基本对话框的初始化:
在父对话框IDD_LIBRARY_DIALOG,[建立类向导] ,
Message Maps : Class names: CtestDlg
Objiect ID: CtestDlg
Message :WM_INITDIALOG
先 Add Function:,
然后 Edit code
BOOL CtestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here 在这里初始化父对话框。
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
我的回答能够解决楼主的问题吗?还有疑问可以补充,希望可以帮到忙~。~
在里面建一个button:ID:IDC_SHENGCHEN 命名:生成
step 2.子对话框:ID:IDD_SON
在里面建一个button:ID:IDC_DIANJI 命名:点击
step 3.在子对话框[建立类向导],VC会提醒你要为子对话框新建一个类,新建它,命名为son,点击确定
step 4.在父对话框
点击“生成”之后的行为指令
void CTestDlg::OnOK()
{
UpdateData(); //父对话框的数据传进来,这里可以省略
son DlgObj; //son类为刚才为 子对话框新建的类
DlgObj.DoModal();
}
step 5.在这个CtestDlg.cpp(父对话框cpp)的前面添加#include "son.h",如果没添加的话,
son DlgObj;这个语句电脑识别不了son类
step 6在子对话框
点击“点击”之后的行为指令
void son::OnOK()
{
UpdateData(); //子对话框的数据传进来,这里可以省略
MessageBox("好好学习,天天向上!");
UpdateData(FALSE); //将相关数据传回子对话框,这里什么也没传
}
基本对话框的初始化:
在父对话框IDD_LIBRARY_DIALOG,[建立类向导] ,
Message Maps : Class names: CtestDlg
Objiect ID: CtestDlg
Message :WM_INITDIALOG
先 Add Function:,
然后 Edit code
BOOL CtestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here 在这里初始化父对话框。
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
我的回答能够解决楼主的问题吗?还有疑问可以补充,希望可以帮到忙~。~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询