新手请教一个模态对话框非模态对话框的问题

tianjun7 2012-05-06 07:14:09
下面这段是按钮激活一个非模式窗口的代码
执行有问题的 方法1
void CtestDlg::OnBnClickedButton2()
{
CDialog *mtop1 = new CDialog;

mtop1->Create(IDD_LoginDLg,0);
mtop1->ShowWindow(SW_SHOW);

执行正确的 方法2
void CtestDlg::OnBnClickedButton2()
{
m_TopDlg *mtop1 = new m_TopDlg;

mtop1->Create(IDD_LoginDLg,0);
mtop1->ShowWindow(SW_SHOW);

新建立的对话框

void m_TopDlg::OnBnClickedButton1()
{
::MessageBoxA(m_hWnd,"模式窗口","提示",MB_OK);
// TODO: 在此添加控件通知处理程序代码
}


这两段代码区别在于申请指针的时候一个用的我创建的对话框的类m_TopDlg ,一个用的是CDialog

出现的不同:
如果用方法1 新建立的对话框上面按钮无法激活提示MessageBoxA的提示.点击无反应

如果用方法2 新建立的对话框的按钮代码正确别执行.出现了提示对话框

虽然执行正确了.我也是乱碰上的.不理解 m_TopDlg 和 CDialog 注册的变量调用结果为什么不同.CDialog 的Create也关联了新建立对话框的ID.


新手求解.首次发帖多关照




...全文
37 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
SONG_CA 2012-05-06
  • 打赏
  • 举报
回复
void m_TopDlg::OnBnClickedButton1()
{
::MessageBoxA(m_hWnd,"模式窗口","提示",MB_OK);
// TODO: 在此添加控件通知处理程序代码
}

函数是对m_TopDlg类的,你第一种方法CDialog *mtop1 = new CDialog;

只是创建了一个CDialog 对象,这个对象中根本就没有OnBnClickedButton1()
成员函数

33,311

社区成员

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

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