关于windows mobile的菜单的概述

在实际项目中的菜单MENU,一般需要几种样式的:

1. MENU只是文字

2. MENU仅仅是图片

3. MENU文字加图片。

windows mobile中的MENU其实是TOOLBAR,对MENU的操作同toolbar的操作。在mobile当中创建菜单栏都是通过SHCreateMenuBar来创建的。

BOOL  SHCreateMenuBar(SHMENUBARINFO *pmbi);

typedef struct tagSHMENUBARINFO
{
    DWORD     cbSize;               // IN  - Indicates which members of struct are valid
    HWND      hwndParent;           // IN
    DWORD     dwFlags;              // IN  - Some features we want
    UINT      nToolBarId;           // IN  - Which toolbar are we using
    HINSTANCE hInstRes;             // IN  - Instance that owns the resources
    int       nBmpId;
    int       cBmpImages;           // IN  - Count of bitmap images
    HWND      hwndMB;               // OUT
    COLORREF  clrBk;                // IN  - background color of the menu bar (excluding sip)
} SHMENUBARINFO, *PSHMENUBARINFO;

我们创建之前需要初始化几个变量,

hwndParent   父窗口; cbSize 结构体大小;

nToolBarId 菜单项句柄(如果是通过CreateMenu创建) 或者是菜单的Id(通过资源视图创建MENU)

hIntRes 程序的实例。

dwFlags 菜单栏的样式。

 

通过CreateMenu创建的菜单项如果超过2个,能创建菜单栏失败。 通过资源视图创建的菜单,如果要修改菜单项的内容:比如菜单项名称等,则需要为菜单添加RCDATA, 因为通过资源视图创建的菜单,其菜单项是没有ID,而windows操作都需要通过ID来获取句柄进行控件操作。

 

添加RCDATA有点麻烦。 如果要创建多余2个的菜单且菜单项没有pop menu时候,我一般是通过CreateMenu创建一个菜单项,然后通过TB_ADDBUTTONS添加其他的菜单项。 如:

typedef struct _TBBUTTON {
    int iBitmap;
    int idCommand;
    BYTE fsState;
    BYTE fsStyle;
#ifdef _WIN32
    BYTE bReserved[2];
#endif
    DWORD dwData;
    int iString;
} TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON;

TBBUTTON tbb;

需要设置的几个变量:

iBitmap  如果需要位图则设置位图索引号,而位图索引号是需要在添加按钮之前为菜单栏添加ImagList列表; 如果不需要位图则赋值为I_IMAGENONE,如果不赋值为这个,则创建出来的菜单项会有位图。

fsState  状态。 TBSTATE_ENABLED

fsStyle  样式。  TBSTYLE_BUTTON

iString  按钮标题 如果需要标题,则是标题的索引号。 这些索引号是通过 ADDSTRING为菜单添加的字符串的索引。如果不需要则置0.

idCommand 菜单项的ID。 操作按钮需要用到ID

SendMessage(hWnd, TB_ADDBUTTONS,  1, (LPARAM)&tbb);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值