MFC枚举窗口

去年七月份开始学C#,今年六月份因为公司的原因,重新学习MFC。
以前一直以为VC++编程很麻烦,现在越来越感觉到上手了;尽管VC++没有VS那样方便,MFC不像C#那样易上手,但从效率上讲MFC是很好的选择,只是动态库及多线程没有C#方便,这是比较郁闷的。
近来写QQ游戏的外挂,写了找茬的、连连看的,昨晚上写火拼俄罗斯的时出问题了,游戏窗口获取的不对,问个网友才知道栏题是“火拼俄罗斯方块”的窗口不是一个,所以得枚举窗口。
现在网上枚举窗口最多的就是EnumWindows,这是要回调函数的,回调的函数必须是全局的,或者静态的,对MFC来说太麻烦了。寻找窗口MFC用CWnd::FindWindow,对应的API是FindWindow;枚举窗口API是EnumWindows,MFC也应该有对应的啊。刚刚研究了一下发现一个好办法。

 CWnd* wnd = this;
 while(true)
 {
  if(wnd == NULL)
   break;
  CRect rect;
  wnd->GetWindowRect(&rect);
  CString str;
  wnd->GetWindowText(str);
  if(rect是你想要的窗口的大小&&str是你想要的窗口的标题)
  {
     break;
  }
  wnd = wnd->GetNextWindow(GW_HWNDNEXT);
 }
if(wnd != NULL)
{
  wnd对应的窗口就是你想要的
}

好久没写博客了,分享一下。
posted @ 2009-08-31 08:54  脱离语言  阅读(1173)  评论(0编辑  收藏  举报