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 デバイスでプログラムをデバッグしたところ、空のボタンが 4 つあるツールバーが表示されました。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 に答える