2008-06-12

ポップアップメニューのチェックマーク

前々から気になっていた WhereNowのポップアップメニューを直してみました。
 
ポップアップメニューを出したときに選択されている測位方法(W-SIMまたはGPS)の前にチェックマークをつけています。

 
調べる前はメニューの扱いは面倒そうだなぁと思っていたのですが、実際にはCheckMenuItem()を使うだけで簡単に実現できてしまいました。
HMENU       hDummyMenu  = NULL,
            hPopupMenu  = NULL;

hDummyMenu = LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_POPUPMENU));
if (NULL != hDummyMenu) {
    hPopupMenu = GetSubMenu(hDummyMenu, 0);

    if (MODE_WSIM == g_dwMode) {
        CheckMenuItem(hPopupMenu, IDM_WSIM, MF_BYCOMMAND | MF_CHECKED);
        CheckMenuItem(hPopupMenu, IDM_GPS , MF_BYCOMMAND | MF_UNCHECKED);
    } else {
        CheckMenuItem(hPopupMenu, IDM_WSIM, MF_BYCOMMAND | MF_UNCHECKED);
        CheckMenuItem(hPopupMenu, IDM_GPS , MF_BYCOMMAND | MF_CHECKED);
    }

    TrackPopupMenuEx(hPopupMenu, 0, ppt->x, ppt->y, hWnd, NULL);
    DestroyMenu(hDummyMenu);
}
 
ついでにチェックのついている項目はポップアップメニューが表示された時点で選択されているようにしたかったのですが、こちらはやり方がよくわかりませんでした。
メニューが表示されたときは一番上が選択されているのが流儀なのでしょうか?
 
いずれにせよ、懸案だったポップアップメニューが思いのほか簡単に修正できたので 調子に乗って他の部分も手直ししてみます。
 

0 件のコメント: