方法一:CreateThread 一般在WIN32环境下使用 DWORD WINAPI func(LPVOID lpParam)//线程函数 //注意格式 { int n = (int)lpParam; CString str; str.Format(_T("n=%d"),n); AfxMessag
方法一:利用互斥锁mutex 用于没有界面的代码
// InnerHookDlg.cpp: 实现文件 // #include "pch.h" #include "framework.h" #include "InnerHook.h" #include "InnerHookDlg.h" #include "afxdialogex.h" #ifdef
加新建项 6.代码 #include <afxwin.h> //相当于windows.h+afx.h //2.
DWORD GetLastError(); 错误代号: 〖0〗-操作成功完成。 〖1〗-功能错误。 〖2〗-系统找不到指定的文件。 〖3〗-系统找不到指定的路径。 〖
设断点 3.启动调试 调用堆栈窗口:上面的函数被下面的函数所调用 4. 双击函数 设断点 F5让程序执行到断点处 F11进入AfxWinMain函数 CWinThr
CStringArray类可以用来存储CString类型的对象,而且它的容量是可以动态增加的 CSt
键盘消息 系统消息: ALT,F1,——F24等,是由系统内部处理的,程序本身就存在,比如F1是帮助键。 WM_SYSKEYDO
鼠标事件:Windows中分为是三种,按下或释放鼠标、双击鼠标、移动鼠标; 上述三种鼠标实际那将触发鼠标消息,而鼠标消息分为两类,一类是客户区鼠标消息,另一类是非客户区鼠标消息,一般非客户区鼠标消息直接交由DefWindowProc处理; 客户区鼠标消息: 鼠标消息都属于窗口消息,因此消息ID的前缀
在MFC中,PreTranslateMessage是虚函数,是用来截获消息的。我们可以通过重载它来处理键盘和鼠标消息 PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当你需要在MFC之前处理某些消息时,常
函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函
AfxGetMainWnd()->SendMessage(WM_CLOSE); //退出程序
#define WM_MyMessage (WM_USER+100) //自定义消息号 UINT funcw(LPVOID pParam) //写线程 { DWORD ID = (DWORD)pParam; //获取读线程ID int n = 0; for (int i=0;i<1000;i++)
线程的优先级 每个线程都有一个“优先级”,范围是0~31,0为最低优先级,31为最高优先级。当系统决定哪个线程需要调度的时候,首先查看是否存在优先级为31的可调度线程,如果存在,就从中选择一个进行调度。当该线程的时间片到达之后,系统查看是否存在另一个优先级为31的可调度线程,如果存在,就调度它。 只
MSG msg = {0}; UINT ID=msg.message;//消息的标识符(消息号) HWND hwnd=msg.hwnd;//消息所属的窗口句柄 msg.wParam;//WPARAM msg.lParam;//LPARAM DWORD d=msg.time;//消息投递到消息队列中的
1.添加一个菜单资源 2.在资源界面中输入菜单的各个指令项的文字内容,并且设置对应的ID号 3.在对话框的类视图中,选择“属性”-“消息”,重写对消息WM_CONTEXTMENU的响应函数 选择属性 4.代码 void CyoujiancaidanDlg::OnContextMenu(CWnd* p
::OutputDebugString(str); 输出到以下窗口:
PostQuitMessage(0); //线程终止请求 //该函数向系统表明有个线程有终止请求 //PostQuitMessage寄送一个WM_QUIT消息给线程的消息队列并立即返回; // 此函数向系统表明有个线程请求在随后的某一时间终止
HWND hWnd2 = GetSafeHwnd(); ::SetWindowText(hWnd2, _T("窗口句柄练习")); CString str; TCHAR ch[MAX_PATH] = { 0 }; HWND hWnd = ::GetDesktopWindow();//获取桌面窗口的句柄 HWND hWnd1 = ::GetWindo
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) //回调函数//参数1:EnumChildWindows函数自动传过来的子窗口句柄//参数2:就是EnumChildWindows函数的参数3的值{ TCHAR ch[MAX_PATH] = { 0 }; ::GetWindowText(hwndC
HWND hWnd2 = GetSafeHwnd(); ::SetWindowText(hWnd2, _T("窗口句柄练习")); TCHAR ch[MAX_PATH] = { 0 }; CString str; HWND hWnd = ::FindWindow(NULL,NULL);//获取与指定窗口类名和窗口名的最顶层窗口的窗口句柄 //参数1
HWN
HWND hWnd = ::FindWindow(NULL, _T("sss.txt - 记事本")); DWORD dwTID=0; DWORD dwPID = NULL; dwTID = ::GetWindowThreadProcessId(hWnd, &dwPID);//获取指定窗口线程ID和
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) //回调函数//参数1:EnumWindows函数自动传过来的句柄//参数2:就是EnumWindows函数参数2的值{ TCHAR ch[MAX_PATH] = { 0 }; CString str; ::GetWindo
打开SPY++ 查看窗口的类、标题、句柄下面查看计算器为实例1.打开计算器2.刷新 3.点击查找窗口按钮 4.鼠标点击并按住“靶子”按钮 移动到计算器标题栏上并松开(移动到要查看窗口的上方) 查看控件ID &
器所支持的最长全路径名的长度TCHAR ch[MAX_PATH] = { 0 };
GetAsyncKeyState获取调用该函数时某一键的状态SHORT GetAsyncKeyState(int vKey);GetAsyncKeyState()的返回值表示两个内容,一个是最高位bit的值,代表这个键是否被按下,一个是最低位bit的值,代表在上次调用GetAsyncKeyState
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号