我想新开一个线程,然后在死循环里面不断的通过GetTickCount的值相减来计算可是有两个问题:
1、程序效率低下,新线程的大部分时间浪费在循环上面
2、新线程不能操纵界面来显示时间,只有通过发自定义消息来和主线程通信。不知为什么,我的消息发出去了总是不响应:
::PostMessage ( ::GetActiveWindow(), WM_MY_MESSAGE, (WPARAM)time, 0 );但是我在别的地方测试,我的消息却能够响应。如何解决!?
1、程序效率低下,新线程的大部分时间浪费在循环上面
2、新线程不能操纵界面来显示时间,只有通过发自定义消息来和主线程通信。不知为什么,我的消息发出去了总是不响应:
::PostMessage ( ::GetActiveWindow(), WM_MY_MESSAGE, (WPARAM)time, 0 );但是我在别的地方测试,我的消息却能够响应。如何解决!?
解决方案 »
- 如何判断线程状态?
- ASCII码如何 转换为 浮点数 ,下面转换的原理是什么?
- 创建的可调边框大小的SDI程序,当我拉动边框时,使得我视图上自己创建的窗口闪烁的现象,哪位大哥帮忙解决一下!!!!!
- DEVCON 命令中 的硬件id怎么确定
- 键盘钩子能不能修改某个按的功能,比如多媒体键盘中的EMAIL,我要屏蔽它原来的功能将,并把它的功能改成打开某个应用程序。我该怎么做,
- 对话框中如何使用RichEdit控件
- 关于如何去掉vc++6的创天简体中文的菜单使其变为英文的菜单
- 紧急呼救!!!!!installshield6.22中把删除程序快捷方式的代码应当放到什么事件中??
- 各位在VC中使用什么表格控件?能否向小弟推荐一二?我把分全部给了吧!!!!!
- 汉诺塔的问题,为什么能想到用2个递归?内有解法的程序,请指点。
- 各位大蝦!甚麼是回調函數亞?可以詳細解釋一下嗎?
- 如何在局域网内进行组播的问题,请各位大虾指教!
::GetActiveWindow()总是返回空,可能是在静态成员函数里面的原因吧。
我在创建线程的时候,将主程序句柄传给线程就好了。我不想在OnTimer里面实现该功能,但是又认为这样的线程太费系统资源了。哪位有更优雅的解决方案???
在线程里面完全可以控制显示时间,无论你是工作线程还是界面线程都可以。
你是工作线程,那么你可以将你的显示控件的指针传递进来,就可以不用传递消息了