微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 对话框按钮简单使用实例

对话框按钮简单使用实例

时间:09-12 来源:互联网 点击:

需要先添加对话框,并且修改确定按钮的ID值

.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);
LONG OnBtnClick(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
#include

struct DecodeUint DlgMessage[] = {
WM_INITDIALOG,OnInit,
WM_COMMAND,OnCommand,
};

struct DecodeUint DlgCommand[] = {
IDBTN,OnBtnClick,
IDCANCEL,OnClose,
};

HINSTANCE g_hInst;
HWND hStatic;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

int WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
g_hInst = hInstance;
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 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 OnInit(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
hStatic = CreateWindow(TEXT(static),TEXT(static text),WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER | SS_CENTERIMAGE,
10,10,200,200,hDlg,(HMENU)101,g_hInst,NULL);
return TRUE;
}

LONG OnClose(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
EndDialog(hDlg,0);
return TRUE;
}

LONG OnBtnClick(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
//1 获取文本内容 修改对话框标题
//TCHAR * pc;
//int count = Static_GetTextLength(hStatic);
//pc = new TCHAR[count+1];
//Static_GetText(hStatic,pc,count+1);
//SetWindowText(hDlg,pc);
//delete pc;

//2 设置按钮不可用
Button_Enable(GetDlgItem(hDlg,IDCANCEL),FALSE);
return 0;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top