如何在Win32应用程序添加按钮

我在做Hook键盘记录,想把钩子的按键记录保存在txt,添加按钮发送。邮件模块写好了,按钮启动不会写。。。。代码如下//KeyHookApp.cpp文件#include"... 我在做Hook键盘记录,想把钩子的按键记录保存在txt,添加按钮发送。邮件模块写好了,按钮启动不会写。。。。代码如下
// KeyHookApp.cpp文件
#include "resource.h"

#include "KeyHookApp.h"
#include "../09KeyHookLib/KeyHookLib.h"
#include <Windows.h>
#pragma comment(lib, "09KeyHookLib")
CMyApp theApp;

BOOL CMyApp::InitInstance()
{
CMainDialog dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return FALSE;
}//对CMyApp的声明

CMainDialog::CMainDialog(CWnd* pParentWnd):CDialog(IDD_MAIN, pParentWnd)
{
}

BEGIN_MESSAGE_MAP(CMainDialog, CDialog)
ON_MESSAGE(HM_KEY, OnHookKey)
END_MESSAGE_MAP()//消息映射

BOOL CMainDialog::OnInitDialog()
{ //初始化对话框
SetIcon(theApp.LoadIcon(IDI_MAIN), FALSE);//本成员函数用于设置按钮的图标。
::SetWindowPos(m_hWnd, HWND_TOPMOST, 10,10,
600, 400,SWP_NOREDRAW|SWP_NOMOVE);//该函数改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。
if(!SetKeyHook(TRUE, 0, m_hWnd))
MessageBox("安装钩子失败!");
return TRUE;

}

void CMainDialog::OnCancel()
{
// 卸载钩子
SetKeyHook(FALSE);
CDialog::OnCancel();
return;
}

long CMainDialog::OnHookKey(WPARAM wParam, LPARAM lParam)
{
// 此时参数wParam为用户按键的虚拟键码,
// lParam参数包含按键的重复次数、扫描码、前一个按键状态等信息
char szKey[80];
::GetKeyNameText(lParam, szKey, 80);

CString strItem;
strItem.Format(" %s", szKey);
// 添加到编辑框中

CString strEdit;
GetDlgItem(IDC_KEYMSG)->GetWindowText(strEdit);
GetDlgItem(IDC_KEYMSG)->SetWindowText(strItem + strEdit);
::MessageBeep(MB_OK);
return 0;
}
展开
 我来答
潮范君
2014-07-14 · 知道合伙人软件行家
潮范君
知道合伙人软件行家
采纳数:1440 获赞数:2874
从事软件开发工作一年有余,主要C++方向。

向TA提问 私信TA
展开全部
其实用MFC多好,很多东西系统直接给你写好了。
WIN32的话,需要自己生命Button类对象,然后调用Create函数动态创建一个按钮,设定资源ID和坐标位置,
然后就是写消息响应了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式