【发布时间】:2017-04-28 17:37:39
【问题描述】:
我希望更改静态文本,但我不能,
LRESULT CALLBACK KeybdProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN))
{
KBDLLHOOKSTRUCT *pKey = (KBDLLHOOKSTRUCT*)lParam;
int key = pKey->vkCode;
cout << key << " ";
if (key == VK_INSERT)
{
SetDlgItemText(IDC_STATUSTEXT, "On")
}
if (key == VK_DELETE)
{
SetDlgItemText(IDC_STATUSTEXT, "Off")
}
}
CallNextHookEx(KbHook, nCode, wParam, lParam);
return 0;
}
HHOOK KbHook;
BOOL CUSBDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetDlgItemText(IDC_STATUSTEXT, "Successfully Loaded!!!");
cout << "Successfully Loaded !!!" << endl;
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
HMODULE hInstance = GetModuleHandle(NULL);
KbHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeybdProc, hInstance, 0);
return TRUE;
}
错误“函数不接受2个参数”
我可以解决它吗?
我可以使用这个功能吗
void CUSBDlg::Pray(byte t, int i)
在 KeybdProc 中?
如果我尝试像这样使用这个功能
LRESULT CALLBACK KeybdProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN))
{
KBDLLHOOKSTRUCT *pKey = (KBDLLHOOKSTRUCT*)lParam;
int key = pKey->vkCode;
cout << key << " ";
if (key == VK_INSERT)
{
SetDlgItemText(IDC_STATUSTEXT, "On")
Pray(0x04, 6)
}
if (key == VK_DELETE)
{
SetDlgItemText(IDC_STATUSTEXT, "Off")
}
}
CallNextHookEx(KbHook, nCode, wParam, lParam);
return 0;
}
错误“未声明的标识符”
有人帮我解决这个问题 X(
【问题讨论】:
-
没有理由将
KbHook设为全局 - 根据文档,CallNextHookEx的第一个参数被忽略。但是,您的问题看起来像您不知道如何在 C++ 中调用成员函数,这与 Windows API 无关,尽管第一个代码示例没有指出问题发生在哪里,而且很难测试自己因为这不是minimal reproducible example。 -
你能帮帮我吗:) ??
-
CUSBDlg::Pray()?读一两本书,那些文物就会消失。更严肃的一点是:无论您多么祈祷,除非您牢牢掌握 C++ 和 Windows API,否则您的 MFC 努力不会有好的结果。