C++基础学习(1)

本文介绍了C++ MFC工程的创建,包括工程框架、添加控件、Edit Control控件的使用。详细讲解了如何使用FindWindow和SendMessage进行消息操控,如关闭Notepad窗口。还探讨了程序启动流程,包括WinMain()函数、窗口类注册和窗口过程。最后,讨论了模拟鼠标键盘操作以及进程间消息通信的方法,如WM_COPYDATA消息和自定义消息通信。
摘要由CSDN通过智能技术生成

0x01 关于工程

1.1 工程框架

创建MFC工程,可选择界面:

对话框、单文档、多文档、多顶级文档

详情:

https://www.cnblogs.com/hao-hong-sheng/p/8513280.html

 

1.2 添加控件

在资源视图打开对话框节点,从工具箱中拖入新增控件后,vs会将新控件自动添加到Resource.h中定义。但在cpp中还显示不出新添加控件的ID,需要在项目==》重新扫描解决方案,才能自动补全新控件名。

双击button自动添加了单机事件,会在cpp文件中添加消息映射message map。如:

BEGIN_MESSAGE_MAP(CMFCmessage3Dlg, CDialogEx)

    ON_BN_CLICKED(IDC_bt_open, &CMFCmessage3Dlg::OnBnClickedbtopen);

END_MESSAGE_MAP()

 

1.3 Edit Control控件

(1)基本

添加控件后,右键为这个控件添加变量,变量类别为控件(不是值),才能通过这个变量去调用函数操作控件。

VAR_EDIT1.SetWindowTextW(_T("abc"));

控件变量名为VAR_EDIT1,不同于控件的ID为IDC_EDIT1

_T是一个适配宏,把字符串转为适合工程的编码。

当#if def _UNICODE时,_T会把字符以UNICODE双字节存储。

否则会以ANSI单字节存储。

函数SetwindowTextW接受的参数类型是LPCTSTR

它是32-bit指针指向一个常字符串,每字符可能占1字节或2字节,取决于是否定义为Unicode。

控件内数据换行需要 \r\n

(2)更新数据

在资源视图,为控件右键添加变量,类型为值。

变量VALUE_EDIT1为控件的值变量。

UpdateData(1);

可以让数据从控件,传输到变量,VAULE_EDIT1的值被更新。

UpdateData(0);

可以让数据从变量,传输到控件,控件中的值被更新。

其实相当于,新建一个CString变量,对控件取值,运算,再赋值回去。

VAR_EDIT1.GetWindowTextW(ms1);

ms1.Append(_T("hhh"));

VAR_EDIT1.SetWindowTextW(ms1);

 

0x02 消息操控

2.1 循环获取Notepad句柄,并发送关闭指令

HWND txtHWND = ::FindWindow(_T("Notepad"), NULL);

while (txtHWND != NULL)

{

::SendMessage(txtHWND, WM_CLOSE, NULL, NULL);

txtHWND = ::FindWindow(_T("Notepad"), NULL);

VALUE_EDIT1.Append(_T("已关闭记事本\r\n"));

}

VALUE_EDIT1.Append(_T("没有找到记事本"));

UpdateData(0);

return;

 

2.2 关于消息

有3种发送消息的方式,send、post、广播。区别在于,send是阻塞的,要等到程序返回才继续执行,post是送到即刻返回。记得要::再调用系统的SendMessage,否则调的是作用域内的同名函数,不一样。

::SendMessage函数:

第一个参数是句柄

第二个参数是发送的常量消息,具体可发送:

https://blog.csdn.net/rbmwjyc/article/details/78981751

第三个参数wParam:指定附加的消息特定信息。通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值