控制台程序如果采用事件处理方式的话如何处理呢

dearlee_01 2006-03-06 05:46:38
rt
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bohlee 2006-03-07
  • 打赏
  • 举报
回复
控制台程序应该是windows系统对dos系统程序的迁移提供支持,其本身不存在事件模型。至于对多线程的支持,dos系统不存在多线程的概念...,但是win下控制台程序可以这么做
冥王之锤 2006-03-06
  • 打赏
  • 举报
回复
你可以不用控制台程序,而是写一个窗口隐藏掉的windows程序,就可以支持消息机制了.

同意!
jixingzhong 2006-03-06
  • 打赏
  • 举报
回复
模拟消息事件 ~
逸学堂 2006-03-06
  • 打赏
  • 举报
回复
控制台程序如果采用事件处理方式的话如何处理
~~~~~~···
楼上的方法。

或者自己模拟消息事件
wshcdr 2006-03-06
  • 打赏
  • 举报
回复
#include <windows.h>
#include <stdio.h>
#include <conio.h>
unsigned long WINAPI Thread(PVOID pvoid);
void main()
{
DWORD dwThreadId;
printf("use timer in workthread of console application<masterz>\n");
HANDLE hThread = CreateThread(
NULL, // no security attributes
0, // use default stack size
Thread, // thread function
0, // argument to thread function
0, // use default creation flags
&dwThreadId);
DWORD dwwait=WaitForSingleObject(hThread,1000*30);
switch(dwwait)
{
case WAIT_ABANDONED:
printf("main thread WaitForSingleObject return WAIT_ABANDONED\n");
break;
case WAIT_OBJECT_0:
printf("main thread WaitForSingleObject return WAIT_OBJECT_0\n");
break;
case WAIT_TIMEOUT:
printf("main thread WaitForSingleObject return WAIT_TIMEOUT\n");
break;
}
CloseHandle(hThread);
_getch();
}

unsigned long WINAPI Thread(PVOID pvoid)
{
MSG msg;
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
UINT timerid=SetTimer(NULL,111,3000,NULL);
BOOL bRet;
int count =0;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
if(msg.message==WM_TIMER)
{
count++;
printf("WM_TIMER in work thread count=%d\n",count);
if(count>4)
break;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
KillTimer(NULL,timerid);
printf("thread end here\n");
return 0;
}
junguo 2006-03-06
  • 打赏
  • 举报
回复
你可以不用控制台程序,而是写一个窗口隐藏掉的windows程序,就可以支持消息机制了.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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