QQ登录

只需一步,快速开始

224上位机VC MFC修改指定程序按钮编辑等控件的文本

[ 复制链接 ]

224上位机VC MFC修改指定程序按钮编辑等控件的文本

224上位机VC MFC修改指定程序按钮编辑等控件的文本
224上位机VC MFC修改指定程序按钮编辑等控件的文本
功能展示
有时我们设备工控机上运行的程序需要进行改造,我们得设置其界面按钮,编辑框文本内容,组合框选项等等,我们得自己编写程序更改软件界面来达到我们的目地,当前例程实现指定已打开窗口界面控件的设置功能,效果如图,指定已打开的程序窗口,再指定要设定的窗口内的控件名就可以进行设置;
要点提示
指定窗口的查找可以通过函数EnumWindows()实现,窗口内控件的查找可以通过函数EnumChildWindows()实现;
EnumWindows()函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数。回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。 函数原型 BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAMlParam); 参数: lpEnumFunc:指向一个应用程序定义的回调函数指针,请参看EnumWindowsProc。 lPararm:指定一个传递给回调函数的应用程序定义值。
EnumChildWindows()函数原型:
BOOL EnumChildWindows(HWND hWndParent,WNDENUMPROClpEnumFunc, LPARAM lParam);
参数说明:
HWND hWndParent 父窗口句柄
WNDENUMPROC lpEnumFunc 回调函数的地址
LPARAM lParam 自定义的参数
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框ID为IDC_EDIT3用于指定已打开程序窗口名,拖拽一编辑框ID为IDC_EDIT1,指定窗口的按钮名(其他控件参考代码设置),拖拽一编辑框ID为IDC_EDIT4,用于设置新名称;
3.拖拽一按钮控件<执行设置>用于设置控件名称
  1. void CGkbc8Dlg::OnSet()
  2. {
  3.         GetDlgItemText(IDC_EDIT3,sToFindWndTitle);//获得要查找的窗口标题
  4.         GetDlgItemText(IDC_EDIT1,sToFindBtnTitle);//获得要查找的按钮标题
  5.         //
  6.         CString sBtnName;
  7.         GetDlgItemText(IDC_EDIT4,sBtnName);
  8.         EnumWindows(EnumWindowsProc,(LPARAM)sBtnName.GetBuffer(0));//遍历已打开的程序窗口名
  9. }
复制代码
4.再在此函数前添加两回调函数及两全局变量
CString sToFindWndTitle;
CString sToFindBtnTitle;
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam );
BOOL CALLBACK EnumChildWindowsProc(HWND hwnd, LPARAMlParam);
  1. BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam )
  2. {
  3.         CString sWndTitle;
  4.         GetWindowText(hwnd,sWndTitle.GetBuffer(0),MAX_PATH);
  5.         if (sWndTitle == sToFindWndTitle)//找到指定窗口名后,查找窗口的子窗口
  6.         {
  7.                 EnumChildWindows(hwnd,EnumChildWindowsProc,lParam);//遍历此窗口的全部子窗口
  8.         }
  9.         return TRUE;        
  10. }
  11. BOOL CALLBACK EnumChildWindowsProc(HWND hwnd, LPARAM lParam)
  12. {
  13.         /*例程以按钮控件为例,其他控件举一仿三学习*/
  14.         CHAR ch[MAX_PATH];
  15.         GetClassName(hwnd,ch,MAX_PATH);//获取窗口的类名
  16.         CString sClassName(ch);
  17.         CString sCtrlName;
  18.         if(sClassName=="Button")
  19.         {
  20.                 ::SendMessage(hwnd,WM_GETTEXT,100,(LPARAM)sCtrlName.GetBuffer(0));//获取按钮标题
  21.                 if (sCtrlName == sToFindBtnTitle)//按钮标题为 工控编程吧
  22.                 {        
  23.                         ::SendMessage(hwnd,WM_SETTEXT,0,lParam);//设置按钮标题为指定文本
  24.                 }
  25.         }
  26.         else if(sClassName=="Static")
  27.         {}
  28.         else if(sClassName=="ComboBox")
  29.         { }
  30.         else if(sClassName=="Edit")
  31.         { }
  32.         else if(sClassName=="ListBox")
  33.         { }
  34.         else if(sClassName=="RichEdit")
  35.         { }
  36.         return TRUE;
  37. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:224.上位机VC MFC修改指定程序按钮编辑等控件的文本.rar 
文件大小:157.28 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索