世界杯2022是哪个国家_国足世界杯出线 - dtfyjq.com

  • 首页
  • 北京世界杯
  • 世界杯新秀
  • 世界杯16强名单

最新发表

  • 非洲钻石产地历史:第一部分
  • 明星丝袜选色大揭秘:从杨幂到刘雯,时尚灾难的背后真相!
  • 女世界杯 挪威女足 VS 英格兰女足
  • 分期买车比全款贵多少
  • dnf神器传承哪个好
  • 足球点球技巧教学指南(掌握点球技巧,提高罚球命中率)
  • 微信公众号跨号支付
  • 19元腾讯王卡套餐值不值?实测5类人最适合办
  • HMS Core(华为移动服务)介绍
  • 术士(羁绊)

友情链接

Copyright © 2022 世界杯2022是哪个国家_国足世界杯出线 - dtfyjq.com All Rights Reserved.

获取对话框句柄

世界杯新秀 · 2025-10-25 01:00:47

简介:

获取主对话框和子对话框的句柄,子对话框通过FindWindow。我之所以会用这个函数,其实我是有这个需求,那就是我需要在一个对话框的通过AfxBeginThread创建的线程中调用另一个对话框函数。废话少数,如下:

1.主对话框

在其它对话框或者线程调用时,目前有以下几种常用的方法

1)通过获取对话框的指针方式

CTcpAsynSDlg *pMainDlg = (CTcpAsynSDlg*)AfxGetApp()->GetMainWnd();

pMainDlg->m_hWnd; //就是指向主对话框的句柄。

2)调用GetParent()

CWnd* pWnd=this->GetParent();

pWnd->m_hWnd;可以获得父窗口句柄。

3)调用AfxGetMainWnd()

AfxGetMainWnd()-> m_hWnd;

AfxGetMainWnd(); 返回的是m_pMainWnd

2.子对话框

1)使用FindWindow()

CLogReadDlg* g_pLogReadDlgWnd; HWND hWnd = ::FindWindow(NULL,"日志");

//HWND hWnd = ::FindWindow("#32770","日志");

g_pLogReadDlgWnd = (CLogReadDlg*)FromHandle(hWnd);

顺便通过FromHandle还可以获得对话框指针。

2)详解

MSDN:

HWND FindWindow(

LPCTSTR lpClassName,

LPCTSTR lpWindowName );

很多人误以为第一个参数是类名之类的,其实是错误的,不要被变量名迷惑。

通过VC工具Spy++,如图可以看到使用方法。所有的对话框窗口类名都是#32770。

所以也可以调用HWND hWnd = ::FindWindow("#32770","日志");

但是这种不直观,最简单的方法是HWND hWnd = ::FindWindow(NULL,"日志");第二个参数就是你的窗口名,简单的理解就是对话框的标题。

3)注意

很多人对FindWindow()第一个参数没有完全理解,建议使用HWND hWnd = ::FindWindow(NULL,"日志");

把第二个参数替换成你们自己的标题名即可。


Win10和Win7哪个好用?系统选择与优化全攻略
《蝜蝂傳》(柳宗元)古文翻譯