重新開始vc6/mfc學習——3.定時器、對話方塊以及選單的初步使用
清華出版的davis chapman著,駱長樂譯的《學用visual c++ 6.0》,買了大概有7,8年了,從來沒有看完過,這是一本循序漸進,注重實用的書籍,我個人認為不錯,只是不知道在vs2010都已經發布的今天,再學習vc6是不是太落後?總之,從遙遠的中國帶著它來到斯里蘭卡,不好好看看真是對不起這長途奔波,通過簡單的例子倒是也能編出簡單合用的程式,也許對我來說這已經足夠了?
閒話不說,繼續做筆記。第三課的定時器程式稍微簡單些,別忘了在resource view檢視最上面的resources上右擊,選擇resource symblos,為計時器建立自己的ID,然後在程式中通過SetTimer(ID,timeinterval,NULL)
第四課為對話方塊的應用。首先提到了MessageBox函式的多種風格:MessageBox("提示文字","提示標題",MB_YESNO|MB_ICONQUESTION)即可得到一個詢問yes or no的問題框,切帶一個問號的小圖示,返回值是int型的IDYES或IDNO。
建立新對話方塊的步驟如下:還是在resource view檢視下,右擊頂部第二層的dialog
CFileDlg建立一個檔案對話方塊,引數為true時是“開啟”檔案對話方塊,為false是為“另存為”對話方塊。
CAboutDlg建立一個about對話方塊,其實直接呼叫本視窗的About對話方塊。
對話方塊例項的domal成員l函式返回值為IDOK時,代表著這個子對話方塊的ok按鈕被按下,你就可以訪問其變數進行操作了。
第五課:選單的使用。
首先要建立選單:還是在resource view裡,右擊resource,選擇insert,然後選擇menu即可。在對各menu項定製(主要是起id和文字)之後,選擇對話方塊屬性的general標籤頁裡,找到menu下拉列表,選擇剛才建立的選單主ID(選單主ID在resource view的menu分資料夾裡可以看到),就會為這個對話方塊指定一個系統選單。再在該選單上選擇classwizard,會提示為選單加入已存在的類還是建立新類,選擇前者,加入到dlg類即可。最後針對選單項的COMMAND訊息新增函式並程式設計即可使這些選單項可用。
彈出選單/上下文選單需要用wm_contextmenu訊息來驅動,對該訊息的command動作程式設計即可。
有兩種方法是用上下文選單,一種是直接呼叫上文提到已經設為本對話方塊系統選單,另一種是用剛才提到的方法建立一個新選單備用。
1.呼叫系統選單的方法:
CMenu *menu;//建立一個cmenu類的指標變數
menu=GetMenu();//使用getmenu函式取得系統選單的指標
menu->GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN|TPM_LEFTBUTTON,point.x,point.y,this);
//GetSubMenu(0)取得第一級子選單的指標,而用這個指標的成員函式TrackPopupMenu來呈現。
//函式的第一個引數前半部分決定選單從當前游標的哪面出現,後半部分則決定右鍵或左鍵來觸發這個彈出選單。
point則是選單出現的座標位置,用下面方法獲取:
CPoint point;
GetCursorPos(&point);
2.呼叫建立好的備用選單:
CMenu menu,*smenu;
menu.LoadMenu(IDR_MENU2);//這裡的idr_menu2即為剛才建立好備用的選單主ID
smenu = menu.GetSubMenu(0);//取得第一級子選單的指標
smenu->TrackPopupMenu(....);//如法呈現選單即可,當然在前面需要獲取滑鼠當前游標的座標位置不提。
×最後,這篇部落格對選單的更多操作做了列舉: