mfc 获取按钮句柄

mfc 获取按钮句柄,第1张

楼上的别乱教

GetDlgltem是用来获取子窗口或者控件的指针的

关于如何在MFC中获取控件句柄

在win32利用API来编程时

我们是通过hwnd

=

CreateWindow(

)来建立一个窗体,同时返回一个句柄

MFC中的窗口类和控件类都是又一个基类CWnd派生出来的

MFC里封装了CreateWindow(

)的过程

所以CWnd类本来自己就有一个句柄成员为m_hWnd

所以只要获得了窗口或者控件的指针

就可以调用成员变量m_hWnd来获取句柄

例如在当前窗口或者控件下 *** 作

就可以直接用this指针

this->m_hWnd

另外

GetSafeHwnd

这个函数也可以试试

具体情况具体分析

具体用法看MSDN吧

记住一点的是

MFC中的消息映射的过程就是通过指针与句柄的映射来实现的

CWnd pWnd = GetDlgItem(ID_); // 取得控件的指针

HWND hwnd = pWnd->GetSafeHwnd(); // 取得控件的句柄

如果子窗口是模式对话框,可以在子窗口关闭之后,获取子对话框中的值。如:CSubDlg subDlg;if(IDOK == subDlgDoModel()){ int n = subDlgm_nValue;}发送消息的话是这样:GetParent()->SendMessage(MESSAGE_ID, lParam, wParam); MESSAGE_ID是你的自定义消息ID或者干脆对GetParent()进行强制转换后直接调用父窗口的函数,但不推荐这样做。比如父窗口 CFatherDlg; 中有一函数 void Action(int n);((CFatherDlg)GetParent())->Action(m_nValue); // 直接调用父类的函数

它涉及BeginPaint和EndPaint两个函数,这两个函数需要窗口句柄(作为参数传给窗口消息处理程序)和PAINTSTRUCT结构的变量(在WINUSERH表头文件中定义)的地址为参数。Windows程序写作者通常把这一结构变量命名为ps并且在窗口消息处理程序中定义它:PAINTSTRUCT ps ;在处理WM_PAINT消息时,窗口消息处理程序首先呼叫BeginPaint。BeginPaint函数一般在准备绘制时导致无效区域的背景被擦除。该函数也填入ps结构的字段。BeginPaint传回的值是设备内容句柄,这一传回值通常被保存在叫做hdc的变量中。它在窗口消息处理程序中的定义如下:HDC hdc;HDC数据型态定义为32位的无正负号整数。然后,程序就可以使用需要设备内容句柄的TextOut等GDI函数。呼叫EndPaint即可释放设备内容句柄。方法二虽然最好是在处理WM_PAINT消息处理期间更新整个显示区域,但是您也会发现在处理非WM_PAINT消息处理期间绘制显示区域的某个部分也是非常有用的。或者您需要将设备内容句柄用于其它目的,如取得设备内容的信息。要得到窗口显示区域的设备内容句柄,可以呼叫GetDC来取得句柄,在使用完后呼叫ReleaseDC:hdc = GetDC (hwnd) ;使用GDI函数ReleaseDC (hwnd, hdc) ;在MFC中,通过如下方法获得名柄:HDC hdc;hdc = CreateDC(0,0,0,0);//获得设备句柄

 CWnd pWnd=CWnd::FindWindow(NULL,_T("EightPuzzle"));//获取目标窗口

 pWnd->SendMessage(/消息的代号/,NULL,0);//发送消息

以上就是关于mfc 获取按钮句柄全部的内容,包括:mfc 获取按钮句柄、MFC如何获得窗口中控件的句柄、MFC 父窗口获取子窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9513945.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存