MFC 点点滴滴

MFC 应用程序退出代码:

1、PostQuitMessage(0);//最常用

2、PostMessage(WM_QUIT,0,0);//最常用

3、::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用

::PostMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用

4、ExitProcess(0);//注意使用时先释放分配的内存,以免造成内存泄露

exit(0) ;//正常终止程序; exit(非0)非正常终止程序
5、向主窗口发送WM_CLOSE消息       
SendMessage(WM_CLOSE); 
6、如果要在其它类关闭应用程序,则 

AfxGetMainWnd->SendMessage(WM_CLOSE);

MFC 调用其它应用程序:

1. 获取目标程序的  窗口HWND hWnd  

   HWND hWnd = ::FindWindowA(_T("SoftWareClassName"),NULL); //获取需要软件的窗口

2. int ret = ::SendMessageA(hWnd ,WM_CLOSE,0,0); //关闭软件


MFC 获取WINDOWS版本号:

汇编方式:

int a=0,b=0,i=0,j=0;    

    _asm    

    {    

        pushad    

            mov ebx,fs:[0x18] ; get self pointer from TEB    

            mov eax,fs:[0x30] ; get pointer to PEB / database    

            mov ebx,[eax+0A8h] ; get OSMinorVersion    

            mov eax,[eax+0A4h] ; get OSMajorVersion    

            mov j,ebx    

            mov i,eax    

            popad    

    }    

API方式:

OSVERSIONINFO osvi;                 //定义OSVERSIONINFO数据结构对象  

    memset(&osvi, 0, sizeof(OSVERSIONINFO));        //开空间   

    osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);  //定义大小   

    GetVersionEx (&osvi);                   //获得版本信息  

    DWORD dwMajorVersion = osvi.dwMajorVersion;         //主版本号  

    DWORD dwMinorVersion = osvi.dwMinorVersion;         //副版本  

    char swVersion[10]={0};      

    sprintf(swVersion,"%d.%d",dwMajorVersion,dwMinorVersion);   

对应的值:

if (!strcmp(swVersion,"5.0"))   osVersion =  _T("Windows 2000");       

else if (!strcmp(swVersion,"5.1"))   osVersion = _T("Windows XP");      

else if (!strcmp(swVersion,"5.2"))   osVersion = _T("Windows XP Professional x64");      

else if (!strcmp(swVersion,"6.0"))   osVersion = _T("Windows Vista");      

else if (!strcmp(swVersion,"6.1"))   osVersion = _T("Windows 7");      

else if (!strcmp(swVersion,"6.2"))   osVersion = _T("Windows 8");      

else if (!strcmp(swVersion,"6.3"))   osVersion = _T("Windows 8.1");      

else if (!strcmp(swVersion,"10.0"))   osVersion = _T("Windows 10");      

CHECK BOX 改变文字内容和字体

fontTitle.CreateFont( 18,0,0,0,FW_BOLD,FALSE,FALSE,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,_T("Calibri") ) ;  

((CButton*)GetDlgItem(IDC_CHK_PWR))->SetFont(&fontTitle);

((CButton*)GetDlgItem(IDC_CHK_PWR))->SetWindowText(_T("Power scheme"));

Power Scheme:

#include "PowrProf.h"

#pragma comment(lib, "Powrprof.lib")

const DWORD DISABLED = 1;
const DWORD ENABLED = 0;
GUID *scheme;
PowerGetActiveScheme(NULL, &scheme);
PowerWriteACValueIndex(NULL, scheme, &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_IDLE_DISABLE, DISABLED);

PowerSetActiveScheme(NULL, scheme);

VC++ 按键定义值

VK_LBUTTON                                      0x01
VK_RBUTTON                                     0x02
VK_CANCEL                                    0x03
VK_MBUTTON                                     0x04
#define VK_LBUTTON        0x01    //鼠标左键
#define VK_RBUTTON        0x02    //鼠标右键 
#define VK_CANCEL         0x03    //Ctrl + Break
#define VK_MBUTTON        0x04    //鼠标中键/* NOT contiguous with L & RBUTTON */
#define VK_BACK           0x08   //Backspace 键
#define VK_TAB            0x09   //Tab 键
#define VK_CLEAR          0x0C
#define VK_RETURN         0x0D   //回车键
#define VK_SHIFT          0x10
#define VK_CONTROL        0x11
#define VK_MENU           0x12   //Alt 键
#define VK_PAUSE          0x13
#define VK_CAPITAL        0x14   //Caps Lock 键 
#define VK_KANA           0x15
#define VK_HANGEUL        0x15 /* old name - should be here for compatibility */
#define VK_HANGUL         0x15
#define VK_JUNJA          0x17
#define VK_FINAL          0x18
#define VK_HANJA          0x19
#define VK_KANJI          0x19
#define VK_ESCAPE         0x1B   //Esc 键
#define VK_CONVERT        0x1C
#define VK_NONCONVERT     0x1D
#define VK_ACCEPT         0x1E
#define VK_MODECHANGE     0x1F
#define VK_SPACE          0x20   //空格
#define VK_PRIOR          0x21   //Page Up 键
#define VK_NEXT           0x22   //Page Down 键
#define VK_END            0x23   //End 键
#define VK_HOME           0x24   //Home 键
#define VK_LEFT           0x25  /*方向键*/
#define VK_UP             0x26
#define VK_RIGHT          0x27
#define VK_DOWN           0x28
#define VK_SELECT         0x29
#define VK_PRINT          0x2A
#define VK_EXECUTE        0x2B
#define VK_SNAPSHOT       0x2C   //Print Screen 键
#define VK_INSERT         0x2D  //Insert键
#define VK_DELETE         0x2E  //Delete键
#define VK_HELP           0x2F
/* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
/* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
#define VK_LWIN           0x5B //左WinKey(104键盘才有) 
#define VK_RWIN           0x5C //右WinKey(104键盘才有)
#define VK_APPS           0x5D //AppsKey(104键盘才有) 
#define VK_NUMPAD0        0x60 //小键盘0-9
#define VK_NUMPAD1        0x61
#define VK_NUMPAD2        0x62
#define VK_NUMPAD3        0x63
#define VK_NUMPAD4        0x64
#define VK_NUMPAD5        0x65
#define VK_NUMPAD6        0x66
#define VK_NUMPAD7        0x67
#define VK_NUMPAD8        0x68
#define VK_NUMPAD9        0x69
#define VK_MULTIPLY       0x6A //乘
#define VK_ADD            0x6B //加
#define VK_SEPARATOR      0x6C //除
#define VK_SUBTRACT       0x6D //减
#define VK_DECIMAL        0x6E //小数点
#define VK_DIVIDE         0x6F 
#define VK_F1             0x70 //功能键F1-F24
#define VK_F2             0x71
#define VK_F3             0x72
#define VK_F4             0x73
#define VK_F5             0x74
#define VK_F6             0x75
#define VK_F7             0x76
#define VK_F8             0x77
#define VK_F9             0x78
#define VK_F10            0x79
#define VK_F11            0x7A
#define VK_F12            0x7B
#define VK_F13            0x7C
#define VK_F14            0x7D
#define VK_F15            0x7E
#define VK_F16            0x7F
#define VK_F17            0x80
#define VK_F18            0x81
#define VK_F19            0x82
#define VK_F20            0x83
#define VK_F21            0x84
#define VK_F22            0x85
#define VK_F23            0x86
#define VK_F24            0x87
#define VK_NUMLOCK        0x90 //Num Lock 键
#define VK_SCROLL         0x91 //Scroll Lock 键
/*
* VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
* Used only as parameters to GetAsyncKeyState() and GetKeyState().
* No other API or message will distinguish left and right keys in this way.
*/
#define VK_LSHIFT          0xA0
#define VK_RSHIFT          0xA1
#define VK_LCONTROL        0xA2
#define VK_RCONTROL        0xA3
#define VK_LMENU           0xA4
#define VK_RMENU           0xA5
#if(WINVER >= 0x0400)
#define VK_PROCESSKEY      0xE5
#endif /* WINVER >= 0x0400 */
#define VK_ATTN            0xF6
#define VK_CRSEL           0xF7
#define VK_EXSEL           0xF8
#define VK_EREOF           0xF9
#define VK_PLAY            0xFA
#define VK_ZOOM            0xFB
#define VK_NONAME          0xFC
#define VK_PA1             0xFD
#define VK_OEM_CLEAR       0xFE


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值