MFC TabControl外掛 非對話方塊類中獲得主視窗和子視窗的指標
前言
在非對話方塊類中無法使用如(CParentDlg*)或者(CChildDlg*)進行強制轉換。
所以一般通過一下來程式碼來實現通過獲取CParentDlg的指標進行操作:
CWnd* m_pParentDialog = AfxGetApp()->m_pMainWnd; //Get parent dialog pointer directly
CEdit* pEdit = (CEdit*)m_pParentDialog->GetDlgItem(/*Edit Item ID*/);
pEdit->SetWindowText(_T("Done"));
GetDlgItem();可以傳入子對話方塊的ID如下:
CEdit* pEdit = (CEdit*)m_pParentDialog->GetDlgItem(/*child dialog ID*/)->GetDlgItem(/*Edit Item ID*/);
但在Tab控制元件中無法使用,得到指標為空,所以我們通過設定全域性變數,再在相應對話方塊的初始化函式中給全域性變數賦值,從而儲存對話方塊的指標或控制程式碼。
一、構建標頭檔案和原始檔
前言
定義兩個對話方塊,主對話方塊:CParentDlg,子對話方塊CChildDlg。
1.構建標頭檔案CPublic.h並新增到專案中
CPublic.h中程式碼
#pragma once
#include "pch.h"
class CPublic
{
public:
static HWND CPublic::m_hWndChlidDialog;
public:
CPublic(void);
~CPublic(void);
};
2.構建原始檔CPublic.cpp並新增到專案中
CPublic.cpp中程式碼
#include "pch.h"
#include "CPublic.h"
HWND CPublic::m_hWndChlidDialog= 0;
CPublic::CPublic(void)
{
}
CPublic::~CPublic(void)
{
}
二、儲存對話方塊指標
CChildDlg.cpp中程式碼:
BOOL CChildDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
//TODO: 在此新增額外的初始化
CPublic::m_hWndChlidDialog= this->m_hWnd;
}
這裡我們就得到了CChildDlg的控制程式碼,並儲存在m_hWndChlidDialog中。
三、使用
在非對話方塊的類中
CWnd* m_pChildDialog = CWnd::FromHandle(CPublic::m_hWndChlidDialog);//convert handle of child dialog to pointer
CEdit* pEdit = (CEdit*)m_pChildDialog->GetDlgItem(/*Edit Item ID*/);
pEdit->SetWindowText(_T("Done"));
總結
相關文章
- 視窗和對話方塊居中對齊
- 如何在mfc對話方塊中新增一個顯示網頁的視窗 .網頁
- JavaScript視窗功能指南之建立對話方塊 (轉)JavaScript
- JavaScript - 模式視窗和非模式視窗JavaScript模式
- 討論關閉子視窗,重新整理父視窗(非模式視窗)模式
- 關於父視窗獲取跨域iframe子視窗中的元素跨域
- MFC操作父視窗的子控制元件控制元件
- 【C++】【MFC】模態和非模態對話方塊C++
- js如何在子視窗中關閉父視窗JS
- c#中的模態對話方塊和非模態對話方塊C#
- Hystrix指標視窗實現原理指標
- jQuery iframe子視窗獲取父視窗元素簡單介紹jQuery
- Qt入門(14)——父視窗部件和子視窗部件QT
- C#中關閉子視窗而不釋放子視窗物件的方法C#物件
- [MFC]選擇目錄對話方塊和選擇檔案對話方塊
- jQuery在子視窗如何操作父視窗元素jQuery
- QT視窗類QT
- javascript在iframe子元素中獲取父視窗元素JavaScript
- 工作列視窗以及其子視窗結構 (轉)
- JS彈出視窗視窗的位置和大小JS
- 重貼:MFC類中獲得其它類指標 (轉)指標
- 非視窗類中使用定時器的方法 (轉)定時器
- 15款最好的 jQuery Modal(模態視窗)外掛jQuery
- 在非主執行緒中建立視窗執行緒
- 在不把視窗設定成當前視窗的條件下,對視窗進行操作。
- 非視窗類中使用定時器的方法(一) (轉)定時器
- Flink的滾動視窗、會話視窗、滑動視窗及其應用會話
- 在Mac中如何用⌘鍵拖拽非使用中的視窗?Mac
- jQuery獲取瀏覽器視窗和文件視窗的高度程式碼jQuery瀏覽器
- mysql視窗函式中的滑動視窗MySql函式
- AlertDialog 自定義對話方塊檢視
- 子視窗控制元件(轉)控制元件
- javascript獲取window視窗的尺寸JavaScript
- [python爬蟲] Selenium高階篇之視窗移動、彈出對話方塊自登入Python爬蟲
- FineUI小技巧(5)向子視窗傳值,向父視窗傳值UI
- js漸變彈出視窗和關閉視窗效果JS
- JavaScript視窗功能指南之命名視窗和框架 (轉)JavaScript框架
- Qt下的模態和非模態對話方塊QT