我做了如下的试验:用VC的Wizard做了一个Win32的Hello World程序。该程序的WndProc和About两个callback函数是运行在WinMain线程中的。然后我在WinMain中调用_beginthreadex创建另一个线程,将WinMain中的About callback函数拷贝到该线程中,更名为Proc1,并在新线程中调用
DialogBox(hInst, (LPCTSTR)IDD_DIALOG1, NULL, (DLGPROC)Proc1);
此时Proc1这个callback是运行在新线程中的。我想这能说明问题了。
DialogBox(hInst, (LPCTSTR)IDD_DIALOG1, NULL, (DLGPROC)Proc1);
此时Proc1这个callback是运行在新线程中的。我想这能说明问题了。
解决方案 »
- 32位的程序如何申请大于2G的寻址空间?
- 帮忙解释一下这个结构体(NMTREEVIEW)中各个成员变量的含义
- visual studio 2005.net已经面世很久啦,相应的visual assist出来了么?
- vc++ 函数调用的问题
- 怎么取得鼠标下面的字?比较难
- 菜鸟提问!!!
- 高手在哪!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 窗体最小化时将发送什么消息,如何在系统最小化时将窗体隐藏???
- 请教各位大师:我在编译DirectX 8.1中的playcap例子老是出现unresolved external symbol _CLSID_CaptureGraphBuilder2不知为何?还有就是
- 一个有点难度的问题: 从类型库中我们可以得到(查询)接口的继承关系吗?
- 送分了,经常见的错误有几种原因如何解决(见内....)
- 在侯捷大师的力作“深入浅出MFC”中的疑问,有谁可以解答???
我已经知道答案了,对于大多数回调函数,是运行在调用者线程的环境中的,少数不是,如timeSetEvent的回调函数就不是。这要看该回调函数的文档,如timeSetEvent的回调函数指出在回调函数中只能调PostMessage等少数API。