灰色按键激活小程序

/************************************************************************/
/* 灰色按键激活
  
  
参考API:
 SetWindowPos GetForegroundWindow EnumChildWindows
  
               2011/2/23 bysdy915
  
-------------------------------------------------------------------------
*/
/************************************************************************/
#include   <windows.h>  
#include   <Strsafe.h>
#include   "resource.h" 
  
  
HINSTANCE  g_hInstance;
HANDLE  g_hEvent;
  
  
LRESULT  CALLBACK  DlgProc(HWND,UINT,WPARAM,LPARAM); 
  
int  WINAPI   WinMain(HINSTANCE   hInstance,   HINSTANCE   hPrevInstance,  
        LPSTR   lpszCmdLine,   int   nCmdShow   ) 
  
{  
 g_hInstance   =   hInstance; 
  
 DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgProc,0); 
  
 return    0;  
} 
  
  
//EnumChildWindows函数的回调函数
BOOLCALLBACK EnumChildProc(HWNDhwndChild, LPARAMlParam)
{
 if(!IsWindowEnabled(hwndChild))
 {
  EnableWindow(hwndChild,TRUE);
  
  returnTRUE;
 }
}
  
//激活功能执行线程
void_ActiveGbutton(HWNDhwnd)
{
 HWNDhFirstWindow=NULL,hTemp=NULL;
 charcbuff[100]={0};
  
 while(1)
 {
  
  WaitForSingleObject(g_hEvent,INFINITE);
  
  hTemp = GetForegroundWindow();
  
  //相同窗口已经激活
  if(hTemp==hwnd||hFirstWindow==hTemp||hTemp==NULL){
   Sleep(50);
   continue;
  }
  hFirstWindow = hTemp;
  
  //sprintf(cbuff,"handle = %d",hFirstWindow);
  //MessageBoxA(NULL,cbuff,NULL,MB_OK);
  
  //枚举子窗口
   EnumChildWindows(hFirstWindow,(WNDENUMPROC)EnumChildProc, NULL);
 }
 return;
}
  
LRESULT  CALLBACK   DlgProc(HWND   hwnd,UINT   uMsg,WPARAM   wParam,LPARAM   lParam)  
{  
 HICON  hIcon;  
 staticintbActive=FALSE;
 switch(uMsg)  
 {  
 case  WM_INITDIALOG:  
  //hIcon   =  LoadIcon(g_hInstance,MAKEINTRESOURCE(MYICON));  
  //SetClassLong(hwnd,GCL_HICON,(long)hIcon); 
  
  //对话框置顶
  SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE);
  
  g_hEvent = CreateEventA(NULL,TRUE,FALSE,NULL);
  //建立激活线程
  CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_ActiveGbutton,hwnd,0,NULL);
  
  
  break;  
 case  WM_COMMAND:  
  {  
   switch(wParam)  
   {  
   case   IDOK: 
   //开始执行灰化按钮的激活
  
    //改变按键显示
    SetDlgItemTextA(hwnd,IDOK,bActive==FALSE?"Stop":"Start");
  
    bActive=!bActive;
      
    if(bActive==TRUE)
     SetEvent(g_hEvent);
    else
     ResetEvent(g_hEvent);
  
    break;
  
   case   IDCANCEL:  
    EndDialog(hwnd,1);  
    break;  
   }  
  }  
  break;  
 }  
 return  false;  
}
 

基于STM32设计的数字示波器全套资料(原理图、PCB图、源代码) 硬件平台: 主控器:STM32F103ZET6 64K RAM 512K ROM 屏幕器:SSD1963 分辨率:480*272 16位色 触摸屏:TSC2046 模拟电路: OP-TL084 OP-U741 SW-CD4051 CMP-LM311 PWR-LM7805 -LM7905 -MC34063 -AMS1117-3.3 DRT-ULN2003 6.继电器:信号继电器 7.电源:DC +12V 软件平台: 开发环境:RealView MDK-ARM uVision4.10 C编译器:ARMCC ASM编译器:ARMASM 连机器:ARMLINK 实时内核:UC/OS-II 2.9实时操作系统 GUI内核:uC/GUI 3.9图形用户接口 底层驱动:各个外设驱动程序 数字示波器功能: 波形发生器:使用STM32一路DA实现正弦,三角波,方波,白噪声输出。 任意一种波形幅值在0-3.3V任意可调、频率在一定范围任意可调、方波占空比可调。调节选项可以通过触摸屏完成设置。 SD卡存储: SD卡波形存储输出,能够对当前屏幕截屏,以JPG格式存储在SD卡上。能够存储1S内的波形数据,可以随时调用查看。 数据传输:用C#编写上位机,通过串口完成对下位机的控制。(1)实现STOP/RUN功能(2)输出波形电压、时间参数(3)控制截屏(4)控制波形发生器(5)控制完成FFT(6)波形的存储和显示 图形接口: UCGUI 水平扫速: 250 ns*、500ns、1μs、5 μs、10μs、50μs、500 μs、5ms 、50ms 垂直电压灵敏度:10mV/div, 20mV/div, 50mV/div, 0.1V/div, 0,2V/div, 0.5V/div, 1V/div,2V/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值