一、新增「右鍵選單」資源。
如題所示,選單也是一種資源,所以:
第一步:在資源檢視中new乙個選單menu,屬性中設定id(此處為id_mymenu)。在選單上新增子項並設定id。
第二步:載入選單,在cmainframe中新增相應訊息:
void cmainframe::oncontextmenu(cwnd* /*pwnd*/, cpoint point)
第三步:開啟選單資源單擊滑鼠右鍵,新增「事件處理程式」。可以根據不同的需要新增不同的響應函式。
注意:新增的時候會選擇類,如果想要在view中響應的話,就選擇view。
二、新增「對話方塊」資源
第一步:在資源檢視中new乙個dialog,設定id。
第二步:右鍵,給這個對話方塊建立乙個類。
第三步:在view中使用對話方塊。**如下:
void c***view::onalllayer()
附加一:在dialog中獲取doc中的成員變數
cmainframe *pframe=(cmainframe*)afxgetmainwnd();//獲取框架視窗
cgraphicsengineshowdoc *pdoc=(cgraphicsengineshowdoc *)pframe->getactivedocument();//獲取文件
pdoc->m_ap->create(m_name);//使用文件中的成員變數m_ap
當然了,如果你忘記包含標頭檔案,依然會出錯!這裡需要的標頭檔案有:
#include "mainfrm.h"
#include "***doc.h"
#include "***view.h"
#include "f:\***\ff\ccc\eee\m_ap所屬類.h"
附加二:對話方塊的初始化問題
cwnd繼承來的視窗,初始化一般是給wm_create訊息新增響應函式oncreate()來實現的。
那麼dialog呢?它上面的控制項可不止乙個啊,如何有序初始化呢?到這裡,應該想到重寫虛函式了。
在標頭檔案中宣告: bool oninitdialog();
在原始檔中實現:(bool和true是windows自己定義的,實際上是int型;bool和true是c++語法中的型別變數,取值只有0和1。)
bool cclayerdlg::oninitdialog()
在單文件中插入對話方塊
由於需要在單文件中輸入東西,所以學習一下檢視分割的些許內容。1.首先,在mainfrm.h中插入csplitterwnd m splitter protected 控制項條嵌入成員 c m wnd cstatusbar m wndstatusbar csplitterwnd m splitter 生...
筆記 在堆上和棧上建立對話方塊物件
1 在棧上建立對話方塊 qdialog dialog this 引用時用點.dialog.setwindowtitle tr dialog.exec 這是採用模態對話方塊 dialog.show 這是採用非模態對話方塊,而當物件建立在棧上,非 模態對話方塊會一閃消失這是因為,show 函式不會阻塞當...
vs2010mfc單文件中新增對話方塊中的控制項
今天才發現,原來mfc中有個叫formview的view是乙個和dialog一樣的view,他可以用來新增dialog中的控制項。所以只要將單文件拆分成兩個view,乙個是本身的view,另乙個是formview,這樣就可以在formview中新增對話方塊中的控制項如button,靜態文字框,編輯框...