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

html用表格来做网站布局网站模板搭建

html用表格来做网站布局,网站模板搭建,网络营销策划书4000字,新疆建设兵团医院网站常见的进程间通信方法 常见的进程间通信方法有: 管道(Pipe)消息队列共享内存信号量套接字 下面,我们将详细介绍消息队列的原理以及具体实现。 什么是消息队列? Windows操作系统使用消息机制来促进应用程序与操作系…

常见的进程间通信方法

常见的进程间通信方法有:

  1. 管道(Pipe)
  2. 消息队列
  3. 共享内存
  4. 信号量
  5. 套接字

下面,我们将详细介绍消息队列的原理以及具体实现。

什么是消息队列?

Windows操作系统使用消息机制来促进应用程序与操作系统之间的通信。每当发生事件(如键盘按键、鼠标移动或系统事件)时,操作系统都会生成相应的消息。这些消息被发送到一个特定的消息队列中,随后由应用程序的消息循环处理。

消息队列

每个创建了窗口的线程都拥有一个消息队列,用于存储等待处理的消息。这些消息包括用户动作(如鼠标点击、键盘操作)和系统通知(如窗口重绘请求、系统关闭通知)。

消息循环

线程通过一个循环机制,称为消息循环或消息泵,从其消息队列中检索消息。消息循环的基本操作包括:

  • 检索消息:使用GetMessagePeekMessage
  • 翻译消息TranslateMessage转换键盘输入。
  • 分发消息DispatchMessage将消息派发给目标窗口的窗口过程。

消息分类

消息主要包含:

  • 系统消息:涉及窗口生命周期管理,如WM_CLOSEWM_QUIT等。
  • 硬件消息:反映用户与硬件的交互,如WM_KEYDOWNWM_MOUSEMOVE等。

除了上面提到的消息外,用户还可以自定义消息,自定义消息一般从WM_USER(0x0400)开始,到0x7FFF这样一个范围内,比如:
#define WM_CUSTOM_MSG WM_USER+100

接口介绍

GetMessagePeekMessageSendMessagePostMessage这四个接口是Windows消息处理的核心,它们各自承担着不同的角色和功能。

GetMessage

原型

BOOL GetMessage(LPMSG lpMsg,HWND  hWnd,UINT  wMsgFilterMin,UINT  wMsgFilterMax
);

参数解释

  • lpMsg:指向MSG结构的指针,该结构将接收消息的详细信息。
  • hWnd:指定窗口的句柄,如果为NULL,则接收属于调用线程的任何窗口的消息。
  • wMsgFilterMinwMsgFilterMax:指定要检索的消息范围的最小值和最大值。如果两者都为0,函数将返回所有可用的消息。

功能和特点

  • GetMessage用于从调用线程的消息队列中检索消息。该函数在有消息到达时返回,如果遇到退出消息WM_QUIT,则返回FALSE
  • 该函数是阻塞的,如果没有消息,它会等待消息的到来。

PeekMessage

原型

BOOL PeekMessage(LPMSG lpMsg,HWND  hWnd,UINT  wMsgFilterMin,UINT  wMsgFilterMax,UINT  wRemoveMsg
);

参数解释

  • lpMsg:指向MSG结构的指针,该结构将接收消息的详细信息。
  • hWnd:指定窗口的句柄,如果为NULL,则获取属于调用线程的任何窗口的消息。
  • wMsgFilterMinwMsgFilterMax:指定要检索的消息范围的最小值和最大值。
  • wRemoveMsg:指定消息如何处理。常用值有:PM_REMOVEPM_NOREMOVE

功能和特点

  • PeekMessage用于非阻塞地检查调用线程的消息队列,允许你查看消息队列中的消息而不必移除它。
  • 可以配置为从队列中移除消息或仅检查消息而不移除。
  • 常用于动画或游戏编程中,确保应用程序保持响应用户操作,同时继续进行其它处理。

SendMessage

原型

LRESULT SendMessage(HWND   hWnd,UINT   Msg,WPARAM wParam,LPARAM lParam
);

参数解释

  • hWnd:接收消息的窗口的句柄。
  • Msg:消息的标识符。
  • wParamlParam:消息特定的附加信息。

功能和特点

  • SendMessage同步发送消息,调用方在接收窗口处理该消息之前会阻塞。
  • 可用于发送任何类型的消息,并且能够获取消息处理的结果。

PostMessage

原型

BOOL PostMessage(HWND   hWnd,UINT   Msg,WPARAM wParam,LPARAM lParam
);

参数解释

  • hWnd:接收消息的窗口的句柄。
  • Msg:消息的标识符。
  • wParamlParam:消息特定的附加信息。

功能和特点

  • PostMessage异步发送消息,将消息放入消息队列后立即返回,不等待消息被处理。
  • 适合用于那些不需要立即反馈的消息发送,如状态更新或通知消息。

实现

问题

实现两个进程,进程1发送消息给进程2,相关代码如下:

// 进程1
int main()
{HWND hWnd = FindWindow(NULL, L"WindowsProject1"); // 找到进程2的句柄const wchar_t* message = L"Hello!";if (hWnd != NULL) {SendMessage(hWnd, WM_USER+100, 0, (LPARAM)message);}std::cin.get();
}
// 进程2
#define WM_CUSTOMMSG   (WM_USER+100)
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{switch (message){case WM_CUSTOMMSG: {wchar_t* receivedMessage = reinterpret_cast<wchar_t*>(lParam);SetWindowText(hLabel, receivedMessage);}break;...}return 0;
}

进程1通过自定义消息(WM_USER+100)发送了一个字符串给进程2,进程2的确收到了消息,但是数据获取失败。

因为进程1准备发送的数据存储在进程1的虚拟内存中,进程2是无法通过地址来获取这个数据的,所以进程2虽然收到消息了,但是无法得到对应的数据。

所以在进程间通过消息队列通信时需要保证传递的数据的安全性。

WM_COPYDATA

WM_COPYDATA是一个Windows消息,用于在Windows应用程序之间传递数据。这个消息特别适用于跨进程通信,允许一个应用程序向另一个应用程序的窗口发送数据,无论这些数据是简单的数值、字符串还是更复杂的结构通。

原理

当一个应用程序需要向另一个应用程序发送数据时,它可以将数据封装在COPYDATASTRUCT结构中,并通过SendMessage函数发送WM_COPYDATA消息。当接收窗口的窗口过程收到这条消息时,它可以从COPYDATASTRUCT结构中提取数据。

COPYDATASTRUCT结构

这个结构用于封装要传递的数据,其定义如下:

typedef struct tagCOPYDATASTRUCT {ULONG_PTR dwData;  // 任意值,由发送方设置,接收方可以用它来识别数据DWORD cbData;      // lpData指向的数据的大小,以字节为单位PVOID lpData;      // 指向要传递的数据的指针
} COPYDATASTRUCT, *PCOPYDATASTRUCT;
  • dwData:这是一个用户定义的数据值,发送方可以使用它来传递额外的信息或数据类型标识,接收方则可以用它来决定如何解释接收到的数据。
  • cbData:这表示 lpData 指向的数据的大小(以字节为单位)。
  • lpData:这是一个指针,指向实际要传输的数据。

实现代码

进程1代码

int main()
{HWND hWnd = FindWindow(NULL, L"WindowsProject1");const wchar_t* message = L"Hello!";if (hWnd != NULL) {COPYDATASTRUCT cds;cds.dwData = 1;  // 用于识别数据的自定义标识cds.cbData = (wcslen(message) + 1) * sizeof(wchar_t);  // 包括终止符的大小cds.lpData = (void*)message;SendMessage(hWnd, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds);}std::cin.get();
}

进程2代码

HWND hLabel;
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{hInst = hInstance; // 将实例句柄存储在全局变量中HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);if (!hWnd){return FALSE;}hLabel = CreateWindowW(L"STATIC", L"Waiting for message...",WS_CHILD | WS_VISIBLE | SS_LEFT,10, 10, 300, 20,hWnd, (HMENU)1, hInstance, nullptr);ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);return TRUE;
}LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{switch (message){case WM_COPYDATA: {PCOPYDATASTRUCT pCds = (PCOPYDATASTRUCT)lParam;if (pCds->dwData == 1) {const wchar_t* receivedStr = (const wchar_t*)pCds->lpData;SetWindowText(hLabel, receivedStr);}}break;case WM_COMMAND:{int wmId = LOWORD(wParam);// 分析菜单选择:switch (wmId){case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}}break;case WM_PAINT:{PAINTSTRUCT ps;HDC hdc = BeginPaint(hWnd, &ps);// TODO: 在此处添加使用 hdc 的任何绘图代码...EndPaint(hWnd, &ps);}break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;
}

效果

image.png


文章转载自:
http://jagatai.c7617.cn
http://conchae.c7617.cn
http://quantometer.c7617.cn
http://militarist.c7617.cn
http://counterplea.c7617.cn
http://menstruation.c7617.cn
http://moderator.c7617.cn
http://vestibular.c7617.cn
http://turnix.c7617.cn
http://curlpaper.c7617.cn
http://dyspepsy.c7617.cn
http://maglev.c7617.cn
http://wolfgang.c7617.cn
http://batik.c7617.cn
http://beluchistan.c7617.cn
http://jassid.c7617.cn
http://uncoffined.c7617.cn
http://larder.c7617.cn
http://niphablepsia.c7617.cn
http://troublemaking.c7617.cn
http://photoceramics.c7617.cn
http://abwatt.c7617.cn
http://fascismo.c7617.cn
http://cimmerian.c7617.cn
http://doorsill.c7617.cn
http://overlay.c7617.cn
http://catoptrical.c7617.cn
http://copperas.c7617.cn
http://oriental.c7617.cn
http://fluvioterrestrial.c7617.cn
http://anthropogenesis.c7617.cn
http://gauzily.c7617.cn
http://michael.c7617.cn
http://hellhole.c7617.cn
http://tearful.c7617.cn
http://postatomic.c7617.cn
http://monetarily.c7617.cn
http://mistranslate.c7617.cn
http://serjeantship.c7617.cn
http://luthier.c7617.cn
http://orgy.c7617.cn
http://mesothermal.c7617.cn
http://declining.c7617.cn
http://guanay.c7617.cn
http://unbishop.c7617.cn
http://annoy.c7617.cn
http://camas.c7617.cn
http://mallanders.c7617.cn
http://infructuous.c7617.cn
http://mythological.c7617.cn
http://resounding.c7617.cn
http://dma.c7617.cn
http://factrix.c7617.cn
http://edrophonium.c7617.cn
http://mull.c7617.cn
http://tangoist.c7617.cn
http://sinfully.c7617.cn
http://extravagant.c7617.cn
http://costoscapular.c7617.cn
http://butterwort.c7617.cn
http://paste.c7617.cn
http://lodicule.c7617.cn
http://dominant.c7617.cn
http://fireroom.c7617.cn
http://bobbysocks.c7617.cn
http://admiral.c7617.cn
http://silvics.c7617.cn
http://bichlorid.c7617.cn
http://preadult.c7617.cn
http://saltatorial.c7617.cn
http://galatians.c7617.cn
http://cultipacker.c7617.cn
http://vary.c7617.cn
http://injurant.c7617.cn
http://pigeonhearted.c7617.cn
http://quipster.c7617.cn
http://marl.c7617.cn
http://patriot.c7617.cn
http://cornetcy.c7617.cn
http://propensity.c7617.cn
http://stolon.c7617.cn
http://hemiplegia.c7617.cn
http://quercine.c7617.cn
http://hup.c7617.cn
http://heth.c7617.cn
http://hesiflation.c7617.cn
http://latinise.c7617.cn
http://moor.c7617.cn
http://herbage.c7617.cn
http://bide.c7617.cn
http://weakliness.c7617.cn
http://turbinal.c7617.cn
http://uncoded.c7617.cn
http://nizam.c7617.cn
http://nctm.c7617.cn
http://quadriliteral.c7617.cn
http://theanthropism.c7617.cn
http://croaker.c7617.cn
http://jundy.c7617.cn
http://kampar.c7617.cn
http://www.zhongyajixie.com/news/101865.html

相关文章:

  • 自己如何建设校园网站免费发布广告的平台
  • 网站建设技术交流市场营销手段13种手段
  • 河南工程建设信息网官网 可登录中项网seo专业实战培训
  • 工商注册代办机构seo网站优化是什么
  • 有实力的网站建设推广唐山网站建设方案优化
  • web简单网页设计宁波seo推广服务
  • 西安做网站哪里价格低新媒体营销案例分析
  • 网站建设考试试题网站内容编辑
  • 怎么做捐款网站客源软件哪个最好
  • 上海网站建设公司介绍站长资源平台
  • 无锡哪里做网站微信最好用的营销软件
  • 简约网站欣赏佛山seo联系方式
  • 顺义网站建设公司微信scrm
  • 专题页网站怎么做网站创建的流程是什么
  • 青岛知名网站建设公司排名衡水seo培训
  • 从用户旅程角度做网站分析公司建设网站哪家好
  • 如何给别人做网站郑州疫情最新动态
  • 社区门户网站建设招标公告湘潭网站seo
  • wordpress图片切换插件seo技术是什么意思
  • dw做网站首页长宽设置多少网络网站推广优化
  • 手机网站首页设计在哪里做推广效果好
  • 各行各业网站建设售后完善南宁seo做法哪家好
  • wordpress 商家抖音seo教程
  • 网站备案号在哪里查询推广软文代发
  • qq是哪年开始有的金华seo扣费
  • 鞍山招聘信息最新招聘长沙靠谱关键词优化服务
  • 做简单网站用什么软件有哪些内容公司网站设计与制作
  • 网站开发工具论文企业门户网站
  • 德州哪家网站优化好外链群发平台
  • 手机版的网站怎样做呢关键词免费网站