VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 262|回复: 1

VC++高级班之窗口篇-[6]打造自己的“按钮激活专家”

[复制链接]
01_avatar_middle
online_admins admin 发表于 2018-2-26 00:15:13 | 显示全部楼层 |阅读模式
------------------------------------------ Begin ----------------------------------------
①、按钮激活专家介绍:
可以突破灰色(禁用)按钮的限制,是一款很实用的小巧软件。
大家发现有些没有注册的软件有些什么确定、激活的按钮是不能点的,所以这个软件可以去除软件不能点击的部位,操作十分简单!
===================================================
②、主要用到的函数:
SetTimer、WindowFromPoint、EnumChildWindows、EnableWindow 等!
大部分函数以前都给大家讲过的!
===================================================
③、对话框样式的修改及控件的添加;
===================================================
④、添加置顶选项代码:
  1. void CDlgTestDlg::OnBnClickedTopmostCheck()
  2. {
  3.         CButton *pTopMostCheck = (CButton *)GetDlgItem(IDC_TOPMOST_CHECK);
  4.         int iCheck = pTopMostCheck->GetCheck();
  5.         if (iCheck == BST_CHECKED){
  6.                 SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
  7.         }else{
  8.                 SetWindowPos(&CWnd::wndNoTopMost, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
  9.         }
  10. }
复制代码

===================================================
⑤、添加激活按钮响应函数:
  1. void CDlgTestDlg::OnBnClickedStartActive()
  2. {
  3.         static BOOL bStart = FALSE;
  4.         if(bStart == FALSE) {
  5.                 bStart = TRUE;
  6.                 GetDlgItem(IDC_START_ACTIVE)->SetWindowText(_T("停止!"));
  7.                 SetTimer(1, 200, NULL);
  8.         } else {
  9.                 bStart = FALSE;
  10.                 GetDlgItem(IDC_START_ACTIVE)->SetWindowText(_T("开始激活!"));
  11.                 KillTimer(1);
  12.         }
  13. }
复制代码


⑥、添加定时器响应函数:
  1. void CDlgTestDlg::OnTimer(UINT_PTR nIDEvent)
  2. {
  3.         TCHAR szTitle[MAX_PATH] = {0};
  4.         HWND hTopWnd = ::GetForegroundWindow();
  5.         ::GetWindowText(hTopWnd, szTitle, MAX_PATH);
  6.         SetDlgItemText(IDC_STATIC_SHOW, szTitle);

  7.         EnumChildWindows(hTopWnd, EnumChildProc, NULL);

  8.         CDialog::OnTimer(nIDEvent);
  9. }
复制代码


⑦、添加枚举子窗口回调函数:
  1. BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam)
  2. {
  3.         if( !IsWindowEnabled(hWnd) ){
  4.                 EnableWindow(hWnd, TRUE);
  5.         }
  6.         return TRUE;
  7. }
复制代码


相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
教程介绍及详情请见:http://www.cctry.com/static/vip/index.html
VC驿站Vip会员详情请见:http://www.cctry.com/static/vip/index.html




上一篇:VC++高级班之窗口篇-[5]Windows消息的发送
下一篇:VC++高级班之窗口篇-[7]打造自己的星号密码查看器

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-16 21:24

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表