創(chuàng)建對(duì)話框
首選需要?jiǎng)?chuàng)建一個(gè)對(duì)話框
所以應(yīng)該包含resource.h資源文件
.h 文件:
struct DecodeUint{
UINT meesage;
LONG (*fun)(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
};
#define dim(x) (sizeof(x)/sizeof(x[0]))
LONG OnInit(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
LONG OnCommand(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
LONG OnClose(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
.c文件:
#include
#include
#include "Border.h"
#include "resource.h"
struct DecodeUint DlgMessage[] = {
WM_INITDIALOG,OnInit,
WM_COMMAND,OnCommand,
};
struct DecodeUint DlgCommand[] = {
IDOK,OnClose,
IDCANCEL,OnClose,
};
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
int WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,About);
return 1;
}
BOOL CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
for (int i = 0;i < dim(DlgMessage);i ++)
{
if (DlgMessage[i].meesage == message)
{
(*DlgMessage[i].fun)(hDlg,message,wParam,lParam);
}
}
return FALSE;
}
LONG OnInit(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
return TRUE;
}
LONG OnCommand(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
for (int i = 0;i < dim(DlgCommand);i ++)
{
if (DlgCommand[i].meesage == LOWORD(wParam))
{
(*DlgCommand[i].fun)(hDlg,message,wParam,lParam);
}
}
return TRUE;
}
LONG OnClose(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
EndDialog(hDlg,0);
return TRUE;
}