0

我目前正在从事一个跨平台项目,我对这个主题很陌生。

我尝试使用 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 创建工具栏的不同方法。

提前致谢!

4

1 回答 1

0

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

于 2014-03-05T07:51:48.443 回答