• 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 个参数表示消息,可以是系统消息,也可以是相应控件自己的消息 。

  • 相关阅读:
    flask为blueprint增加error_handler
    solr的moreLikeThis实现“相似数据”功能
    pgsql删除重复记录
    sqlalchemy的不区分大小写比较
    logrotate运行时间指定
    远程桌面剪贴板失效的解决方法
    github上关于campbell数据采集的一些代码。
    python 学习笔记
    guestfs-python 手册
    [KVM][guestfs] 安装 guestfs-python 出错
  • 原文地址:https://www.cnblogs.com/beauty/p/1773596.html
Copyright © 2020-2023  润新知