当前位置: 首页 > 编程语言 > C++ > 正文

Win32开发入门(4) 创建菜单

时间:2013-06-05 csdn tcjiaan

我们当然知道 ,现在,在实际开发中肯定不会像我这样写Win32程序的,你看,连个WinMain都要N行代码。但很多人 不明白什么叫学习,什么叫探索。实际上,通常能用于实际开发中的技巧只是占我们对客观世界的认识 总和不到20%,所以,如果你有兴趣计算一下,估计有80%的知识你不知道用到哪里去了。就算我们今后 不会把Win32程序投入到实际操作中,然而如果你了解过这东西,你会发现很多时候对我们是有帮助的 。

哪怕只是简单认识一下Win32的一些原理,相信对于日后编程的学习和成长,是有益处的。

为了提高误人子弟的效果,上面我说了几段F话,下面开始今天的正题。

要在窗口上添 加菜单,当然你可能会研究出N种方法,不过,这里我说两种,一种相当复杂,另一种稍微简单。

方法一,用代码添加菜单

这种方法的思路是:首先在全局范围内定义一个HMENU的变量 ,用来保存窗口中菜单栏的句柄,根菜单(菜单栏)可以CreateMenu函数来创建,接着可以使用 AppendMenu函数或者InsertMenuItem函数来创建菜单项。

句柄就是内存中各种资源的ID,比如 图标,图片,字符串等。我们的菜单也是一种资源。

下面我写了一个函数,用来动态创建菜单 。

void CreateMyMenu()     
{     
    hRoot = CreateMenu();     
    if(!hRoot)     
        return;     
    HMENU pop1 = CreatePopupMenu();     
    AppendMenu(hRoot,     
        MF_POPUP,     
        (UINT_PTR)pop1,     
        L"操作");     
    // 一种方法是使用AppendMenu函数     
    AppendMenu(pop1,     
        MF_STRING,     
        IDM_OPT1,     
        L"飞机");     
         
    // 另一种方法是使用InsertMenuItem函数     
    MENUITEMINFO mif;     
    mif.cbSize = sizeof(MENUITEMINFO);     
    mif.cch = 100;     
    mif.dwItemData  = NULL;     
    mif.dwTypeData = L"机关枪";     
    mif.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;     
    mif.fState = MFS_ENABLED;     
    mif.fType = MIIM_STRING;     
    mif.wID = IDM_OPT2;     
         
    InsertMenuItem(pop1,IDM_OPT2,FALSE,&mif);     
         
}