VC 创建窗口

代码
INT_PTR CALLBACK DialogProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
    
switch (Msg)
    {
    
case WM_INITDIALOG :
        {
            MessageBox(
0, L"初始化模态窗口!", L"提示", MB_OK);
            
return true;

        }
    
case WM_COMMAND:
        {
            
switch (LOWORD(wParam))
            {
            
case IDCANCEL:
                {
                    ::EndDialog(hWnd, 
0);
                    
return false;
                }
                
            }
        }
    
break ;
    }
    
return false;
   
/*
   返回 True 表示不再继续处理, False 表示返回消息处理函数继续处理
   
*/
}

1
创建模态窗口 在资源窗口添加Dialog ,定义类名,Dlg 引用新加的Dialog头文件,定以新加的Dialog对象, 调用DoModal

代码

CMyDialog test;  // CMyDialog  在创建资源文件时定义
test.DoModal();

API方式创建模态窗口

 CMyDialog test;
 HINSTANCE hInstance = (HINSTANCE)::GetModuleHandle(NULL);
 ::DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), this->m_hWnd, DialogProc);

2 创建非模态

 CMyDialog* test = new CMyDialog();
 test->Create(IDD_DIALOG1, NULL);
 test->ShowWindow(SW_SHOW); 

API 方式创建

 CMyDialog test;
 HINSTANCE hInstance = (HINSTANCE)::GetModuleHandle(NULL);
 HANDLE handle = ::CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);        // 第3个函数 为当前窗口句柄不可切换 NULL  可切换
 ::ShowWindow((HWND)handle, SW_SHOW);

原文地址:https://www.cnblogs.com/chengxin1982/p/1660690.html