zoukankan      html  css  js  c++  java
  • MiniGUI

    CTRL_ICONVIEW
     
    数据结构
    图标项
    typedef struct _IVITEMINFO
    {
    int nItem;    // 图标项的索引值
    PBITMAP bmp;    // 图标项的图标
    const char *label;     // 图标项的标签文字
    DWORD addData;     // 图标项的附加信息
    DWORD dwFlags;     // 保留
    } IVITEMINFO
     
     
    消息
    添加图标项:IVITEMINFO ivii; HANDLE hIconItem = SendMessage (hIconView, IVM_ADDITEM, 0, (LPARAM)&ivii);
    设置图标项长宽:int width; int height;  SendMessage (hIconView, IVM_SETITEMSIZE, width, height);
    清空图标项:IVM_RESETCONTENT
    删除图标项:IVM_DELITEM
    设置图标项的绘制函数: IVM_SETITEMDRAW
    设置滚动窗口的宽度:IVM_SETCONTWIDTH
    设置滚动窗口的高度:IVM_SETCONTHEIGHT
    设置图标项相关操作的一些回调函数:IVM_SETITEMOPS
    获取图标型控件的边缘范围值:IVM_GETMARGINS
    设置图标型控件的边缘范围值:IVM_SETMARGINS
    获取图标型控件的左、上、右、下边缘值:IVM_GETLEFTMARGIN、IVM_GETTOPMARGIN、IVM_GETRIGHTMARGIN 和 IVM_GETBOTTOMMARGIN
    获取内容区域的宽度和高度、可视区域的宽度和高度:IVM_GETCONTWIDTH、IVM_GETCONTHEIGHT、IVM_GETVISIBLEWIDTH 和 IVM_GETVISIBLEHEIGHT
    设置滚动窗口的内容区域的大小:IVM_SETCONTRANGE
    获取内容区域的当前位置值:IVM_GETCONTENTX 和 IVM_GETCONTENTY
    设置内容区域的当前位置值,也就是在可视区域中移动内容区域到某个指定位置:IVM_SETCONTPOS
    获取和设置控件的当前高亮图标项:IVM_GETCURSEL 和 IVM_SETCURSEL
    选择一个列表项,被选中的项将高亮显示:IVM_SELECTITEM
    显示一个图标项:IVM_SHOWITEM
    选中一个图标项并使之可见:IVM_CHOOSEITEM,是 IVM_SELECTITEM 和 IVM_SHOWITEM消息的组合
    设置图标项的初始操作:IVM_SETITEMINIT
    设置图标项的销毁操作:IVM_SETITEMDESTROY
    设置图标项的比较函数:IVM_SETITEMCMP
    使内容区域中的某个位置点成为可见:IVM_MAKEPOSVISIBLE:对应 SVM_MAKEPOSVISIBLE 
    获取滚动窗口的当前水平和垂直滚动值(点击滚动条箭头的滚动范围大小):IVM_GETHSCROLLVAL 和 IVM_GETVSCROLLVAL
    获取滚动窗口的当前水平和垂直页滚动值(翻页操作时的滚动范围大小):IVM_GETHSCROLLPAGEVAL 和 IVM_GETVSCROLLPAGEVAL 
    设置滚动窗口的水平和(或者)垂直滚动值:IVM_SETSCROLLVAL
    设置滚动窗口的水平和(或者)垂直页滚动值:IVM_SETSCROLLPAGEVAL
    对图标项进行一次性的排序:IVM_SORTITEMS
    获取当前图标项的数量:IVM_GETITEMCOUNT
    获取当前图标项的附加信息:IVM_GETITEMADDDATA
    设置当前图标项的附加信息:IVM_SETITEMADDDATA
    刷新一个图标项区域:IVM_REFRESHITEM
    获取第一个可见的图标:IVM_GETFIRSTVISIBLEITEM
     
    通知
    LVN_SELCHANGE:当前高亮图表项发生改变
    LVN_CLICKED:用户点击图标项
     
    mg-samples的图标型控件示例
      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 #include <sys/stat.h>
      5 #include <sys/types.h>
      6 
      7 #include <minigui/common.h>
      8 #include <minigui/minigui.h>
      9 #include <minigui/gdi.h>
     10 #include <minigui/window.h>
     11 #include <minigui/control.h>
     12 
     13 #define add                                  "Add"
     14 #define delete_                              "Delete"
     15 #define my_friends                           "My Friends"
     16 
     17 #define IDC_ICONVIEW    100
     18 #define IDC_BT          200
     19 #define IDC_BT2         300
     20 #define IDC_BT3         400
     21 #define IDC_BT4         500
     22 
     23 #define IDC_ADD         600
     24 #define IDC_DELETE      601
     25 
     26 static HWND hIconView;
     27 
     28 static BITMAP myicons [12];
     29 
     30 static const char* iconfiles[12] =
     31 {
     32     "./res/acroread.png",
     33     "./res/icons.png",
     34     "./res/looknfeel.png",
     35     "./res/package_games.png",
     36     "./res/tux.png",
     37     "./res/xemacs.png",
     38     "./res/gimp.png",
     39     "./res/kpilot.png",
     40     "./res/multimedia.png",
     41     "./res/realplayer.png",
     42     "./res/usb.png",
     43     "./res/xmms.png"
     44 };
     45 
     46 static const char *iconlabels[12] =
     47 {
     48     "acroread",
     49     "icons",
     50     "looknfeel",
     51     "games",
     52     "tux",
     53     "xemacs",
     54     "gimp",
     55     "kpilot",
     56     "multimedia",
     57     "realplayer",
     58     "usb",
     59     "xmms"
     60 };
     61 
     62 #if 0
     63 static void myDrawItem (HWND hWnd, GHANDLE hsvi, HDC hdc, RECT *rcDraw)
     64 {
     65     const PBITMAP pbmp = (PBITMAP)iconview_get_item_bitmap (hsvi);
     66     const char *label = (const char*)iconview_get_item_label (hsvi);
     67     
     68     SetBkMode (hdc, BM_TRANSPARENT);
     69     SetTextColor (hdc, PIXEL_black);
     70 
     71     if (iconview_is_item_hilight(hWnd, hsvi)) {
     72         SetBrushColor (hdc, PIXEL_blue);
     73     }
     74     else {
     75         SetBrushColor (hdc, PIXEL_lightwhite);
     76     }
     77     FillBox (hdc, rcDraw->left, rcDraw->top, RECTWP(rcDraw), RECTHP(rcDraw));
     78     SetBkColor (hdc, PIXEL_blue);
     79     
     80     if (label) {
     81         RECT rcTxt = *rcDraw;
     82         rcTxt.top = rcTxt.bottom - GetWindowFont (hWnd)->size * 2;
     83         rcTxt.left = rcTxt.left - (GetWindowFont (hWnd)->size) + 2;
     84 
     85         DrawText (hdc, label, -1, &rcTxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
     86     }
     87     FillBoxWithBitmap (hdc, rcDraw->left, rcDraw->top, 0, 0, pbmp);
     88 }
     89 #endif
     90 
     91 static int
     92 BookProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
     93 {
     94     switch (message)
     95     {
     96     
     97     case MSG_INITDIALOG:
     98     {
     99         IVITEMINFO ivii;
    100         static int i = 0, j = 0;
    101 
    102         hIconView = GetDlgItem (hDlg, IDC_ICONVIEW);
    103         SetWindowBkColor (hIconView, PIXEL_lightwhite);
    104         SendMessage (hIconView, IVM_SETITEMSIZE, 55, 65);
    105         
    106         for (i = 0; i < TABLESIZE(myicons); i++) {
    107             memset (&ivii, 0, sizeof(IVITEMINFO));
    108             ivii.bmp = &myicons[i];
    109             ivii.nItem = 12 * j + i;
    110             ivii.label = iconlabels[i];
    111             ivii.addData = (DWORD)iconlabels[i];
    112             SendMessage (hIconView, IVM_ADDITEM, 0, (LPARAM)&ivii);
    113         }
    114 
    115         break;
    116     }
    117 
    118     case MSG_COMMAND:
    119     {
    120         int id = LOWORD (wParam);
    121         int code = HIWORD (wParam);
    122 
    123         switch (id) {
    124         case IDC_ICONVIEW:
    125             if (code == IVN_CLICKED) {
    126                 int sel;
    127                 sel = SendMessage (hIconView, IVM_GETCURSEL, 0, 0);
    128             }
    129             break;
    130         case IDC_ADD:
    131         {
    132             IVITEMINFO ivii;
    133             char buff [10];
    134             int idx;
    135             int count = SendMessage (hIconView, IVM_GETITEMCOUNT, 0, 0);
    136             
    137             sprintf (buff, "NewIcon%i", count);
    138             memset (&ivii, 0, sizeof (IVITEMINFO));
    139             ivii.bmp = &myicons [0];
    140             ivii.nItem = count;
    141             ivii.label = buff;
    142             ivii.addData = (DWORD)"NewIcon";
    143 
    144             idx = SendMessage (hIconView, IVM_ADDITEM, 0, (LPARAM)&ivii);
    145             SendMessage (hIconView, IVM_SETCURSEL, idx, 1);
    146             break;
    147         }
    148 
    149         case IDC_DELETE:
    150         {
    151             int sel = SendMessage (hIconView, IVM_GETCURSEL, 0, 0);
    152             int count = SendMessage (hIconView, IVM_GETITEMCOUNT, 0, 0);
    153             char *label = NULL;
    154 
    155             if (sel >= 0){
    156                 label = (char *) SendMessage (hIconView, IVM_GETITEMADDDATA, sel, 0); 
    157                 SendMessage (hIconView, IVM_DELITEM, sel, 0);
    158                 if (sel == count - 1)
    159                     sel --;
    160                 SendMessage (hIconView, IVM_SETCURSEL, sel, 1);
    161             }
    162             break;
    163         }
    164 
    165         } /* end command switch */
    166         break;
    167     }
    168 
    169     case MSG_KEYDOWN:
    170         if (wParam == SCANCODE_REMOVE) {
    171             int cursel = SendMessage (hIconView, IVM_GETCURSEL, 0, 0);
    172             
    173             if (cursel >= 0){
    174                 SendMessage (hIconView, IVM_DELITEM, cursel, 0);
    175                 SendMessage (hIconView, IVM_SETCURSEL, cursel, 0);
    176             }
    177         }
    178         break;
    179 
    180     case MSG_CLOSE:
    181     {
    182         EndDialog (hDlg, 0);
    183         return 0;
    184     }
    185 
    186     } /* end switch */
    187 
    188     return DefaultDialogProc (hDlg, message, wParam, lParam);
    189 }
    190 
    191 static CTRLDATA CtrlBook[] =
    192 {
    193     {
    194         CTRL_ICONVIEW,
    195         WS_BORDER | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL,
    196          10, 10, 200, 300,
    197         IDC_ICONVIEW,
    198         "",
    199         0
    200     },
    201     {
    202         CTRL_BUTTON,
    203         WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP,
    204         35, 330, 50, 30,
    205         IDC_ADD,
    206         add,
    207         0
    208     },
    209     {
    210         CTRL_BUTTON,
    211          WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON,
    212         145, 330, 50, 30,
    213         IDC_DELETE,
    214         delete_,
    215         0
    216     }
    217 };
    218 
    219 static DLGTEMPLATE DlgIcon =
    220 {
    221     WS_BORDER | WS_CAPTION,
    222     WS_EX_NONE,
    223     0, 0, 230, 400,
    224     my_friends,
    225     0, 0,
    226     TABLESIZE(CtrlBook), CtrlBook,
    227     0
    228 };
    229 
    230 int MiniGUIMain (int argc, const char* argv[])
    231 {
    232     int i;
    233 
    234 #ifdef _MGRM_PROCESSES
    235     JoinLayer(NAME_DEF_LAYER , "iconview" , 0 , 0);
    236 #endif
    237     
    238     for (i=0; i<TABLESIZE(myicons); i++) {
    239         LoadBitmap (HDC_SCREEN, &myicons[i], iconfiles[i]);
    240     }
    241 
    242 
    243     DialogBoxIndirectParam (&DlgIcon, HWND_DESKTOP, BookProc, 0L);
    244 
    245     return 0;
    246 }
    247 
    248 #ifdef _MGRM_THREADS
    249 #include <minigui/dti.c>
    250 #endif

     
     
  • 相关阅读:
    CVPR2020论文解读:3D Object Detection三维目标检测
    CVPR2020论文介绍: 3D 目标检测高效算法
    自动驾驶感知系统盘点
    CVPR2020论文解析:实例分割算法
    HttpContext
    c# ExecuteScalar()
    C#中DBNull.Value和Null的用法和区别
    Guid
    CommandType.Text
    数据可视化基础专题(三):Pandas基础(二) csv导入与导出
  • 原文地址:https://www.cnblogs.com/paullam/p/3682720.html
Copyright © 2011-2022 走看看