关于UI多线程的问题?

lc79 2002-07-01 11:28:40
我用MFC写了个对话框程序,点击菜单,启动一个新的UI线程,这个UI线程能够正常工作,但是启动UI线程后那个主窗口就不响应我的键盘消息,不启动UI线程是能够响应的,我用的是PreTranslateMessage(MSG* pMsg) 来拦截消息,然后判断是否为键盘消息,进行相应的处理。请问各位这是怎么回事呢?有什么解决的方法吗?在这先谢谢各位了!
...全文
59 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lc79 2002-07-03
  • 打赏
  • 举报
回复
我现在发现了一个问题,我并不希望让IU线程去发送消息,我还是希望主线程自己去拦截消息执行消息循环,如果让UI线程去发送,那启动UI线程不是没意义了,全部在主线程里执行就行了?
lc79 2002-07-03
  • 打赏
  • 举报
回复
我用AfxBeginThread(RUNTIME_CLASS())
谁能告诉我怎么传父窗口句柄啊?
lc79 2002-07-03
  • 打赏
  • 举报
回复
各位帮帮忙哈!!
lc79 2002-07-02
  • 打赏
  • 举报
回复
我去试试成功的话,马上结帖。
weihaha 2002-07-02
  • 打赏
  • 举报
回复
HWND FindWindow(
LPCTSTR lpClassName, // class name
LPCTSTR lpWindowName // window name
);
lc79 2002-07-02
  • 打赏
  • 举报
回复
我用AfxBeginThread(RUNTIME_CLASS())
怎么传父窗口句柄啊?
lc79 2002-07-02
  • 打赏
  • 举报
回复
嘿嘿!
给个例子好不好?
netsbull 2002-07-02
  • 打赏
  • 举报
回复
启动UI线程时传给他不就行了,哈哈
lc79 2002-07-02
  • 打赏
  • 举报
回复
UI线程里面怎么得到主线程的窗口句柄呢?
lc79 2002-07-01
  • 打赏
  • 举报
回复
怎么没人愿意帮帮我呢?很急啊!!
lc79 2002-07-01
  • 打赏
  • 举报
回复
这个问题很急,请各位帮帮忙!
weihaha 2002-07-01
  • 打赏
  • 举报
回复
在子线程中调用postmessage
(HWND hWnd, // handle to destination window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
将第一个参数设置为主线程窗口句柄,就可以将子线程接受到的消息转发到主线程了。
或者用HWND SetActiveWindow(
HWND hWnd // handle to window
),将输入焦点交还给主线程窗口.

lc79 2002-07-01
  • 打赏
  • 举报
回复
不用钩子就不行了?
renren6250 2002-07-01
  • 打赏
  • 举报
回复
gz
lc79 2002-07-01
  • 打赏
  • 举报
回复
那我需要怎样才能让主线程接收键盘消息呢?
难道一启动UI线程,主线程就不能响应键盘消息了?
DivXExtend 2002-07-01
  • 打赏
  • 举报
回复
agree with scklotz
scklotz 2002-07-01
  • 打赏
  • 举报
回复
你在 UI 线程里的键盘,鼠标等输入的消息
只能发送给 UI 线程本身的窗口
无法再送到原主线程的窗口。

也就是说,UI 线程和原来你的主线程
鼠标和键盘输入其实是独立的
实际上,是他们各自有自己独立的消息队列
================================================================
Country roads, take me home to the place I belong, West
0AVirginia, Mountain Mama. Take me home, country roads.
================================================================
scklotz 2002-07-01
  • 打赏
  • 举报
回复
你在 UI 线程里的键盘,鼠标等输入的消息
只能发送给 UI 线程本身的窗口
无法再送到原主线程的窗口。

也就是说,UI 线程和原来你的主线程
鼠标和键盘输入其实是独立的
实际上,是他们各自有自己独立的消息队列
================================================================
Country roads, take me home to the place I belong, West
0AVirginia, Mountain Mama. Take me home, country roads.
================================================================

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧