闪文书库(Www.Shanwen.Com)-欢迎广大书友光临闪文阅读
  闪文书库 > 名著小说 > IT知识库 > 未知会客室 加入书架 | 推荐本书 | 打开书架 | 章节目录 | 返回书页 | 错误/举报 | 繁體中文
第一卷 第一章

作者:未知     搜这本小说最快的更新     下载这本小说的多模式版电子书

为了方便您阅读最新章节,请记住“闪文书库”网址 www.shanwen.com,注册会员收藏您喜爱的书籍
====>>>公告:晚上6点-11点高峰期,可能出现图片打开缓慢,如果太长时间没有打开,请刷新
     第一卷第一章

    ?单位线程是如何处理消息的

    Windows的消息处理机制是用如下代码进行消息处理的:

    MSGmessage;

    While(::GetMessage(&message,NULL,0,0)){

     ::TranslateMessage(&message);

     ::DispatchMessage(&message);

    }

    当消息到达时,由TranslateMessage进行必要的转换,例如:将WM_KEYDOWN消息转换为包含有ASCII字符的WM_CHAR消息,

    然后由DispatchMessage进行发送,当处理完成后,DispatchMessage返回.

    放弃控制

    如果在等待方式下,DispatchMessage必须等待处理完成后才能返回,在此之前将不能处理任何消息,

    而下面的代码可以做到即使没有消息到达程序的情况下也立即返回

    MSGmessage;

    While(::PeekMessage(&message,NULL,0,0,PM_REMOVE)){

     ::TranslateMessage(&message);

     ::DispatchMessage(&message);

    }

    计时器是不依赖CPU的时钟速度的.注意的是因为Windows并不是实时的操作系统,所以,如果你指定的周期小于100毫秒的话,

    计时器事件之间的周期可能不精确.有了计时器,有时可以替代多线程情况,例如下面的代码就允许在循环内仍然接收处理消息.这是一个进度条,

    在OnTimer里面改动进度条的显示,同时可以自定义CANCEL消息,在OnCancel中将程序终止.

    VoidCDlg::OnStart()

    {

     MSGmessage;

     SetTimer(0,100,NULL);

     GetDlgItem(IDC_START)->EnableWindow(FALSE);//使按钮无效

     VolatileintnTemp; //使变更不保存在寄存器中,因为变量如果保存在寄存器中,在线程的切换过程中可能会出现值的错误.

     For(m_nCount=0;m_nCount
  为了方便下次访问,请牢记闪文书库网址www.shanwen.com,您的支持是我们最大的动力。注册会员
|
|
|
|
闪文书库,收录精品小说。请点击到书库论坛推荐你要看的书,我们收录 加入书架书签 | 推荐本书 | 打开书架 | 阅读目录 | 返回书页 |  Top ↑
作品本身仅代表作者本人的观点,与闪文书库立场无关。阅读者如发现作品内容确有与法律抵触之处,可向闪文书库举报
如有章节错误、排版不齐或版权疑问、作品内容有违相关法律等请至闪文客服举报论坛举报,可获加分奖励
Copyright (C) 2007 Www.Shanwen.Com 闪文书库 All Rights Reserved