对话框坐标可以使用GetWindowRect获取。
鼠标坐标一般在OnMouseMove里面通过参数获取。
这个最好有具体需求描述,因为获取方式很多,用于不同的窗口和不同的需要。
动态创建的和通过拖控件的CListCtrl一样,通过添加LVN_ITEMCHANGED消息响应,可以实现当前选中行的信息。如果是动态创建,IDC_LIST1是你动态创建的ListCtrl的ID。
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnLvnItemchangedList1)
// 用全局键盘钩子。要写一个DLL库。代码如下:
#include <windowsh>
#pragma data_seg("HookData")
HHOOK g_hHook = NULL;
HINSTANCE g_hInstDLL = NULL;
#pragma data_seg()
#pragma comment(linker,"/SECTION:HookData,RWS")
BOOL APIENTRY DllMain(HINSTANCE hInstDLL
DWORD fdwReason,
LPVOID lpvReserved)
{
g_hInstDLL = hInstDLL;
return TRUE;
}
// 回调函数
LRESULT WINAPI HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
// 请在这里添加消息处理代码
// 将事件传递到下一个钩子
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
// 安装钩子
extern "C" __declspec(dllexport) VOID InstallHook()
{
g_hHook = SetWindowsHookEx(WH_KEYBOARD, HookProc, _hInstDLL, 0);
}
// 卸载钩子
extern "C" __declspec(dllexport) DWORD KillHook(void)
{
UnhookWindowsHookEx(g_hHook);
}
/ Copyrights (C) 2010 夺魂狼剑 All rights reserved /
可以在程序中使用LoadLibrary()函数来动态加载这个DLL库,并用GetProcAddress()来找到DLL中的导出函数。
希望能对你有所帮助。
--------------------------------------------------------------------------------------------
HookProc是回调函数,每当捕获到键盘消息,就被自动调用,消息参数wParam是对应的虚拟键代码,可以把它强制转换为ASCII字符,lParam可以判断Ctrl、Alt、Shift等控制键。
每当键盘被按下,就会产生一个WM_KEYDOWN消息,如果被按下的是字母键,还会产生WM_CHAR消息。释放键盘,会产生WM_KEYUP消息。你可以根据实际需要进行捕获。
你不用截获这个消息,你只要定时判断任务栏窗口是否隐藏就好了。如果你一定要通过截获消息判断的话,你就要用windows hook机制了,不过不推荐,因为hook涉及dll注入,有可能会被报毒。
1重载PreTranslateMessage函数
2实现如下代码
BOOL
CMouseDlg::PreTranslateMessage(MSG
pMsg)
{
//
TODO:
Add
your
specialized
code
here
and/or
call
the
base
class
if(pMsg->hwnd
==
GetDlgItem(IDC_BUTTON1)->GetSafeHwnd()
&&
pMsg->message
==
WM_MOUSEMOVE)
{
CString
windowText;
GetDlgItem(IDC_BUTTON1)->GetWindowText(windowText);
//得到按钮文本
GetDlgItem(IDC_STATIC1)->SetWindowText(windowText);
//显示到静态文本框
}else
if(pMsg->hwnd
==
GetDlgItem(IDC_BUTTON2)->GetSafeHwnd()
&&
pMsg->message
==
WM_MOUSEMOVE)
{
CString
windowText;
GetDlgItem(IDC_BUTTON2)->GetWindowText(windowText);
GetDlgItem(IDC_STATIC1)->SetWindowText(windowText);
}
return
CDialog::PreTranslateMessage(pMsg);
}
添加WM_KEYDOWN 消息,在OnKeyDown里面根据键判断回车键,获取按键, 获取文本,可以利用CEditView本身的函数,比如先利用GetEditCtrl
获得该编辑控件 ,然后调用编辑控件的函数获得文本内容。
以上就是关于关于C++/MFC获取鼠标消息的问题全部的内容,包括:关于C++/MFC获取鼠标消息的问题、mfc 动态创建的 CListCtrl 如何获取选中行的信息 要响应什么消息、VC/MFC如何实现后台捕捉键盘消息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)