java与MFC中的一些常识
一个.java文件中可以有很多类。不过注意以下几点:
1.public 权限的类只能有一个(也可以一个都没有,但最多只有1个)
2.这个.java文件的文件名必须是public类的类名(一般的情况下,这里放置main方法是程序的入口。)
3.若这个文件中没有public的类,则文件名随便是一个类的名字即可
4.你用Javac 编译这个.java文件的时候,它会给每一个类生成一个.class文件
使用MFC的应用程序,如果某个按钮的处理函数一直在执行循环做某一个任务,那还能响应其它的消息吗?
就比如说某一个消息对应的处理函数一直在执行WHILE循环,然后我希望关闭程序或按其它按钮执行其它功能那产生的消息还能被应用程序响应吗?
据说是由APP下的RUN()函数维持消息循环的,如果处理函数不结束函数不就没法返回了吗,那是不是就没法回到RUN()进行消息循环来响应其它消息了? 假如能响应其它消息又是如何实现的?
如果的确是在执行while循环的话,确实不能再被响应了。函数不结束也的确无法返回。
要响应其他消息的话也做不到。
但是很多情况下如果有需要大量处理的数据要使用WHILE循环的话,完全可以另开一个线程去处理。没有必要堵塞主线程。 而且很多WHILE是可以被避免的,具体还是要看你实际应用。
- 追问
-
我是要做一个监控和控制电机的软件,要不停的读传感器数据计算后立刻输出控制信号,这么做可能只能用WHILE吧。。另开一线程麻烦吗,我不太懂这个,我翻了基本书也没找着啊,有没有简单快速介绍这个怎么用的书? 是不是用一个什么afxbeginthread命令什么的。。?
- 回答 是啊。这种情况下没有办法,只能另开线程。用AfxBeginThread或者CreateThread
但是按照目前的设计思路而言,这样的WHILE循环处理消息应该单独开一个线程进行监听。这样不会影响主线程和其他线程。监听线程接受到了消息后,MFC应该是使用函数指针来进行回调,这个有些记不住了,拿不准。
把画图窗口的指针利用这个参数LPVOID PARAM传给线程。
CWnd *pWnd = (CWnd *)PARAM;
CDC *pDC = pWnd->GetWindowDC();
1、使用全局变量,CDC *g_pDC = NULL;
在OnDraw中为其赋值。
在线程中判断g_pDC不为空,则执行函数体。
2、将pDC作为PARAM传进去。
3、使用全局变量theApp来获取所需的CDC。
这个做法不好,GDI并不是线程安全的,正确的做法是你不断更新内存中的一张位图,然后在正常的OnPaint里面,把内存中的位图复制到DC中。复制的时候你还要注意保证复制的同时,你的线程没有正好在更新这张位图。 位图的句柄等可以通过线程函数的参数(你这里是PARAM)来传递。 CreateThread或者AfxBeginThread均有一个参数,可以直接传递到你的线程函数的PARAM中。
java与MFC中的一些常识的更多相关文章
- MFC中使用post提交form-data上传文件
已经有将近6年时间没写过MFC了,想想以前我也是写VC++入门程序开发的,那时候写协议栈.搞语音编码.做视频压缩和实时数据传输,相比现在更多偏业务的开发,那时候搞得都是非常技术的东西.眨眼间,MFC已 ...
- JAVA WEB项目中各种路径的获取
JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报 分类: JAVA开发(41) 1.可以在s ...
- 揭开Java IO流中的flush()的神秘面纱
大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...
- JAVA安装过程中出现的“javac不是内部或外部指令”的解决方法
近来重新安装了JAVA,安装过程中出现问题,网上找到解决办法,汇总发布. 解决流程: 1.确定自己的环境变量设置没问题,没有出现遗漏 : . 等情况 (具体环境变量设置百度) 2.环境变量设置后 ,d ...
- Java Web开发中MVC设计模式简介
一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...
- MFC中使用FLASH
一.准备工作 第一步:下载并安装Adobe Flash Player. 从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash Player(大约 ...
- Java EE 编程中路径
版权声明:未经博主允许,不得转载 首先我们要限定一个范围,是一个项目,或是以个访问地址..就先以一个项目为限定的范围 前述: 学过物理学的都知道相对运动和绝对运动, 虽然是相似的概念,但这里的要简单得 ...
- MFC中换行实现
在mfc中编辑框允许输入多行时,换行符被表示为<归位><换行>即"\r\n",用ascii码表示为13 10 如果为编辑框中想要输入换行,就请将编辑框的属性 ...
- 【java】jackson 中JsonFormat date类型字段的使用
为了便于date类型字段的序列化和反序列化,需要在数据结构的date类型的字段上用JsonFormat注解进行注解具体格式如下 @JsonFormat(pattern = "yyyy-MM- ...
随机推荐
- Cookie和Session的作用和工作原理
一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...
- Educational Codeforces Round 34 (Rated for Div. 2)
A. Hungry Student Problem time limit per test 1 second memory limit per test 256 megabytes input sta ...
- docker容器为什么可以跨平台部署
docker镜像和操作系统没关系,docker最大的价值就是提出了镜像打包技术.首先你的明白什么是docker,什么是镜像,什么是容器,然后你就能明白镜像和操作系统之间的关系.docker是一个引擎, ...
- Welcome-to-Swift-14构造过程(Initialization)
构造过程是为了使用某个类.结构体或枚举类型的实例而进行的准备过程.这个过程包含了为实例中的每个属性设置初始值和为其执行必要的准备和初始化任务. 构造过程是通过定义构造器(Initializers)来实 ...
- 【Luogu】P3709大爷的字符串题(莫队算法)
题目链接 语文题啊…… 看题解发现是让求区间中最多的数的个数,于是果断理解了一会题解……莫队套上完事. sum[i]表示i这个数出现的次数,cnt[i]表示出现i次的数有几个,然后乱搞搞……就好了 # ...
- 2017.8.2 Noip2018模拟测试赛(十八)
日期: 八月二日 总分: 300分 难度: 提高 ~ 省选 得分: 40分(又炸蛋了!!) 题目列表: T1:分手是祝愿 T2:残缺的字符串 T3:树点涂色 赛后心得: 哎,T1求期望,放弃. ...
- 【Hihocoder1636】Pangu and Stones(区间DP)
题意:N堆石子,每次可以合并连续的长度从L到R的若干堆石子为1堆,费用为选择的石子总个数,求将N堆合并成1堆的最小总花费,无解输出0 思路:dp[i][j][k]表示将i到j这段区间合并为k堆的最小代 ...
- one day php. alomost all;
<? namespace Test; use \PhpProject\PhpApp as Other; $u=new Other("ns test"); echo $u-&g ...
- vue2.0 mintUI 学习备忘
一 技术栈:vuecli+vuejs2+mintUI+axios vuecli :脚手架工具 vuejs:前端框架 mintUI:基于vuejs移动端UI axios:vuejs ajax数据交互 ...
- 如何在官网上下载Linux版本的MySQL安装包
如何在官网上下载Linux版本的MySQL安装包 参考百度经验,<如何在官网上下载Linux版本的MySQL安装包> 原文链接:https://jingyan.baidu.com/arti ...