首页 > 教育培训

mfc多线程的实现方式 handle函数?

handle函数?

handle:windows使用handle来表示一个对象(不是c中的对象)。hwnd是其中之一,hwnd是一个句柄,但是句柄不仅仅是hwnd。handl

mfc中的多线程如何实现。和单线程有啥区别?

windows调度线程,多线程可以实现程序的实时多任务,但也增加了程序的复杂度,即需要线程同步。

要实现一个线程,只需要afxb

mfc中,我启用线程后,在线程函数中如何获取当前光标所在位置?

mfc多线程的实现方式 handle函数?

这个指针存储在主线程的堆栈中,传递给子线程的指针实际上是访问子线程的堆栈。当然,不可能得到正确的值。其实直接传光标坐标就可以了。在子线程中处理接口会导致频繁的线程切换,影响效率。

子线程可以直接调用主线程方法吗?

启动线程时有一个参数lpvoid,通过这个参数可以传入主线程中的对象指针,子线程可以用这个指针调用它的成员函数。但需要注意的是,不要用子线程中的指针直接调用主线程中窗口对象的成员函数。这将导致一些潜在的错误。因为mfc不是线程安全的。

线程间通信有哪些方式?

多线程通信有三种主要方法:

1.全局变量

进程中线程间的内存共享是一种常见的通信和交互。

注意:定义全局变量时最好使用volatile,以防编译器优化这个变量。

消息机制

消息通信有两个常见的接口:postmessage和postthreadmessage。

postmessage向线程的主窗口发送一条消息。postthreadmessage是任意两个线程之间的通信接口。

()

功能原型:

b00lpostmessage(hwndhwnd,uintmsg,wparamwparam,lparamlparam);

参数:

窗口程序接收消息的窗口的句柄。可以取两个具有特定含义的值:

:消息被发送到系统的所有顶层窗口,包括不属于自己的无效或不可见的窗口和被覆盖的窗口。

和弹出窗口。消息不会发送到子窗口。

null:该函数的操作与调用postthreadmessage函数相同,将参数dwthread设置为当前线程的标识符。

msg:指定要发送的消息。

wparam:指定特定于消息的附加信息。

iparam:指定附加的特定于消息的信息。

返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值为零。

ms还提供了用于消息间通信的sendmessage方法sendmessage(),它不同于postmessage:

sendmessage是同步的,而postmessage是异步的。sendmessage在返回之前必须等待发送的消息被执行。

()

postthreadmessage方法可以向指定的线程发送消息。

函数原型:boolpostthreadmessage(dwordidthread,uintmsg,wparamwparam,lparamlparam)

参数除了threadid基本和postmessage一样。

目标线程通过getmessage()方法接受消息。

注意:使用这个方法时,目标线程必须已经有了自己的消息队列。否则,将返回error_invalid_thread_id错误。可以使用

peekmessage()为线程创建一个消息队列。

3.cevent

目标

cevent是mfc中的一个对象,通过改变cevent的触发状态可以实现线程间的通信和同步。

线程消息函数参数方法

原文标题:mfc多线程的实现方式 handle函数?,如若转载,请注明出处:https://www.bjtdsx.com/tag/19899.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「天地水秀」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。