mfc笔记

##############基础类型################


bit/位 1位的取值范围 0~1
byte/字节 1字节的取值范围0~11111111(2进制)~255(10进制)~FF(16进制)
word/单字(2字节) 1个单字范围 0~1111111111111111(2进制)~65535(10进制)~FFFF(16进制)
dword/双字(4字节) 1个双字范围 0~111111111111111*(2进制)~4294967296(10进制)~FFFFFFFF(16进制)


//char 8位----1byte
//short 16位---2byte
//int 32位----4byte




HWND是HANDLE的一种,但是HANDLE并不是HWND.
HANDLE是操作系统一系列内核对象的句柄。
HWND仅是窗口对象的句柄




a[y][x]---------######
######
横是x 竖是y ######
######




HINSTANCE是应用程序实例句柄,HWND是窗口句柄




4.指针移动
int *pa;
int a[10];
pa = &a[0];
pa+1将指向下一个元素a[1]:
 >> 内存中的变化:"指针加1"会根据指针指定的类型int移动4个内存单元,
 其实本身并没有移动,只是pa+1等于第5个内存单元地址——
 “指针加1”中的1的大小是取决于pa的类型int的,
 指针类型决定指针跨内存单元的步长。
5.规则:
   >> &a[i]和a+i含义相同,相互使用。a+i是a之后第i个元素地址。
   >> 数组名代表数组第一个元素的地址。






############itoa##############
int number = 123456;
  char string[25];
  itoa(number, string, 10);


###########atoi#############
 int n;
  char *str = "12345.67";
  n = atoi(str);




###long转CString### 
CString str;
str.Format(_T("%ld"),rect.bottom);
###定时器使用###






#####添加热键#########
1、.h文件中添加 afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);
2、.cpp消息映射区域里面添加   ON_MESSAGE(WM_HOTKEY,OnHotKey) 
3、OnInitDialog中添加注册热键  RegisterHotKey(GetSafeHwnd(),1001,NULL,VK_F2);  为F2
4、实现函数 LRESULT CNiHuaWoCaiDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
    //wParam是注册热键的ID,lParam是关于按键的信息
    if(wParam==1001)
    {
//操作
    }
    return 0;
}






###对话框###


1、在资源页面,对话框上双击可为这个对话框创建类
(1)DoDataExchange()初始化对话框控件到变量,或者变量获取对话框的数据
(2)UpdateData(); 来调用DoDataExchange()




2、创建模态对话框:
(1)MyNewDialog md;  //实例化一个对话框的对象
(2)md.DoModal();    //初始化一个模态对话框  自动创建
3、创建非模态对话框:
(需要是成员变量)
(1)MyNewDialog md;  //实例化一个对话框的对象
(2)md.Create(ID(ID号),this(父窗口指针));    //初始化一个模态对话框

4、创建按钮:
(1)CButton cbt;
(2)cbt.Create(_T("按钮"),BS_DEFPUSHBUTTON | WS_VISIBLE|WS_CHILD,CRect(0,0,100,100)[巨型区域],this,111[id]);
 *(3)cbt.DestroyWindow();销毁


5、在创建窗口都时候都会创建一个句柄变量 m_hWnd 可通过btn.m_hWnd 直接访问


6、GetWindowText(str)    获取窗口的文本


7、SetWindowText(str) 修改窗口的文本


8、GetDlgItem(int ID)    通过ID获取对话框上控件的指针


9、GetDlgItemText(str)   通过文本获取对话框上的指针


10、SetDlgItemText(ID,str)   修改窗口的文本


11、GetDlgItemInt();


12、SetDlgItemInt();




13、通过发送消息来获取窗口的文本
    (调用api函数前面用::)
    ::SendMessage(GetDlgItem(int ID).m_hWnd[句柄],WM_GETTEXT[消息类型],10,ch);
14、对话框发送消息
    SendDlgItemMessage(ID,WM_GETTEXT[消息类型],ch);


15、获得窗口大小GetWindowRect(&CRect)


16、设置窗口大小SetWindowPos();
 




####################外挂常用API########################


1、通过标题获取窗口句柄   FindWindow(NULL,"QQ");
2、获取窗口的信息   GetWindowRect(HWND.RECT)
3、改变鼠标位置坐标SetCursorPos(x,y);    相对于显示器window
4、得到鼠标的位置坐标GetCursorPos(&POINT);
5、获取窗口进程ID  GetWindowThreadProcessId()
6、打开指定进程 OpenProcess();
7、读取指定进程内存数据 ReadProcessMemory();
8、发送消息 SendMessage/PostMessage
9、查找子窗口的句柄
函数原型:HWND ChildWindowFromPoint (HWND hWnd, LONG xPoint, LONG yPoint);
函数功能:返回父窗口中包含了指定点的第一个子窗口的句柄。
函数参数:hWnd 父窗口的句柄
xPoint 点的X坐标,以像素为单位
yPoint 点的Y坐标,以像素为单位
返回值:发现包含了指定点的第一个子窗口的句柄。如未发现任何窗口,则返回hWnd(父窗口的句柄)。如指定点位于父窗口外部,则返回零。
<!--------读取其他程序内存---样例--------------->
{//获得窗口句柄
HWND gameh = ::FindWindow(NULL,_T("QQ游戏 - 连连看角色版"));
//会的窗口进程ID
DWORD processid;
::GetWindowThreadProcessId(gameh,&processid);
//打开指定的进程
HANDLE processH = ::OpenProcess(PROCESS_ALL_ACCESS,false,processid);
//读取指定的进程 内存数据
DWORD byread;
LPCVOID pbase = (LPCVOID)0x00189F78 ;//基址
LPVOID nbuffer = (LPVOID)GAMEDARA; //读取数据存放的地址
ReadProcessMemory(processH,pbase,nbuffer,11*19,&byread);
}
<1-------调用其他程序 call 样例----------------->
//获取窗口的句柄
HWND game_hwnd = ::FindWindow(NULL,_T("WG_MyGame1"));
DWORD id;
LPDWORD pid = &id; //指针引用
//获取窗口进程ID
::GetWindowThreadProcessId(game_hwnd,pid);
//打开指定进程
HANDLE processH = ::OpenProcess(PROCESS_ALL_ACCESS,false,id);

//创建远程线程 调用call
DWORD tid;
CreateRemoteThread(processH,NULL,0,(LPTHREAD_START_ROUTINE)(0x003B1950),NULL,0,&tid);










#######################钩子##############################

1、::SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());
/**
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值