局部变量创建非模态对话框

原创 2016年07月18日 10:14:29

不用new创建非模态对话框方法如下:

int DoEvents()
{
    MSG msg;
    // Process existing messages in the application's message queue.
    // When the queue is empty, do clean up and return.
    while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
    {// has msg
        if(msg.message== WM_APP) return 1;
        if (!AfxGetThread()->PumpMessage()) break;
    }
    return 0;
}
//
WNDPROC g_OldProc=0;
LRESULT CALLBACK NewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    switch(message) 
    
    case WM_CLOSE: 
        PostMessage(GetParent(hwnd),WM_APP,0,0);
    break;
    case WM_COMMAND: // 0x0111
        if(LOWORD(wParam)==IDOK)
        {   
            PostMessage(GetParent(hwnd),WM_APP,0,0);
        }
    break;   
    
    return CallWindowProc(g_OldProc, hwnd, message, wParam, lParam);
//
void CxxxxDlg::OnButton1() 
{
    CAboutDlg dlg;// modeless dlg , not use new !!!
    dlg.Create(IDD_ABOUTBOX);
    dlg.ShowWindow(SW_SHOW);
    g_OldProc = (WNDPROC)SetWindowLong(dlg.m_hWnd, GWL_WNDPROC, (LONG)NewProc);
//
    while (!DoEvents());
    dlg.DestroyWindow();
    afxDump << "Dlg closed()\n";
}

注意
CAboutDlg dlg;// modeless dlg , not use new !!!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

转:VC非模态对话框创建和销毁

非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文:When   you   implement   a   modeless   dialog...

VC非模态对话框创建和销毁

非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别  先看一下MSDN的原文: When   you   implement   a   modeless  ...

VC非模态对话框创建和销毁

VC非模态对话框创建和销毁 非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文: When   you   implement   ...

非模态对话框的创建和销毁及全局指针的使用注意事项

////////////////////////////////////////////////////////////////////////////////////////////////////...

非模态对话框的创建与删除

非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别   MS的指示:非模态对话框需要重载函数OnCanel,并且在这个函数中调用DestroyWindow。并且不能调用基...
  • YL_WH
  • YL_WH
  • 2012-09-02 13:42
  • 566

关于MFC下多线程,在线程中创建非模态对话框以及消息传递

多线程,非模态对话框,消息传递,定时器

非模态对话框的创建和删除

1、模式对话框: 在模式对话框下,用CDialog::OnOK()或CDialog::OnCancel()以及CDialog::OnClose()关闭对话框。 一定要注意之前的CDialog::(...

VC非模态对话框创建和销毁

非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文: When   you   implement   a   modeless   dia...

MFC 非模态对话框 创建 销毁

采用成员变量创建一个非模态对话框         首先在你所要编写的类的头文件中声明一个指针变量: [cpp] view plain copy pri...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)