MFCの研究では、5メニューを指摘します

A. メッセージ分類

  • コマンドメッセージ:WM_COMMONDメニューハンドラ
  • 標準メッセージ:[表示] - > [プロパティ] - >メッセージ
  • 広告メッセージ:コントロールハンドラ

 

II。メニュー操作

メニュー操作のint型でのCMainFrame :: OnCreate関数(LPCREATESTRUCT lpCreateStruct)

1      // フラグ
 2      // メニュー取得
 3      // またはメインメニューを
4。      たCMenu MENU * = GetMenu(); 
 5は     // 最初のサブメニューを取得し
6      たCMenu * FILEMENU =メニュー- > GetSubMenu(0 ); 
 7      // タグ"新規"、最初のインデックスであれば、MF_BYPOSITION 
8。      fileMenu-> CheckMenuItem(0、MF_BYPOSITION | MF_CHECKED);
 9      // "オン"フラグ、最初のIDであれば、MF_BYCOMMAND 
10      fileMenu-> CheckMenuItem(ID_FILE_OPEN、 MF_BYCOMMAND | MF_CHECKED);
 11  
12      // デフォルトのアイテムは、太字は、メニュー項目は、デフォルトで設定
 13      //FALSE:ID
 14      // TRUE:位置
15      fileMenu-> SetDefaultItem(FALSE ID_FILE_SAVE);
 16      // 淡色
 17      //はm_bAutoMenuEnableを必要:: = FALSE CFrameWndのは、
18である      fileMenu-> EnableMenuItem、(5 |、MF_BYPOSITION ; MF_DISABLED)
 19。     
20      // メニュー取り除く
21である     SetMenu(NULL);
 22である 
23である     // 負荷メニュー
24      たCMenuメニュー2;
 25      menu2.LoadMenuW(IDR_MENU1);
 26である      SetMenu(&メニュー2);
 27      // セパレータ
28      menu2.Detach()。    

 

B、Aが強調表示されている更新プログラムをクリックしてください

1. Aのイベントハンドラを追加します。

// メニューの更新が自動的に更新され、フラグビットが
無効のCMainFrameを:: OnUpdateA(CCmdUI * pCmdUI)
{ 
    // TODO:このコマンドは、ユーザ・インタフェース・ハンドラコードを更新追加
    のIF(m_isUpdate == TRUE)
    { 
        pCmdUI - > (有効TRUE); 
    } 
    { 
        pCmdUI - > イネーブル(FALSE); 
    } 
}

2.Bは、イベントハンドラを追加します

1つの 空隙のCMainFrame :: ONB()
 2  {
 3。     // TODO:この加算コマンドハンドラコード
4      = M_isUpdate m_isUpdate;!   // クリック更新フラグ
5 }

 

III。左のポップアップメニュー

1  空隙CMenuView :: OnLButtonDown(UINT nFlags、CPointポイント)
 2  {
 3。     // TODO:この追加メッセージハンドラコード、および/またはデフォルト値を呼び出す
 。4を 
5      // メニュー項目を作成する
。6      たCMenu MENU;
 7      menu.LoadMenuW(IDR_MENU1 );
 8      //は、最初のサブメニューを取得します
。9      たCMenuサブメニュー* = menu.GetSubMenu(0 );
 10  
。11      // コンバータ座標
12は      ClientToScreen(&ポイント) 
 13である     // ショートカットメニュー、右クリックメニューとしてサブメニュー
14      のサブメニュー- > TrackPopupMenu(TPM_LEFTALIGNの| TPM_LEFTBUTTON、
 15          point.x、point.y、この);
16      
17      のCView :: OnLButtonDown(nFlags、点)。
18 }

 

IV。動的更新ウィンドウアイコン

1.まず、クラスのCMainFrameにおける資源で輸入ICOアイコン、:公共CFrameWndのは、アイコンの配列を追加

 

2.タイマーのOnCreateを生成するハンドラを作成します。

 

1つの 空隙のCMainFrame ::のOnTimer(UINT_PTR nIDEvent)
 2  {
 3。     // TODO:この追加メッセージハンドラコード、および/またはデフォルト値を呼び出す
4。     静的 INT I = 0 ;
 図5は、。     // ヘッダを修正
6。     SetClassLong(m_hWndを、GCL_HICON、( LONG)アイコン[I]);
 7      I ++は8      IF == I(4。 9。          I = 0 ;
 10      CFrameWndの::のOnTimer(nIDEvent);
 11 }

 

おすすめ

転載: www.cnblogs.com/sclu/p/11571469.html