欢迎转载,但请注意,除非特别声明,本站采用许可:署名,非商业。需要联系我可发邮件至
预览模式: 普通 | 列表

一个从CStatic派生的动态曲线图绘制控件

关键词:MFC GDI 曲线图绘制

本控件只是一个很简单的控件,比任务管理器里的曲线图略复杂,不具有图例、鼠标移动可以捕捉曲线上的坐标等特性。
具体如下:
  1)从CStatic派生,容易在对话框中使用。
  2)能够随对话框的缩放自动改变大小,这里假设对话框中其它元素的位置基本不变。
  3)曲线的粗细,颜色,线型(实,虚线)可以自由设置。
  4)可以控制曲线的隐藏/显示。
  5)两个坐标轴,Y轴根据数据自适应,实际数据最大最小值各偏离5%是坐标轴的最大最小值(简化起见,坐标轴采用五等分)。X轴是时间轴,一个像素点代表一个数据点,假设采样按一定的频率。
  6)可以添加多条曲线。
  7) 使用双缓冲,避免图形闪烁。
做一个CStatic派生控件的基本步骤:
  1)定义一个从CStatic派生的类。
  2)重载有关消息映射,WM_PAINT,WM_ERASEBKGND
  3) 在OnPaint中绘图,在这里根据实际的需要做不同的计算,绘制。大致可分为以下几步,I布局计算,CStatic是整个绘图区,将这个区域划分为边缘空白,坐标轴区,曲线区等几个部分,需要算出各个部分的矩形顶点,以便控制曲线的绘制。II绘制背景。III绘制坐标轴。IV绘制曲线。其中需要用到简单的坐标映射知识。
运行截图:





具体的可以看源代码。下载文件LineChartControlDemo.rar (200.48 KB , 下载:1070次)
可以作为控件使用的是LineChartCtrl.h,LineChartCtrl.cpp,MemDC.h这三个文件。

其它可供参考的源代码链接:
http://www.codeproject.com/dialog/CStatusGraphCtrl.asp
http://www.vchelp.net/vchelp/zsrc/realtime_plot.zip
http://www.codeproject.com/miscctrl/histogramctrl.asp
http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=1631


需要更强大的绘图功能怎么办?只要理解了计算图形布局和画图的过程,会使用双缓冲,如果需要在单文档的视图中使用,同样在OnPaint中处理绘制,并处理其它有关消息就可以了(主要是ON_SIZE时要重新计算布局),如果要做一个通用的控件,只需要从CWnd派生即可,要多强大就看你的想像力了。

对话框中的控件随对话框的大小改变做相应的变化,本例仅展示了控制图形显示控件和Exit按钮。要做更复杂的控制,原理是一样的,无非是记住和计算更多的位置,主要需要处理WM_SIZE消息和利用MoveWindow函数。

总之,图形界面的程序,无论是绘制曲线还是绘制窗口,无非就是计算位置(在哪儿绘制,这需要处理相关消息以取得窗口,客户区大小的变化),用GDI函数绘图(MoveWindow也是调用了系统的绘图函数才能画出窗口)。

Update:
2008-8-11 有同学反应源代码在VC6.0下无法编译通过,将源代码中的CArray用vector替换,对C++稍微熟悉一点儿的话,做这件事需要5~20分钟。
源代码这里下载。下载文件LineChartControlDemo.rar (210.67 KB , 下载:35次)
标签: MFC

Oracle 绑定变量的用法

关键字: Oracle 绑定变量(Bind Variable )
1.让Oracle自己绑定变量
set serverout on;
set timing on;
declare
l_sql varchar2(2000);
l_count number;
l_param1 varchar2(100);
l_param2 varchar2(100);
begin
l_param1:=’a';
l_param2:=’b';
select count(*) into l_count from table1 where col_1=l_param1 and col_2=l_param2;
dbms_output.put_line(l_count);
end;
/
在上面的情况,Oracle会自己绑定变量,即,如果参数保存在一个数组中,select语句放在一个循环中,
select 语句只会编译一次。
像这样
for i in 1..3
loop
select count(*) into l_count from table1 where col_1=l_param1 and col_2=l_pa

[阅读全文]

标签: Oracle SQL编程

日语汉字读音在线速查

中国人学日语有其他国家的人无可比拟的优势,那就是我们对汉字的书写很熟悉,而且日文中的大部分汉字和中文汉字字形相似,意思相近。但是日文汉字的读音和中文汉字却很不一样。

日语汉字读音在线速查正是为了充分利用中国人学日语的优势而编写的一个小工具,
利用这个工具,你只要用任何的中文输入法输入日文汉字词语对应的中文汉字,就可以查到对应的日文汉字词语读音。

更新历史:
2007-11-17 该工具正在编写中...,已做好首页:),这个工具我自己也是急用的,所以不用担心,我肯定会做出来的:)
2007-11-20 预计本周末完成初版。要上班,没有时间,又没有用PHP做过项目,连语法都还不太清楚,只能在上下班的路上看PHP的书,这时,觉得上下班的路原来并不远。
2007-11-26 程序已完成一个可用的版本,基础数据整理中。
2007-11-28 程序发布,已经可以查词了,但是感觉速度很慢,但我在本机测试感觉还可以的,网速的原因?
2007-12-5   重大更新。
           &

[阅读全文]

百度面试题一道

2007年10月27日日面试baidu高程,惨败题目如下,给大家共勉:

A厂有1万个工人,编号0-9999,(   EE[10000]   ),     1个厂长(   GG   )分派任务,     1个监工(   MM   )管理工人.
厂子忙的时间不确定,可能突然很忙,1天接到任务5000多个,1个任务只能分配给1个工人做,   也可能好几十天没新任务.

厂长分配任务给这1万个工人干,按工人编号一个一个来,到最后一个工人就又从头开始,任务完成时间各不相同,
可能一个工人在分配任务的时候手里还有任务,   就得换下一个。

但是这1万个工人都很懒,领到了任务先不做,需要监工1个1个去问,如果工人有任务,就做,如果工人没任务,则不做。
厂长只管分任务,1个1个来,可能几天也没新任务,不累;
但是监工很累,监工每天都要看所有工人的情况,即使这些工人都没有任务,&

[阅读全文]

标签: 面试

在windows下批量执行mysql脚本

关键字: mysql .sql文件 windows

新建一个文本文件r.txt,改名为r.cmd。
编辑这个文件,内容如下:
rem MySQL_HOME 本地MySQL的安装路径
rem host mysql 服务器的ip地址,可以是本地,也可以是远程
rem port mysql 服务器的端口,缺省为3306
rem user password 具有操作数据库权限的用户名和密码,如root
rem default-character-set 数据库所用的字符集
rem database 要连接的数据名,这里用的test
rem test.sql 要执行的脚本文件,这里为test.sql
rem mysql 后面的应该放在一行。
set MySQL_HOME=C:\mysql-4.1.10-win32
set PATH=%MySQL_HOME%\bin;%PATH%
mysql --host=192.168.0.66 --port=3306 --user=root --password=123 --default-character-set=utf8 test<test.sql
标签: MySQL

Windows下织梦内容管理系统(dedecms4.0Rc1)安装指南

关键词: 织梦 dedecms windows php apache mysql

1. 简介
织梦内容管理系统(dedecms)是基于php+MySQL的内容管理系统,最新版本是4.0Rc1。
要了解更多信息请到http://www.dedecms.com。

2. 下载
dedecms4.0Rc1 http://www.dedecms.com/html/chanpinxiazai/20070407/38513.html
mysql5.0.41 http://dev.mysql.com/downloads/mysql/5.0.html
PHP5.2.3 http://www.php.net/downloads.php
apache2.2.4 http://httpd.apache.org/download.cgi
3.安装步骤
1)安装刚才下载的软件
下面假设各软件的安装目录为
c:\dedecms4.0Rc1
c:\mysql-5.0.41
c:\php-5.2.3
c:\apache-2.2.4
我习惯下载zip版的程序,直接解压到一个目录就可以了。没有的话,只好下载windows_installer版本

[阅读全文]

标签: PHP

Windows下开源缺陷跟踪系统mantis安装指南 V1.0.0a3

关键词: mantis 缺陷跟踪 windows php apache mysql

1. 简介
mantis(螳螂)是一个基于php/MySQL/web的缺陷跟踪系统,最新版本是1.0.0a3。
要了解更多信息请到http://www.mantisbt.org/
2. 下载
mantis1.0.0a3 http://www.mantisbt.org/download.php
mysql4.1.x http://dev.mysql.com/downloads/mysql/4.1.html
PHP5.0.4 http://www.php.net/downloads.php
apache2.0.54 http://httpd.apache.org/download.cgi
3. 安装步骤
1)安装刚才下载的软件
下面假设各软件的安装目录为
c:\mantis-1.0.0a3
c:\mysql-4.1.10
c:\php-5.0.4
c:\apache-2.0.54
我习惯下载zip版的程序,直接解压到一个目录就可以了。没有的话,只好下载windows_installer版本:)。
a.安装apache2.0.54
我下载

[阅读全文]

标签: mantis

Windows下同时安装运行mysql的多个版本

关键字: mysql 多版本 安装

1.问题来源
一台机子上要运行mysql-4.1.21-win32和mysql-5.0.27-win32两个版本的mysql,其中5.0.27安装成windows服务,默认情况下,mysql运行于3306端口,因此需要做适当配置才能让两个版本同时运行。
2.解决步骤
1)软件准备
mysql-4.1.21-win32 和mysql-5.0.27-win32的zip版,不需要安装的。直接解压到硬盘,这里以C盘为例,解压后为c:\mysql-4.1.21-win32,c:\mysql-5.0.27-win32。
2)配置
mysql-5.0.27-win32
将c:\mysql-5.0.27-win32\my-medium.ini复制一份,改名为my.ini。打开my.ini,将两处port=3306改为port=3308,
在myisam_sort_buffer_size = 8M这一行下面添加
#Path to installation directory. All paths are usually resolved relative to this.
basedir=

[阅读全文]

标签: MySQL