// ag.cpp : 定义应用程序的入口点。
//#include "stdafx.h"
#include "ag.h"#define MAX_LOADSTRING 100// 全局变量:
HINSTANCE hInst; // 当前实例
TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名
HWND hDialog; //窗口INT_PTR CALLBACK DialogProc(
_In_  HWND hwndDlg,
_In_  UINT uMsg,
_In_  WPARAM wParam,
_In_  LPARAM lParam
);
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{

  // TODO: 在此放置代码。
MSG msg;
HACCEL hAccelTable; // 初始化全局字符串
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_AG, szWindowClass, MAX_LOADSTRING);
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_AG)); hDialog=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc); ShowWindow(hDialog,SW_SHOW); UpdateWindow(hDialog); // 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!hInstance || !IsDialogMessage(hDialog,&msg) )
{
if(!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
} return (int) msg.wParam;
}
INT_PTR CALLBACK DialogProc(
_In_  HWND hwndDlg,
_In_  UINT uMsg,
_In_  WPARAM wParam,
_In_  LPARAM lParam
)
{

 switch(uMsg)
 {
 case WM_COMMAND:  if( (LOWORD(lParam)==IDOK)  ||  (LOWORD(lParam)==IDCANCEL) )
 {  DestroyWindow(hwndDlg);
 return TRUE;
 }  break;   default:
 return  FALSE;
 }
return FALSE;
}任务栏倒是出现了这个对话框,但是并没有像弹出来。必须去任务栏哪里点击,才显示。说白了,就是程序后,这个对话框处于最小化状态中。为什么啊。
对话框风格状体,我是采用默认的, 没有修改过的。

解决方案 »

  1.   

    并且我点击idok idcancel
    都不能够关闭对话框,感觉是,对话框窗口处理函数没有得到正确的运行,或者没有达到我的预期效果
      

  2.   

    if( (LOWORD(lParam)==IDOK)  ||  (LOWORD(lParam)==IDCANCEL)
    ------------
    这里错了吧
    LOWORD(wParam);不是LOWORD(lParam);
      

  3.   


    谢谢了,罩着你的修改后,就可以弹出对话框来了。我无法理解为什么修改后,就可以弹出对话框呢?难道是以为直接return false了嘛?
    如果是的话, 那么以下有如何解释呢?
    注意,我只处理wm_command 消息,其他消息一概不处理创建对话框,显示对话框都没有任何来处理的,代码可以看出的。为什么照着你的修改后,就可以弹出了?真实奇怪,没有谁来处理啊我没有调用defwindowproc
      

  4.   

    首先要知道wParam和lParam分别表示什么
      

  5.   

    我建了一个工程试了你的代码,只改了一点使编译能通过。
    在我这里对话框可以正常弹出,且在最顶层可以直接看到的。只是点击OK和Cancel没有反应。
    你这个对话框是没有最小化功能的。你之前运行的时候只是被其他程序窗口盖住了。