我目前正在制作一个跨平台项目,我在这个主题上很新。
我尝试使用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创建工具栏的不同方法。
提前致谢!
答案 0 :(得分:0)
CommandBar_Create返回NULL或有效句柄? 如果你在屏幕上看到一个栏我想是后者,所以检查错误代码是没用的。成功的函数调用通常不会重置GetLastError返回的值。 如果按钮为空,请检查用于它们的位图是否与exe相关联,并且它是兼容的格式。