windows七个消息队列

windows七个消息队列

windows七个消息队列

文章目录


消息队列

cpp 复制代码
/************************************************************************
Module: CopyData.cpp
Notices: Copyright(c) 2008 Jeffrey Ritcher & Christophe Nasarre
************************************************************************/

#include "CmnHdr.h"
#include "resource.h"
#include <malloc.h>
#include <tchar.h>
#include <windowsx.h>

//
BOOL Dlg_OnCopyData(HWND hWnd, HWND hWndFrom, PCOPYDATASTRUCT pcds) {
	Edit_SetText(GetDlgItem(hWnd, pcds->dwData ? IDC_DATA2 : IDC_DATA1),
		(PTSTR)pcds->lpData);
	return (TRUE);
}

//

//
BOOL Dlg_OnInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam) {
	chSETDLGICONS(hWnd, IDI_COPYDATA);

	//初始化编辑框
	Edit_SetText(GetDlgItem(hWnd, IDC_DATA1), TEXT("测试数据"));
	Edit_SetText(GetDlgItem(hWnd, IDC_DATA2), TEXT("其他测试数据"));
	return (TRUE);
}

//
void Dlg_OnCommand(HWND hWnd, int id, HWND hWndCtrl, UINT codeNotify) {
	switch (id) {
	case IDCANCEL:
		EndDialog(hWnd, id);
		break;

	case IDC_COPYDATA1:
	case IDC_COPYDATA2:
		if (codeNotify != BN_CLICKED)
			break;

		//获取相应的文本框
		HWND hWndEdit = GetDlgItem(hWnd,
			(id == IDC_COPYDATA1) ? IDC_DATA1 : IDC_DATA2);

		//准备一个COPYDATASTRUCT结构体,其内容会被Copy到
		//一个内存映像文件中
		COPYDATASTRUCT cds;

		//指示哪个数据域的内容要被发送(0=ID_DATA1,1=ID_DATA2)
		cds.dwData = (DWORD)((id == IDC_COPYDATA1) ? 0 : 1);

		//获取文本的长度(字节)
		cds.cbData = (Edit_GetTextLength(hWndEdit) + 1) * sizeof(TCHAR);

		//在栈中分配一个内容以保存字符串内容
		cds.lpData = _alloca(cds.cbData);//此功能已弃用,更安全的版本可用;见_malloca

		//将编辑框里的字符串存到cbs.lpData中
		Edit_GetText(hWndEdit, (PTSTR)cds.lpData, cds.cbData);

		//获取应用程序的标题
		TCHAR szCaption[100];
		GetWindowText(hWnd, szCaption, sizeof(szCaption) / sizeof(szCaption[0]));

		//枚举所有具有相同标题的顶层窗口
		HWND hWndT = NULL;
		do
		{
			hWndT = FindWindowEx(NULL, hWndT, NULL, szCaption);
			if (hWndT != NULL)
			{
				FORWARD_WM_COPYDATA(hWndT, hWnd, &cds, SendMessage);
			}
		} while (hWndT != NULL);
		break;
	}
}

//
INT_PTR WINAPI Dlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

	switch (uMsg) {
		chHANDLE_DLGMSG(hWnd, WM_INITDIALOG, Dlg_OnInitDialog);
		chHANDLE_DLGMSG(hWnd, WM_COMMAND, Dlg_OnCommand);
		chHANDLE_DLGMSG(hWnd, WM_COPYDATA, Dlg_OnCopyData);
	}

	return (FALSE);
}

//
int WINAPI _tWinMain(HINSTANCE hInstExe, HINSTANCE hPrev, PTSTR lpCmdLIne, int nShowCmd) {
	DialogBox(hInstExe, MAKEINTRESOURCE(IDD_COPYDATA), NULL, Dlg_Proc);
	return 0;
}
相关推荐
熊明才5 小时前
WSL2 网络突然瘫痪(Network is unreachable / 没有 eth0)最短修复指南(2026年9月20日亲测可用)
linux·windows·wsl2
xbzb9 小时前
Windows 启动故障修复知识整理:蓝屏 / 无限重启 / 盘符 X / 无 PE 盘
windows
我命由我123459 小时前
Mac 操作系统 - 一些使用记录
运维·windows·学习·系统安全·运维开发·mac·学习方法
kakakahahahaha1 天前
Windows Steam 游戏存档在哪里?定位和恢复排查流程
windows·其他·电脑·笔记本电脑·内容运营·软件需求
Xy-unu1 天前
Windows 开启外接显示器 HDR 后外接显示器无信号、无法扩展模式故障记录
windows
troy1281 天前
Codex 安全盲区:代码漏洞生成实测
windows·python·ci/cd·pycharm·django·github·fastapi
其实防守也摸鱼1 天前
常见安全架构中 Shiro 的认证确认机制解析
运维·服务器·数据库·windows·github
五_谷_丰_登1 天前
windows批处理脚本(bat)问题解决方案大全——持续更新
windows·bat
YCOSA20251 天前
迎双节 雨晨 Windows 11 IoT 企业版 LTSC 26H1 轻装 28000.2956
windows·物联网
csdn_aspnet1 天前
Windows 如何隐藏 IIS Web 服务响应头中的 IIS Server 版本信息
windows·iis·url rewrite