Compact Framework の MainMenu コントロールの背景色を変更する解決策を探しましたが、見つけた唯一の答えは、カスタム コントロールを作成する必要があるということです。誰かがこれのサンプルコードを持っていますか?
3 に答える
.NETCF でイベントとして利用できなかった WM_EXITMENULOOP メッセージを処理したいところで、漠然と似たようなことをしました。
解決策は、メイン メニューを「サブクラス化」することでした。これは、WndProc 関数を独自の関数に置き換え、Windows メッセージ (私の場合は WM_EXITMENULOOP) を処理し、他のすべてに対して基本クラス WndProc を呼び出す古い MFC トリックです。
コントロールをサブクラス化する方法については、Alex Yakhnin のブログでいくつかのサンプル コードを参照できます: Example of subclassing a window in .NETCF
あなたの場合、実際には MainMenu が存在する Form をサブクラス化していて、WM_DRAWITEM は自分で処理したい Windows メッセージになると思います。私は自分で背景色を変更しようとしたことがないので、これが機能するかどうかは完全にはわかりませんが、サブクラス化から始めます。
これを行う方法はありません。
おそらくあなた自身のコントロールを作成する必要があるというあなたの権利。
これは、アプリケーションをWindowsCEとWindowsMobileで実行するためにとにかく実行することを検討していたことです。
アプリケーションが両方で動作する必要があるときにメニューを追加する際の問題は、メニューがWindows CEの画面の上部に表示され、そこにある可能性のあるすべてのコントロールをカバーすることです。
長期的には、新しいコントロールを作成するだけで面倒な作業は少なくなります。
しばらく前に似たようなことをしようとしたところ、独自のメニューを作成する必要があることがわかりました。基本的にゼロから。私が取り組んでいたプロジェクトでは費用を賄うことができなかったので、私はあきらめました。また、 OpenNETCFには非常に優れたメニュー コントロールがあることも発見しました。フリーソフトウェアに含まれているかどうかはわかりませんが、調べる価値があるかもしれません。