// 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;
}任务栏倒是出现了这个对话框,但是并没有像弹出来。必须去任务栏哪里点击,才显示。说白了,就是程序后,这个对话框处于最小化状态中。为什么啊。
对话框风格状体,我是采用默认的, 没有修改过的。
//#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;
}任务栏倒是出现了这个对话框,但是并没有像弹出来。必须去任务栏哪里点击,才显示。说白了,就是程序后,这个对话框处于最小化状态中。为什么啊。
对话框风格状体,我是采用默认的, 没有修改过的。
都不能够关闭对话框,感觉是,对话框窗口处理函数没有得到正确的运行,或者没有达到我的预期效果
------------
这里错了吧
LOWORD(wParam);不是LOWORD(lParam);
谢谢了,罩着你的修改后,就可以弹出对话框来了。我无法理解为什么修改后,就可以弹出对话框呢?难道是以为直接return false了嘛?
如果是的话, 那么以下有如何解释呢?
注意,我只处理wm_command 消息,其他消息一概不处理创建对话框,显示对话框都没有任何来处理的,代码可以看出的。为什么照着你的修改后,就可以弹出了?真实奇怪,没有谁来处理啊我没有调用defwindowproc
在我这里对话框可以正常弹出,且在最顶层可以直接看到的。只是点击OK和Cancel没有反应。
你这个对话框是没有最小化功能的。你之前运行的时候只是被其他程序窗口盖住了。