CommandBar под WIN CE6

В настоящее время я работаю над кросс-платформенным проектом, и я довольно новичок в этой теме.

Я попытался использовать 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 и получил панель инструментов с четырьмя пустыми кнопками. Когда я использовал GetLastError() после CommandBar_Create(), я получил следующий код системной ошибки:

ERROR_CALL_NOT_IMPLEMENTED 120 (0x78)

Эта функция не поддерживается в этой системе.

Я не понимаю, почему эта функция не должна поддерживаться на CE6. В библиотеке MSDN этот метод определяется как функция WINCE.

Может кто-нибудь объяснить мне, как решить эту проблему? В противном случае я бы также принял разные способы создания панели инструментов для CE6, CE7 и Windows Mobile.

Заранее спасибо!


person user3374682    schedule 04.03.2014    source источник


Ответы (1)


CommandBar_Create возвращает NULL или допустимый дескриптор? Если вы видите полосу на экране, я предполагаю, что последнее, поэтому проверка кода ошибки бесполезна. Успешный вызов функции обычно не сбрасывает значение, возвращаемое GetLastError. Если кнопки пусты, убедитесь, что используемое для них растровое изображение связано с исполняемым файлом и имеет совместимый формат.

person Valter Minute    schedule 05.03.2014
comment
CommandBar_Create, как и все функции CommandBar, возвращает сообщение об успешном выполнении. Я вижу полосу на экране. Действие за кнопками также работает отлично. Я так же думаю, что проблема с растровым изображением, но все слинковано правильно и оно в правильном формате 16х16 пикселей. Тот же код работает для windows mobile 6 и 6.5.3., но не для CE6... - person user3374682; 06.03.2014
comment
Вы проверяли формат растрового изображения (глубина цвета и т. д.)? Открытие файла .exe в VS должно позволить вам увидеть, правильно ли ресурсы встроены в исполняемый файл. - person Valter Minute; 06.03.2014