- 博客(75)
- 资源 (17)
- 收藏
- 关注
原创 MFC中的GDI绘图(5)
坐标映射实例(1)建立单文档MFC项目Draw:New—>Projects—>MFC AppWizard(EXE)—>Single Document。(2)找到CMainFrame::PreCreateWindow函数,在其中设置默认窗口大小为400 pixel*300 pixel。BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
2014-11-27 16:22:03
1283
原创 MFC中的GDI绘图(4)
3、创建绘图工具并选入DC 有了画布,要绘图我们必须有画笔画刷。在Windows中有HPEN、HBRUSH等GDI对象,MFC对GDI对象进行了很好的封装,提供了封装GDI对象的类,如CPen、CBrush、CFont、CBitmap和CPalette等,这些类都是GDI对象类CGdiObject的派生类。 一般先创建画笔(刷),然后调用CDC::SelectObject函数将画笔
2014-11-27 16:19:52
1605
原创 MFC中的GDI绘图(3)
2、设置坐标映射 (1)Windows坐标系统Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系。一般而言,GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的映射模式将逻辑坐标转换为设备坐标。设备坐标系是面向物理
2014-11-27 16:18:48
1051
原创 MFC中的GDI绘图(2)
二.MFC中GDI绘图 GDI绘图包括以下步骤:获取设备环境,设置坐标映射,创建绘图工具,调用DC绘图函数绘图。1、获取设备环境(1)在SDK编程中,获取设备环境的方法有两种:通过API函数BeginPaint。应用程序响应WM_PAINT消息进行图形刷新时主要通过BeginPaint函数获取设备环境,在消息处理函数返回前调用API函数EndPaint释放设备环境。函数原
2014-11-27 16:15:11
1197
原创 MFC中的GDI绘图(1)
一.关于GDI的基本概念什么是GDI Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。 在Windows操作系统中,动态链接库C:\WINDOWS\system32\gdi32.dll(GDI Client DLL)中定义了GDI函数,实现与设备无关的包括屏
2014-11-27 16:14:23
1275
原创 error LNK2019: 无法解析的外部符号 __imp__PlaySoundA@12,该符号在函数 .... 中被引用....
VS中出现:error LNK2019: 无法解析的外部符号 __imp__PlaySoundA@12,该符号在函数 .... 中被引用....的编译错误是,一般是是因为PlaySound函数在Winmm.lib库中,所有需要需要链接库,以下方法可解决:1、头文件中声明:#pragma comment(lib, "winmm")2、菜单Project --> Settings...-->L
2014-11-21 11:37:41
2926
转载 在vc2008中用_crtBreakAlloc调试内存泄漏
这两天调一个程序,发现每次退出都有内存泄漏,在此总结一个调试内存泄漏的好方法。 对于比较明显的内存泄漏,vc2008是比较容易定位的,在Debug模式F5运行,退出时会列出引起内存泄漏的问题代码所在文件及行号;但如果是比较隐蔽的内存泄漏,Output输出窗口只会输出部分信息,形式如下: Detected memory leaks! Dumping objects -> {8
2014-10-08 16:44:53
513
原创 使用CreateFile()打开COM10及以上串行口
程序调试时发现,使用CreateFile()打开COM4时正常,打开COM10时却总是失败。这两个端口均为虚拟COM口,通过蓝牙仿真串口完成数据收发,除了命名不同外,本质上并无任何不同。而MSDN上对使用CreateFile()打开设备函数却失败返回并无详细解释,百思不得其解。上网百度一下找到了相关资料,原来是:Win32 API函数CreateFile()除了可打开普通文件外
2014-08-21 16:50:36
1170
原创 SQL常用语法
一、基础1、创建数据库CREATE DATABASE database-name 2、删除数据库drop database dbname3、备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwi
2014-05-08 14:48:23
1221
2
原创 CString与LPCWSTR/LPSTR/LPWSTR/char*等类型的转换
一.CString与LPCWSTR 两者的不同:LPCWSTR 是Unicode字符串指针,初始化时串有多大,申请空间就有多大,以后存贮若超过则出现无法预料的结果,这是它与CString的不同之处。而CString是一个串类,内存空间类会自动管理。 CString转换成LPCWSTR 方法一:CString strFileName;
2014-04-23 17:06:53
1103
转载 解决非Unicode编码的软件多语言版本在日语、韩语环境下的乱码问题
在第一次为公司的客户端软件定制日语版本的时候,由于软件开发是非Unicode版本的,发现当加载日语后,无论是在中文操作系统还是在日语操作系统下,软件界面上的大部分日语显示的都是乱码。在上网查看了相关的知识文档和案例,结合目前我们软件的开发环境和具体的代码实现,找到了两种解决办法。 第一种: 就是将整个软件工程变为Unicode编码格式。虽然这种方法能从根本上实现软
2014-04-21 11:27:15
6759
原创 类对象和类指针
声明:类对象:利用类的构造函数在内存中分配一块内存,调用了构造函数类指针:是一个内存地址值,指向内存中存放的类对象,没有调用构造函数引用成员:对象用"."指针用"->"对象生命期:若是成员变量,则是类的析构函数来释放空间若是函数中的临时变量,则作用域是该函数体内指针生命期:则需利
2014-04-02 11:56:49
1274
原创 vs2010错误:error MSB8008: 指定的平台工具集(v110)未安装或无效
平台工具集(v110)是vs2012下用的,你是用vs2010打开工程,它默认是用v100,所以这个工程可能用vs2012打开并更新过。 解决方法:右键点击你的项目,选择属性,再点击配置属性中的常规,常规中有个平台工作集,把V110改成V100,点击应用即可。
2014-03-24 11:27:11
3176
1
原创 VS2010错误: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题。在电脑里面搜索一下cvtres.exe,发现存在多个文件,使用最新的cvtres.exe替换老的文件即可,替换之前记得备份一下,如果不对,可以替换回来。例如:我的电脑里面安装了vs2010,出现该问题时,在电脑里面搜索发现C:\Program Files\Mi
2014-03-24 11:24:26
2293
2
原创 C语言文件操作函数大全
clearerr--清楚文件流的错误标识相关函数 feof表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose--关闭文件 相关函数 close,fflush,fopen,setbuf 表头文件 #i
2014-03-20 09:05:49
1106
原创 Bitmap文件格式简介
位图是Windows标准格式的图形文件。它将图像定义为由像素组成,每个点可以由多种色彩表示。位图文件格式如下表所示: BITMAPFILEHEADER 的结构typedef struct tagBITMAPFILEHEADER { WORD bfType; 指定文件类型,必须是0x424D,即字
2014-03-19 17:02:41
2888
原创 Bitmap-BITMAPINFOHEADER结构
bmp图片的格式规定一个扫描行所占的字节数必须是4的倍数,不足的以0填充,因此,在通过图形像素大小计算图形大小时,其计算公司为:biSizeImage = (biWidth*biBitCount+31)/8*biHeight其中,biWidth*biBitCount是每一行图像占用的位数,除以8是每行图像占用的字节数,31是按整数除法自动取整的原则来的,其保证每行图像字节数必须是4的整
2014-03-19 17:00:32
1378
原创 VC++中对话框资源操作
法1:在你的工程中添加另一个工程的rc文件,这时资源视图中就会出现两个rc,从后加的rc中拷贝资源到你自己工程的rc中就可以了。 法2:vc中如何拷贝一个工程的对话框 资源到另一个工程中?这是一个很专业也很有用的问题。其实VC的设计者早就为我们考虑了这个问题。在VC6环境下,选择Class视图,选中想要克隆的对话框所对应的类,例如CAboutDlg,点击鼠标
2014-03-03 15:58:02
1675
转载 X Window编程基础 2
绪论本教程是有关X窗口编程的"would-be"系列教程的第一部。单方面来说,这个教程是没用的,因为一个真正的X窗口程序员通常会使用抽象级更高的库,例如Modif(或者是它的自由版本lesstiff),GTK,QT或者其它类似的库。但...也许我们应该从某个更易于学习理解的地方开始。因为,知道它们到底是如何工作的应该永远不是个坏主意吧。读过这个教程后,读者应该能够编写非常简单的X窗
2014-03-01 10:06:27
1975
转载 X Window开发编程
开始编程前先要有一个好的开发工具 可以快速的查找函数与宏定义及结构定义我推荐vim然后是要随时准备看man 基本上x开发不难 但是看man理解每个函数那对以后的开发会更快下面先开始vim相关的配置1 创建/usr/include目录下的定义索引cd /usr/includectags *2 创建 /usr/include/X11目录下的定义索引cd /u
2014-03-01 10:03:44
1850
原创 X Window编程基础 1
理解 Xwindow很多人在用 Xwindow,但是他们是在用一些包装掩盖下的 Xwindow,那些包装有些很不稳定,占用大量资源,以至于有人说 Xwindow 是垃圾。其实 Xwindow 是一个非常出色的图形系统,你应该抱怨的是那些不稳定的包装,而不是 Xwindow 本身。Xwindow 是非常巧妙的设计,很多时候它在概念上比其它窗口系统先进,以至于经过很多年它仍然是工作站上的工业标
2014-03-01 09:55:46
3439
原创 ASCII码表
ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符 0 NUT 32 (space) 64 @ 96 、1 SOH 33 !
2014-02-28 11:52:14
1193
原创 GetSafeHwnd()和GetSafeHandle()的主要区别
GetSafeHwnd()和GetSafeHandle()的主要区别:1.使用者不同:(1)窗体使用:GetSafeHwnd()用于获取窗体的安全句柄(即HWND),有了HWND我们就可以方便的对HWND指向的窗体进行所需的操作了;(2)GDI对象使用:GetSafeHandle(),用于获取GDI对象的句柄。注意:在使用指针时强烈建议这
2014-02-25 11:30:49
1118
原创 VC鼠标键盘消息
VC中键盘事件处理主要是通过对相应的消息的响应,这些事件有如:WM_CHAR、WM_KEYDOWN、WM_KEYUP等他们分别对应OnChar、OnKeyDown、OnKeyUp消息处理函数;当然在有些时候我们也可能需要用到对PreTranslateMessage函数的重载。从这些事件的名称我们可以看出WM_CHAR表示字符事件,WM_KEYDOWN表示键盘的键被按下时事件,而WM_KEY
2014-02-25 10:59:20
1353
原创 Qt中QString转char*
Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型在Qt下怎样将QString转char*呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。因为char*最后
2014-01-15 09:48:06
1538
原创 Qt图像处理--灰度处理
Qt中QImage类封装了对于一般图像像素级的操作,图像显示则使用QPixmap。本文说说对一般图像(常见格式,图像不大)的处理,比如将彩色图像处理为灰度图像。首先要获得源图像数据,对源图像数据进行处理,将结果保存并显示。QImage *img;//原图像QImage *grayImg;//处理后灰度图像1.获得原图像数据采用此方法即可,
2014-01-09 10:55:16
6218
2
转载 Qt4 Gossip: QMatrix
QPainter默认的坐标系统是绘图装置的坐标系统,也就是左上角为原点,向右为正X,向下为正Y的坐标系统,坐标系统的转换常使用矩阵的方式来表现及进行运算,QMatrix的作用,正是让您可以利用其内建的矩阵,设定好相关的参数,然后让QPainter根据QMatrix的设定,来进行一些二维坐标系统的转换动作。QMatrix的内部使用一个3x3的矩阵:m11 m12 0 m21 m22
2014-01-08 17:29:08
829
转载 QT图形变换技巧
/** 水平翻转 */ void ImageViewer::horFilp() { image = image.mirrored(true, false); imageLabel->setPixmap(QPixmap::fromImage(image)); } /** 垂直翻转 */ void ImageVi
2014-01-08 16:50:11
970
原创 Linux下快速静态编译Qt
Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-opensource-src的tar包,到网上一查,乖乖,大部分人编译这个包居然花费了12~13个小时!但是,根据我在Windows下静态编译Qt的经验,其实这之中很多东西都是可以不用编译的,最终我大约用了4
2014-01-08 15:51:06
1370
原创 字符串函数
strcpy原型:extern char *strcpy(char *dest,char *src);用法:#include 功能:把src所指由NUL结束的字符串复制到dest所指的数组中。返回指向dest结尾处字符(NUL)的指针。举例:// strcpy.c#include #include main(){
2013-12-23 17:34:04
702
原创 Qt程序运行时 Permission denied
QT程序运行报错:Cannot overwrite file /home/dany/.config/Nokia//qtversion.xml: Permission denied解决办法是先给用户添加权限,进入目录,执行chown -hR $USER:$USER qt4chown -hR $USER:$USER qtcreator然后再执
2013-12-11 17:02:26
6018
转载 C++编程命名规范
在软件开发过程中,代码的命名规范是一项很突出的内容。一套定义完整、结构清晰明了的命名规范将大大提升源代码的可读性和软件的可维护性。据考证,没有一种命名规则可以让所有的程序员都满意,程序设计教科书一般也不会指定命名规则。但是制定一套令开发组成员基本满意的命名规则,并在项目中贯彻实施,也是团队开发一项必不可少的工作。我将我的团队的实际工作中的命名规则整理如下: 第一部分:共性规则共
2013-12-09 09:27:23
792
转载 linux的内核编译和驱动安装
#uname -r 显示内核的版本号 一. 内核编译 1. 什么是内核编译 将内核源码转换为目标程序的过程称之为内核编译,在编译过程可以定制内核的功能 2. 内核编译的理由 (1) 重新定制内核功能 (2) 给内核打补丁 (3) 安装硬件驱动程序 3. 编译2.4内核 (1) 完全编译 -准备工作 a. 获取2.4内核源码 -
2013-12-04 16:52:34
1441
原创 Qt编程-信号和槽
信号和槽信号和槽用于对象间的通讯。信号/槽机制是Qt的一个中心特征并且也许是Qt与 其它工具包的最不相同的部分。在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个 窗口部件。更一般地,我们希望任何一类的对象可以和其它对象进行通讯。例如,如 果我们正在解析一个XML文件,当我们遇到一个新的标签时,我们也许希望通知列表 视图我们正在用来表达XML文件的结构。较老的工具包
2013-11-29 10:03:02
970
转载 数据类型字节长度表
数据类型名称字节数别名取值范围int*signed,signed int由操作系统决定,即与操作系统的"字长"有关unsigned int*unsigned由操作系统决定,即与操作系统的"字长"有关__int81char,signed char–128 到
2013-11-13 10:03:46
1298
转载 Linux下autoconf和automake使用
一、Makefile介绍 Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。 Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的
2013-11-11 17:26:50
884
原创 Ubuntu必备开发工具安装
1、安装gcc/g++/gdb/make 等基本编程工具$sudo apt-get install build-essential2、安装常见开发工具$sudo apt-get install autoconf automake fakeroot kernel-package linux-headers-[kernel version]-amd643
2013-11-11 10:46:42
5582
原创 Ubuntu下GTK的安装、编译和测试
一、安装 1、安装gcc/g++/gdb/make 等基本编程工具$sudo apt-get install build-essential 2、安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件$sudo apt-get install gnome-core-devel 3、用于在编译GTK程序时自动找出头文
2013-11-08 15:37:52
996
原创 Ubuntu下的环境变量
Ubuntu下的环境变量LD_LIBRARY_PATH 问题: (1)在Ubuntu终端运行env,发现并没有LD_LIBRARY_PATH这个环境变量(2)新打开一个终端,输入命令echo $LD_LIBRARY_PATH,结果为空白。通过export添加目录后,在输入echo命令,会出现刚刚添加的目录。如下: 关闭该终端,打开
2013-11-08 15:24:06
1527
linux驱动开发中文版
2013-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人