当前位置: 首页 > article >正文

windows七个消息队列

windows七个消息队列

windows七个消息队列

文章目录

  • windows七个消息队列
  • 消息队列


消息队列

/************************************************************************
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;
}


http://www.kler.cn/a/299968.html

相关文章:

  • 激光线扫相机无2D图像的标定方案
  • Linux探秘坊-------5.git
  • 【2024年华为OD机试】 (C卷,200分)- 字符串拼接(JavaScriptJava PythonC/C++)
  • K8S中Service详解(一)
  • 【QNX】QNX侧查看CPU的信息
  • 【Vim Masterclass 笔记21】S09L39:Vim 设置与 vimrc 文件的用法示例(二)
  • 基于springboot的校园志愿者管理系统的设计与实现 (含源码+sql+视频导入教程+论文+PPT)
  • 数学基础 -- 线性代数之格拉姆-施密特正交化
  • DNAT和SNAT实践
  • 软件测试之单元测试与unittest框架详解
  • Unity SRP 可编程渲染管线的基本用法
  • 虚幻引擎Gameplay探索 Actor 之间的高效通信与交互技巧二
  • 在springboot中如何使用Jetty替换Tomcat
  • LVGL 部件之滚轮(lv_roller)
  • MySQL的优化原则
  • 使用Selenium WebDriver来检测网页上的坏链接
  • PHP无缝对接预订无忧场馆预订系统小程序源码
  • SDH信号的帧结构与复用
  • ChatGPT提示词优化大师使用指南
  • 【网络安全】-文件下载漏洞-pikachu
  • 常用的 CMD 指令及其功能
  • 2024软件测试面试题及答案
  • 每日一练8:dd爱框框(含链接)
  • 【网络安全】-文件上传漏洞实战-upload-labs(0~16)
  • Python 内置的一些数据结构
  • Groovy -> Groovy 集合操作