MFC 窗口按钮的鼠标事件(对于中文和英文按钮的处理)问题

原创 2013年12月02日 14:37:54

对于英文的!!!:

 ClickButton( WINDOW_TITLE_REGISTRATION,_T("Continue") );

对于中文的按钮!!!:

 ClickButton( WINDOW_TITLE_REGISTRATION,_T("确定 or 取消") )

 

BOOL CWndHandleThread::ClickButton(CString windowTitle, CStringbutton)
{
 HWND hWnd = ::FindWindow(NULL,windowTitle);
 if( hWnd )
 {
  HWND hButton =::FindWindowEx(hWnd, NULL,NULL,button);
  if( !hButton )
  {
   returnfalse;
  }

  Sleep(2000);

  //将该窗口置顶
  HWND hForeWnd =NULL;        
  DWORDdwForeID;        
  DWORDdwCurID;        
  hForeWnd =::GetForegroundWindow(); //返回用户当前工作的窗口,前台窗口的句柄   
  dwCurID = ::GetCurrentThreadId();  //获取最近运行的线程的ID     
  dwForeID =::GetWindowThreadProcessId( hForeWnd,NULL ); //找出创建前台窗口的线程 
  ::AttachThreadInput( dwCurID,dwForeID, TRUE);//成功返回的话,连接了线程后,输入焦点、窗口激活、鼠标捕获、键盘状态以及输入队列状态都会进入共享状态

  BOOL bIsMinimized =::IsIconic(hWnd); //该函数确定给定窗口是否是最小化
  //如果该窗口最小化了,则恢复原状;
  if (bIsMinimized)
  {
   ::ShowWindow(hWnd,SW_RESTORE); //激活并显示窗口(置顶前提)
   Sleep(500);
  }

  //将该窗口置顶
  ::SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0, SWP_NOMOVE|SWP_NOSIZE); //重新设置窗口的参数
  Sleep(100);

  RECT rectMain;
  ::GetClientRect(hButton,&rectMain);//客户区

  POINT pt={0};
  pt.x = rectMain.left+(rectMain.right-rectMain.left)/2  ;
  pt.y = rectMain.top+(rectMain.bottom-rectMain.top)/2;
  ::ClientToScreen(hButton,&pt);//将用户指定的坐标或者点转换为屏幕坐标
  SetCursorPos(pt.x, pt.y);//移动光标到指定位置

  mouse_event(MOUSEEVENTF_LEFTDOWN,0, 0, 0,0); //鼠标事件的完成
  mouse_event(MOUSEEVENTF_LEFTUP,0, 0, 0,0);
 
  Sleep(100);
  ::SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//确认是否已经置顶窗口
  ::AttachThreadInput(dwCurID,dwForeID,FALSE); //撤消连接非共享输入队列

  return true;
 }

 return false;
}

MFC单文档窗口添加按钮控件

原文:http://blog.sina.com.cn/s/blog_6d0cbb0301018u1w.html 单文档的添加按钮不能像对话框直接拖按钮,需要手动添加。 在MFC...
  • qq_35040828
  • qq_35040828
  • 2016年06月20日 11:22
  • 1834

MFC对话框窗口使用GDI+给按钮贴图

最近要做一个有透明效果的按钮出来,先是大致学了PS教程,制作一个PNG格式的背景透明的按钮,如图1所示。然后使用GDI+进行贴图,最后要达到图2所示效果。开发环境是VS2010,MFC。 图...
  • babyKangaroo
  • babyKangaroo
  • 2015年01月16日 09:44
  • 1908

MFC去掉窗口右上方最大化最小化关闭按钮

MFC去掉窗口右上方最大化最小化关闭按钮
  • eickandy
  • eickandy
  • 2015年09月17日 08:53
  • 4257

MFC模拟点击其他程序的模态消息提示框的“确定”按钮

最近在尝试操作如何使用自己的程序来模拟操作其他程序,大体步骤就是把界面拆分开,获取句柄从而达到操作其他程序的目的,但是遇到一个问题就是当其他程序弹出一个消息提示框时,无法获取到它的句柄,所以程序进行到...
  • u011288190
  • u011288190
  • 2015年09月30日 14:42
  • 907

MFC 点击一个对话框按钮弹出另一个对话框

MFC 点击一个对话框按钮弹出另一个对话框 vs2010中 1.在资源中添加一个对话框  右击Dialog | Insert dialog 2.在对话框上添加自己需...
  • liyun123gx
  • liyun123gx
  • 2014年02月12日 17:47
  • 3070

MFC主窗口出现之前弹出子窗口与子窗口交互问题

本文介绍MFC窗口应用程序如何在主窗口出来之前弹出子窗口,并与主窗口进行数据交互。...
  • Chuxiangming1993
  • Chuxiangming1993
  • 2015年05月12日 18:30
  • 1404

MFC中实现单击按钮关闭单文档系统

摘自:xdhywj的专栏     http://blog.csdn.net/xdhywj/article/details/7986320   一、方法一:通过找到主窗口的句柄,然后向主窗口发送...
  • xiaojun111111
  • xiaojun111111
  • 2015年05月04日 09:46
  • 651

MFC定义圆角矩形按钮

使用仅需两步! 第一步: CButton替换为CBtnNoImg。 第二步: 设置各个状态的颜色,和字体(字体设置可选) { CFont *pFont = new CFont(); pFon...
  • lee353086
  • lee353086
  • 2015年03月23日 11:58
  • 3248

MFC中改变按钮颜色的方法

1.使用CMFCButton类 MFC自带的MFC Button Control控件等按钮可以修改颜色,还能添加图片,设置字体颜色等。这些控件就在工具箱的下面,前面带MFC开头的那些。 在需要改颜...
  • zxccaoya
  • zxccaoya
  • 2017年01月06日 20:58
  • 6696

vs2010MFC框架下,点击按钮弹出窗口,在子窗口中输入值,将这个值向主窗口传递

博主刚开始接触MFC,前几天遇到这个问题,本想通过全局变量的方法,但没有成功,在网上查阅过一些资料后,自己摸索的解决方法。如有问题和错误可直接在下方评论。 1.先插入一个对话框,如下图所示的界面,右键...
  • ma7856728
  • ma7856728
  • 2017年12月17日 10:28
  • 184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 窗口按钮的鼠标事件(对于中文和英文按钮的处理)问题
举报原因:
原因补充:

(最多只允许输入30个字)