GUI学习笔记之二对话框

  对话框是一种特殊的主窗口,它主要用来实现程序和用户之间的信息交互,它有两种基本的模式:模态对话框和非模态对话框。当为模态对话框时,它的父窗口禁止消息输入,而为非模态对话框时,可以在对话框与父窗口之间进行切换。 一般的对话框编写流程是先定义对话框模板,然后定义的控件数组,最后是创建对话框。下面为定义对话框模板,定义控件数组,创建对话框原型:

a)  定义对话框模板原型

struct T_GUI_DLGTEMPLATE

{

  T_UWORD dwStyle; /*对话框风格*/

  T_UWORD dwExStyle; /*扩展风格*/

  T_WORD x, y, w, h; /*对话框位置和大小*/

  T_CONST T_BYTE* caption; /*标题栏文本*/

  T_GUI_HICON hIcon; /*标题栏上的图标句柄*/

  T_GUI_HMENU hMenu; /*对话框所拥有的菜单*/

  T_WORD ControlNr; /*对话框上的控件数目*/

  T_GUI_PCTRLDATA controls; /*控件数组指针*/

  T_UWORD dwAddData; /*额外数据,必须为0*/

} T_GUI_DLGTEMPLATE;

typedef T_GUI_DLGTEMPLATE* T_GUI_PDLGTEMPLATE;

b) 定义控件数组原型

struct T_GUI_CTRLDATA

{

  T_BYTE* class_name; /*控件类名*/

  T_UWORD dwStyle; /*控件风格*/

  T_WORD x, y, w, h; /*控件在对话框中的位置和大小*/

  T_WORD id; /*控件ID*/

  T_CONST T_BYTE* caption; /*控件文本*/

  T_UWORD dwAddData; /*控件额外数据*/

  T_UWORD dwExStyle; /*控件扩展风格*/

};

c) 模态对话框创建原型:

T_WORD fnGUI_DialogBoxIndirectParam (

  T_GUI_pDlgTemplate pDlgTemplate,

  T_GUI_HWND hOwner,

  T_GUI_WndProc DlgProc,

  T_GUI_LPARAM lParam)模态对话框关闭时返回点击的按钮ID 值

d) 非模态对话框创建原型:

T_GUI_HWND fnGUI_CreateMainWindowIndirect (

  T_GUI_pDlgTemplate pDlgTemplate,

  T_GUI_HWND hOwner,

  T_GUI_WndProc WndProc)该函数的返回值是对话框的句柄

在主窗口中如果希望对控件进行控制, 就要向该控件发送消息, 调用函数fnGUI_SendMessage; 在对话框中如果希望对控件进行控制, 就要调用函数fnGUI_SendDlgItemMessage,原型如下:

T_WORD fnGUI_SendDlgItemMessage (

  T_GUI_HWND hDlg,

  T_WORD nIDDlgItem,

  T_WORD message,

  T_GUI_WPARAM wParam,

  T_GUI_LPARAM lParam)

hDlg 是对话框的句柄,nIDDlgItem 是对话框控件的ID,后3 个参数表示消息,可以是系统消息,也可以是相应控件自己的消息 。

原文地址:https://www.cnblogs.com/beauty/p/1773596.html