WIN CE6下的CommandBar

时间:2014-03-04 09:35:49

标签: c++ windows-ce toolbar atl commandbar

我目前正在制作一个跨平台项目,我在这个主题上很新。

我尝试使用CommandBar为各种平台创建自定义工具栏。它在CE7,Windows Mobile 6和Windows Mobile 6.5.3下运行。它不适用于CE6。

以下代码是调用此问题的部分:

const TBBUTTON tbBtns[] = {
        {2, 267, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
        {0, 268, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
        {1, 269, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
        {3, 270, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
    };  
    HWND hWndCB = CommandBar_Create(_AtlBaseModule.m_hInst, m_hWnd, 208);

    CommandBar_AddBitmap(hWndCB, _AtlBaseModule.m_hInst, IDB_BTNS, 4, 16, 16);


    CommandBar_AddButtons(hWndCB,4,tbBtns);

    CommandBar_Show(hWndCB, TRUE);

我用CE6设备调试程序,我得到一个带有四个空按钮的工具栏。当我在CommandBar_Create()之后使用GetLastError()时,我得到了以下系统错误代码:

  

ERROR_CALL_NOT_IMPLEMENTED 120(0x78)

     

此系统不支持此功能。

我不明白为什么CE6不支持此功能。在MSDN库中,该方法被定义为WINCE函数。

有人可以解释一下如何解决这个问题吗?否则我也会接受为CE6,CE7和Windows Mobile创建工具栏的不同方法。

提前致谢!

1 个答案:

答案 0 :(得分:0)

CommandBar_Create返回NULL或有效句柄? 如果你在屏幕上看到一个栏我想是后者,所以检查错误代码是没用的。成功的函数调用通常不会重置GetLastError返回的值。 如果按钮为空,请检查用于它们的位图是否与exe相关联,并且它是兼容的格式。