如何在OnDrow中执行while(1){......}同时捕获键盘击键消息??

abcsdk 2003-08-21 07:32:46
如何在OnDrow中执行
while(1)
{
......
}
同时捕获键盘击键消息??
...全文
75 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
OnDarw经常被系统调用

while(1)
{
}
可能造成死循环的
  • 打赏
  • 举报
回复
SHORT key = GetAsyncKeyState(VK_F11);
0x8001(-32767)处于被按下状态
1两次调用GetAsyncKeyState(VK_F11);之间,f11被按下过.
whoo 2003-08-23
  • 打赏
  • 举报
回复
FT, OnDraw() 里面 加 While(1), 你如果不知道死得很难看是什么意思, 大可以这么试一试,呵呵。

如果想要及时快速的对键盘做出反应的话,简单实用的办法就是 抛弃Window的消息机制,直接使用一个线程读取键盘状态。这也是一些游戏的标准做法。

如果不想自己处理键盘的话,你可以使用DirectX 中的 DInput 来替你完成这一任务。
spbabyba 2003-08-23
  • 打赏
  • 举报
回复
while(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) // ::peek....
{

::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
这活现在不用你来做了
abcsdk 2003-08-23
  • 打赏
  • 举报
回复
如果在while(1)中加上:
while(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) // ::peek....
{

::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
可以捕获键盘输入消息么??
LiRiverhappy 2003-08-22
  • 打赏
  • 举报
回复
可以先处理onchar函数然后发出Invalidate()函数来调用ondraw函数()
SongBarry 2003-08-22
  • 打赏
  • 举报
回复
你的设计思路有问题,在ondraw里面搞什么while(1)循环,好难理解,你直接处理键盘消息,在键盘消息处理函数的末尾添加上Invalid...()函数使窗口无效,系统会自动发出WM_PAINT消息,之后会调用onchar()函数,所以你只要在onchar()函数里写绘制窗口的代码就可以了。
如果你一定要执行while(1)的同时还能执行别的,那没有办法,只能使用多线程,因为while(1)循环是阻塞的,做这个事同时别的都做不了,你只能把while(1)循环放到别的线程去做了。
总之,你的程序设计思路肯定是有问题的。
shudingbo 2003-08-22
  • 打赏
  • 举报
回复
不用在OnDraw()中处理键盘输入消息;
你直接处理键盘消息,改变相应的参数,(象当前方块向左移一位,改变方块的坐标x-1就行了);
OnDraw()根据方块坐标再画图;
消息是分开处理的,不要放在象你那样嵌套处理,
各消息只对相应的数据处理(x+1,绘图什么的)
abcsdk 2003-08-21
  • 打赏
  • 举报
回复
我是想做一个俄罗斯方块的小程序,要用到键盘移动方块,直接用OnChar好象不行,请各位指点.
abcsdk 2003-08-21
  • 打赏
  • 举报
回复
我的意识是在while循环中捕获键盘消息.各位看看应该怎么办?
shudingbo 2003-08-21
  • 打赏
  • 举报
回复
OnDraw()绘图时间极短。

————————————
我觉得,你这样设计处理程序不合理。
你能否把你的意图说一下,我们帮你看看!
cygnussaint 2003-08-21
  • 打赏
  • 举报
回复
OnDraw不能捕获吧?
grasshopperliu 2003-08-21
  • 打赏
  • 举报
回复
你讲的同时捕获键盘击键消息是什么意思。
我知道一个函数:OnChar()//是用来接收键盘输入的
用法是:
利用MFC ClassWizard为WM_CHAR消息映射处理函数OnChar(),每次用户在键盘上按下了一个键市时,都会调用这个函数。
OnChar()的原型是:afx_msg void OnChar( UINT nChar, UINT nRepCnt, UINT nFlags );
你可以在MSDN上看它的用法。这里有用的就是nChar//你键入的字符,你可以对它进行操作。
Python编程基础教程本教程旨在帮助初学者了解Python编程的基础知识和高级应用。我们将介绍Python的各个方面,包括基础语法、数据类型、控制结构、函数、文件操作、面向对象编程、模块和包、异常处理、装饰器、生成器、迭代器以及协程。1. Python基础Python是一种解释型、交互式的编程语言。它具有简单易学的语法和丰富的库,使得开发过程既快速又高效。在开始学习Python之前,建议您先熟悉基本的计算机科学概念,例如变量、数据类型、运算符等。2. 数据类型Python具有多种数据类型,包括数字(整数和浮点数)、字符串、布尔值、列表、元组、集合和字典等。这些数据类型在Python有着广泛的应用,从简单的数值计算到复杂的数据处理。3. 控制结构控制结构是编程的基本组成部分,它们决定了程序如何执行。Python支持条件语句(if-elif-else)和循环语句(for和while),可以根据程序的特定条件和情况来选择适当的操作。4. 函数函数是封装一段代码的便捷方式,它们可以在需要时被调用。在Python,您可以定义函数,并使用参数来传递数据。函数可以返回值,以便在调用它们时使用。5. 文件操作文件操作是编程常见的任务之一。Python提供了许多内置的函数和方法来进行文件操作,如读取、写入和删除文件等。此外,Python还支持对文件进行高级操作,如读写二进制文件、文件锁定等。6. 面向对象编程面向对象编程是一种流行的编程范式,它使用类和对象的概念来构建复杂的系统。Python支持面向对象编程,您可以使用类来定义对象,并使用继承和多态等特性来扩展和定制对象的行为。7. 模块和包模块和包是Python组织代码的重要工具。模块是一个包含Python代码的文件,而包则是一个包含多个模块的目录。通过使用模块和包,您可以轻松地组织和管理大型项目的代码。8. 异常处理异常处理是Python处理错误的方式之一。当程序出现错误时,Python会抛出一个异常。通过使用try-except语句块,您可以捕获并处理这些异常,以确保程序的稳定性。9. 装饰器装饰器是Python的高级功能之一,它允许您在函数或方法之间添加额外的功能,而不改变其原始实现。装饰器是一种强大的工具,可用于实现各种功能,如日志记录、性能分析等。10. 生成器生成器是Python的一种特殊类型的迭代器。通过使用生成器函数和方法,您可以在需要时生成数据,而不是一次性生成所有数据。这使得生成器在处理大量数据时非常有用,因为它们可以节省内存空间。11. 迭代器和协程迭代器和协程是Python的两个重要概念。迭代器允许您遍历容器类型的数据结构(如列表和元组),而协程则是一种异步编程的方式,它允许您在程序执行多个任务并发执行。这两个概念在处理大量数据和高性能应用程序方面非常有用。
本课程同步书籍:《Python编程从零基础到项目实战》,共500页,其,电子练习册100页,加上本书400页。同步赠送书籍pdf电子书下载,去每一章第一节或第二节课件下载。赠送电子书:Python编程从零基础到项目实践习题答案及分析.pdfPython内置函数案例演示.pdfPython编程从零基础到项目实战-PPT.rar 电子书目录如下:Python编程从零基础到项目实践习题答案及分析.pdf目录Python内置函数案例演示.pdf包含70个内置函数。Python编程从零基础到项目实战-PPT.rar       第1章 从零开始.pptx    第2章 变量和简单数据类型.pptx    第3章 条件分支与循环.pptx    第4章 列表与元组.pptx    第5章 字典.pptx    第6章 函数.pptx    第7章 类.pptx    第8章 标准库.pptx    第9章 异常.pptx    第10章 文件处理.pptx    第11章 图形用户界面.pptx    第12章 数据库操作.pptx    第13章 线程与进程.pptx    第14章 测试及打包.pptx    第15章 Web应用入门.pptx    第16章 商业级别的技术框架.pptx    第17章 大数据应用入门.pptx    第18章 AI应用入门.pptx视频学时共8小时教学视频目录:       0_前导课_与入门者交流学习编程心得.mp4    1_1第一节课概述.mp4    1_2第二节课_什么是Python语言.mp4    1_3节第三节课安装Python.mp4    1_4第四节Python代码编辑工具.mp4    1_5第五课第一个程序.mp4    1_5第六课第一个程序_出错调试.mp4    1_6第七节课良好的编程约定.mp4    2_1第一节变量.mp4    2_2第三节课字符基本操作.mp4    2_2第二节课字符串基本命名.mp4    2_3第四节课数字的运算一.mp4    2_3第四节课数字的运算二.mp4    2_4第六节课数据类型转换.mp4    3_1 第一节课if条件分支.mp4    3_1 第二节课if条件分支elif.mp4    3_2第三节课while循环.mp4    3_2第四节课while循环嵌套.mp4    3_3第五节for循环.mp4    3_4第七节课循环控制语句continue.mp4    3_4第六节课循环控制语句break.mp4    3_5第八节复杂条件及处理.mp4    4_1第一节课接触列表.mp4    4_1第三节课列表元素修改删除.mp4    4_1第二节课列表元素增加查找.mp4    4_1第四节课列表元素合并排序.mp4    4_2第五节课列表冒泡排序算法.mp4    4_3第六节课元组.mp4    5_1第一节课接触字典.mp4    5_1第三节课字典的遍历.mp4    5_1第二节课字典的建立读取修改删除.mp4    5_2第四节课字典的嵌套.mp4    5_3第五节课基于字典的算法.mp4    6_1 第一节课函数基本知识.mp4    6_2 第二节课自定义函数第一步.mp4    6_3 第三节课自定义函数第二步.位置参数.mp4    6_3 第四节课自定义函数第二步默认值和不定长参数.mp4    7_1第一节初识类.mp4    7_2第二节类属性使用.mp4    7_3第三节类改造问题.mp4    7_4第四节类私有.mp4    7_5第六节类回顾.mp4    7_5第四节把类放到模块.mp4    7_6第七节类总结.mp4    8_1第一节课Python标准库知识.mp4    8_2第二节课datetime模块.mp4    8_3第三节课math模块.mp4    8_4第四节课random模块.mp4    8_5第五节课os模块.mp4    8_6第六节课sys模块..mp4    8_7第七节课time模块.mp4    8_8第九节课再论模块_包.mp4    8_8第八节课t再论模块.mp4    8_9第十节窥探标准库源码.mp4    9_1第一节课程序的问题.mp4    9_2第二节课捕捉异常.mp4    9_3第三节课抛出异常.mp4    10_1第一节课文本文件.mp4    10_2第二节JSON格式文件.mp4    10_3第三节XML格式文件.mp4    11_1第一节课初识图形用户界面.mp4    11_2第二节tkinter开发包.mp4    11_3第三节tkinter下的基本组件.mp4    11_4第四节tkinter的ttk子模块下组件.mp4    11_5第五节tkinter的tix子模块下组件.mp4    11_6第六节scrolledtext子模块下组件.mp4    11_7第七节拖拽组件.mp4    11_8第八节编译成可执行文件.mp4    12_1第一节课数据库使用概述.mp4    12_2第二节课关系型数据库.mp4    12_3第三节课NoSQL数据库.mp4    13_1第一节课接触多任务技术.mp4    13_2第二节课第一个多线程抢火车票.mp4    13_3第三节课线程同步.mp4    13_4第四节课线程队列模块.mp4    13_5第五节课并发进程模块.mp4    13_6第六节课其他同步方法.mp4    14_1代码测试.mp4    14_2第二节课代码打包.mp4    15_1第一节课Web基础知识.mp4    15_2第二节课Web服务器.mp4    15_3第三节课WSGI服务器接口.mp4    15_4第四节课Web应用程序开发.mp4    16 _1初识Web应用框架.mp4    16 _2第二节课webpy框架.mp4    16 _3第三节课Django框架.mp4    17_1第一节课什么是大数据.mp4    17_2第二节课一个完整的网络爬虫.mp4    17_2节一个完整的网络爬虫.mp4    17_3第三节课Python_Spark.mp4    18_1节什么是人工智能.mp4    18_2PythonAI编程库介绍.mp4    18_3第三节课Numpy应用示例.mp4    18_4第四节课三酷猫的梦.mp4    numpy专题讲座一安装及一维数组.mp4    numpy专题讲座三e底数组指数计算.mp4    numpy专题讲座二二维数组及维度调整.mp4    numpy专题讲座五把不同集合转为数组.mp4    numpy专题讲座六访问数组.mp4    numpy专题讲座四空数组0或1数组的建.mp4  

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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