筆記 在單文件中新增「右鍵選單」和「對話方塊」資源

2022-09-12 04:54:08 字數 1162 閱讀 1938

一、新增「右鍵選單」資源。

如題所示,選單也是一種資源,所以:

第一步:在資源檢視中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,靜態文字框,編輯框...