MFC MDI GetActiveView() 為空
今天寫了一個多文件的應用程式,要響應選單訊息。
訊息是在MainFrame中響應的。然後對當前的活動視窗進行修改。
結果我直接呼叫GetActiveView()返回的一直是空。
我上網搜了一下沒有找到解決辦法,後來查了一下MSDN才發現對應多文件(MDI)下這麼用是不行的。需要先獲得CMDIChildWnd然後在通過CMDIChildWnd獲得view才行。
程式碼如下;
CMDIChildWnd *pChild = static_cast<CMDIChildWnd *>(GetActiveFrame());
if (pChild)
{
CYourView *pView = NULL;
pView = static_cast<CYourView*>(pChild->GetActiveView());
if (pView)
{
//do something
}
}
另外還有個問題,就是我新增的選單一開始預設沒有顯示,需要在點選一次才能顯示。
解決的辦法是在MainFrame的create函式裡面的下面部分
// 啟用選單個性化(最近使用的命令)
// TODO: 定義您自己的基本命令,確保每個下拉選單至少有一個基本命令。
CList<UINT, UINT> lstBasicCommands;
裡面加上預設要顯示的選單命令ID:
lstBasicCommands.AddTail(ID_YOURID);
相關文章
- MFC實現MDI多檢視介面 (一)
- VC MFC SDI/MDI框架各部分指標獲取方式框架指標
- 多文件介面(MDI)(轉)
- c# mdi多窗體C#
- Java判斷欄位是否為空,為空賦值 ?Java賦值
- MFC框架框架
- MFC打包
- 作不能為空 javascriptJavaScript
- 關於MDI檔案與Microsoft Office Document ImagingROS
- MFC: 檔案
- MFC詳解
- oracle多列為空與多列不為空的區別小示例Oracle
- C#學習筆記——MDI窗體(多文件介面)C#筆記
- 判斷字串是否為空字串
- 判斷字串為空方法字串
- “undefined 為空或不是物件”Undefined物件
- 可空型別為什麼可以為空?也許會被面試到哦。。。型別面試
- MFC學習(五)
- No MFC,Only API (轉)API
- mfc程式流程 (轉)C程式
- 攻防世界-mfc逆向
- 為什麼 php empty 函式判斷結果為空,但實際值卻為非空PHP函式
- 遷移SYSTEM表空間為本地管理表空間
- Visual C++/MFC 指南(4):MFC 簡要指點 (轉)C++
- js判斷字串是否為空JS字串
- mysql如何判斷是否為空MySql
- JavaScript判斷字串是否為空JavaScript字串
- java判斷字串是否為空Java字串
- js判斷物件是否為空JS物件
- 判斷物件值是否為空物件
- java判斷物件是否為空Java物件
- 深入淺出空間索引:為什麼需要空間索引索引
- 表中已有資料,將表中某個欄位為空的改為非空
- MFC——SkinMagic使用詳解
- MFC程式設計(五)C程式程式設計
- MFC程式設計(四)C程式程式設計
- MFC程式設計(二)C程式程式設計
- MFC程式設計(一)C程式程式設計