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"));
總結
相關文章
- 關於父視窗獲取跨域iframe子視窗中的元素跨域
- 【C++】【MFC】模態和非模態對話方塊C++
- Flink的滾動視窗、會話視窗、滑動視窗及其應用會話
- 滑動視窗與雙指標指標
- Hystrix指標視窗實現原理指標
- C#中關閉子視窗而不釋放子視窗物件的方法C#物件
- QT視窗類QT
- dotnet 在 UNO 裡獲取 X11 視窗指標的方法指標
- mysql視窗函式中的滑動視窗MySql函式
- 非啟用視窗(Inactive Window)
- 在非主執行緒中建立視窗執行緒
- 在Mac中如何用⌘鍵拖拽非使用中的視窗?Mac
- Bootstrap4動態模態視窗jquery外掛bootjQuery
- dotnet 如何從 Gtk 3 的視窗到對應的 X11 視窗
- 視窗
- 【Qt 專欄】檔案對話方塊 檔案的彈窗選擇-QFileDialogQT
- Go Qt5 建立空白視窗、視窗居中及關閉視窗事件GoQT事件
- Windows API視窗程式設計 - 空白視窗WindowsAPI程式設計
- LC演算法技巧總結(二):雙指標和滑動視窗技巧演算法指標
- 拆分視窗
- 聊天視窗
- 視窗事件事件
- 模態和非模態對話方塊(簡單易懂!)
- Text Messages for Mac(簡訊社交聊天彈窗對話氣泡fcpx外掛)Mac
- react.js自定義pc桌面端對話方塊|react仿layer彈窗ReactJS
- 視窗程式的框架框架
- vue 新視窗開啟外連結Vue
- Avalonia 11.1 獲取平臺呼叫的視窗的方法
- layer父介面呼叫子彈窗的方法和獲取子彈窗的元素值總結
- React中的模式對話方塊React模式
- 去掉vs中的console的黑視窗
- 彈出視窗
- 視窗程式框架框架
- 瀏覽器的視窗位置和大小瀏覽器
- SQL視窗分析函式使用詳解系列三之偏移量類視窗函式SQL函式
- pyqt5建立主視窗(介紹視窗型別)QT型別
- 圖片彈窗和下載彈窗wordpress外掛下載-Facebox download
- 擁塞視窗-傳送方主動限制流量