![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
VC++
tofro
这个作者很懒,什么都没留下…
展开
-
图像缩小算法
图像缩放的算法倒是挺多的,常见的有最近邻插值法、双线性插值法、三次卷积法等。其中双线性插值算法应该是应用比较广泛的一种方法,在缩放质量和速度上都比较折衷。在xnview里面选择双线性方法对一幅图像进行0.5倍的缩小,发现效果还可以。看了一下算法原理,实现起来也不算困难。可是用自己实现的方法对图像进行0.5倍的缩小时,却发现效果远没有xnview的效果好。商业软件就是做得好啊,难到它所用的双线性方法原创 2012-01-01 00:44:46 · 4998 阅读 · 2 评论 -
字符串的长度
用非递归和递归的方法求字符串的长度,这是中兴通讯的一道笔试题。1. 非递归int strlen(char *str){ int len = 0; while(*str++!='\0') len++; return len;}2. 递归int strlen(char *str){ if(*str=='\0')原创 2012-01-01 00:24:29 · 241 阅读 · 0 评论 -
避免VC绘图闪烁
在vc程序中绘制图像时,经常会遇到背景闪烁的现象(我认为闪烁现象是由背景引起的)。有什么办法可以避免或者减小背景闪烁呢?个人经验总结如下:(1)弄清楚MFC的消息机制和绘图机制在OnPaint() 或OnDraw()中调用绘制函数,但是不要调用有关改变图像数据的函数。对话框程序中绘制客户区最好使用CClientDC绘制。(2)使用双缓冲绘制即先在内存中“画好”图像,再从内存拷贝原创 2012-01-01 00:28:15 · 564 阅读 · 0 评论 -
三角形填充
给定三角形的三个顶点,填充三角形,想来想去,竟然找不到这样的软件工具。就连matlab都没有提供这样的绘图功能。我有一组三角形的顶点坐标,想判断这些三角形是否可以完全拼合在一起。如果一个一个地去检查每个三角形的顶点坐标,那真不是人干的活。求人不如求已,干脆自己写一个windows程序吧,利用gdi来填充三角形。(1)读取三角形顶点坐标三角形的顶点坐标是如此保存在一个txt文件中的:24原创 2012-01-01 00:41:28 · 2884 阅读 · 2 评论 -
用windows api写对话框
1. 通用对话框(打开文件)int OpenFileDlg(char* szFile , HWND hwnd){OPENFILENAME ofn; // 通用对话框结构// 初始化结构体 ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.原创 2012-01-01 00:44:01 · 1389 阅读 · 0 评论 -
ppm图像格式
ppm是一种简单的图像格式,仅包含格式、图像宽高、bit数等信息和图像数据。 图像数据的保存格式可以用ASCII码,也可用二进制,下面只说说一种ppm格式中比较简单的一种:24位彩色、二进制保存的图像。文件头+rgb数据:P6\nwidth height\n255\nrgbrgb...其中P6表示ppm的这种格式;\n表示换行符;width和height表示图像的宽高,原创 2012-01-01 00:44:28 · 1518 阅读 · 0 评论 -
对Map按value进行排序
Map内部是按key进行排序的,而不是value。如果希望根据value对Map里面的元素对排序,可以通过把Map里面的元素拷贝到一个list中,然后定义自己的比较函数,并对该list进行排序。(1)首先,需要定义一个结构体,以用于封装Map中的元素对(key, value)。struct strTest{ char key[32]; //key示例 unsig原创 2012-01-01 00:48:26 · 567 阅读 · 0 评论 -
sql server 远程连接
这几天在弄sql server远程连接的问题,辗转了好多次,现在才终于有点成功了。首先是局域网内计算互相访问的问题。开始时两台机不能互相ping通,当然不能使用对方的sql sever ,显示网络路径不存在。参照网上众多的资料,修改了大量的系统设置,还是没效果。这么多设置,到底是哪个不对呢?测试的方法就是能不能在网络邻居中访问对方。后来可能是在我的电脑属性里,设置了“网络ID”,和在本地安全策原创 2011-12-31 21:54:16 · 360 阅读 · 0 评论 -
MFC ODBC数据库开发技术(续)
1.查询记录 使用CRecordset类从数据源中提取记录集,并对记录集进行操作。如果查询的记录是多条的,可以利用CRecordset类的Move,MoveNext,MovePrev,MoveFirst,MoveLast方法移动记录到指定的位置。在操作记录集之前,需要定义一个CRecordset类对象,并传入CDatabase类的指针,方法如下:CRecordset rs(&m_d原创 2011-12-31 21:57:47 · 616 阅读 · 0 评论 -
ADO数据库开发技术
ADO的底层是OLE DB,所以不仅能访问关系型数据库,也能访问非关系型数据库,更是现在最快速的数据库访问中间层。1.ADO主要对象介绍ADO对象包括:Connection Object(连接对象)、Command Object(命令对象)、RecordSet Object(记录集对象)、Field Object(字段对象)、Record Object(记录对象)、Error Object原创 2011-12-31 21:58:13 · 358 阅读 · 0 评论 -
记录集只读&无效的字符描述索引
被vc 中的数据库编程搞得焦头烂额,尤其是用ODBC存取图像的时候。不想用向导生成CRecordset的方式,这样只能静态的绑定数据集,而且有时候不想要一个附加的一个CRecordView。于是开始只定义了一个自己的CRecordset变量。但是后来发现,这样的话只能用GetFieldValue读取记录的值,怎么添加和修改记录呢,只能用SQL语句了,但是用SQL语句无法实现往字段里面添加图像啊原创 2012-01-01 00:11:40 · 437 阅读 · 0 评论 -
用代码设置ado控件
1.设置adodc控件m_adc1.SetConnectionString(strConn);//设置连接字符串m_adc1.SetRecordSource(strSql);m_adc1.Refresh();//刷新2.设置datagrid控件m_grid1.SetRefDataSource(m_adc1.GetRecordset());//设置datagrid的记录集m_原创 2012-01-01 00:15:39 · 375 阅读 · 0 评论 -
opencv+directshow采集视频图像
主要参考:http://www.opencv.org.cn/index.php/%E4%BD%BF%E7%94%A8DirectShow%E9%87%87%E9%9B%86%E5%9B%BE%E5%83%8FCCameraDS类调用采集函数可直接返回IplImage,使用更方便,且集成了DirectShow,勿需安装庞大的DirectX/Platform SDK。但是文中介绍的方法只能原创 2012-01-01 00:16:30 · 1067 阅读 · 0 评论 -
C/C++高质量编程笔记
怕忘记的一些重点,呵呵。1 运算符优先级( ),[],->,.,!,~,++,--,sizeof,(正负)+,-,(指针)*,&,*,/,%,+,-,《,》,...2 if 语句判断条件布尔型if (flag) or if(!flag)整型if (value==0) or if (value!=0)浮点型if ((x>=-EPSINON) && (x指针原创 2012-01-01 00:20:10 · 470 阅读 · 0 评论 -
PicView
没事写写小程序玩玩,也算是重温一下VC编程。简易图像浏览器PicView 1.0http://cid-67c61986d0963581.skydrive.live.com/self.aspx/.Public/PicView1.0.rar功能:1. 支持bmp,jpg,png,tif,pgm等图像格式2. 支持滚轮缩放3. 支持鼠标移动图像4. 支持全屏查看5. 支持原创 2012-01-01 00:26:55 · 367 阅读 · 0 评论 -
(转)为什么要用补码表示
用补码的主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2(8)。 在这样的系统中减法问题也可以化成加法问题,只需把转载 2012-01-01 00:49:05 · 485 阅读 · 0 评论 -
gcc宏展开
要把源代码中的宏展开,其实只要使用gcc进行预处理即可。gcc -E source.c >out.txt-E表示只进行预处理,不进行编译。预处理时会把注释当成空格处理掉,如果想保留其中的注释,可以加上-C选项,即:gcc -E -C source.c >out.txt我遇到的问题是宏里面的注释并没有保留下来。如#define generate_some_code原创 2012-04-24 20:08:15 · 9501 阅读 · 0 评论 -
关于vector
vector是STL的标准容器,用的是template模板实现的。vector有很多泛型算法可以利用。另外用vector要比自己定义一个数组用起来方便的多,特别是有中间的元素需要被删除的操作。 vector不是一种数据类型,而是一种类模板。使用方法:首先要包含头文件:#include using std::vector;(1)定义与初始化vector Tvec1;vec原创 2012-01-01 00:18:29 · 301 阅读 · 0 评论 -
MFC ODBC数据库开发技术
1.MFC ODBC 主要类的介绍 visual c++提供了MFC ODBC 类,封装了ODBC API,这使得利用MFC来创建ODBC的应用程序非常简便。在MFC ODBC类中,常用的类有CDatabase(数据库类)、CRecordset(记录集类)、CRecordView(可视记录集类)和CDBException(异常类)。 CDatabase:用来建立和数原创 2011-12-31 21:57:22 · 699 阅读 · 0 评论 -
Sql Server远程连接数据库时发生不存在或拒绝访问
来源:瞎七搭八 http://hi.baidu.com/gunsaga/blog/item/1373f1c4466e1fa88226acfc.html Sql Server远程连接数据库时发生“[DBNETLIB][ConnectionOpen(connect()).]SQL Server 不存在或拒绝访问 ”的情况,原因有很多种,一般情况都是用过检查:转载 2011-12-31 21:51:59 · 2453 阅读 · 0 评论 -
CBitmap的使用
MFC提供了位图处理的基础类CBitmap,可以完成位图(bmp图像)的创建、图像数据的获取等功能。虽然功能比较少,但是在对位图进行一些简单的处理时,CBitmap类还是可以胜任的。很多人可能会采用一些现成的CDib类进行位图的读取与处理,我觉得必要性不大。因为他们完成的功能差不多。 以下假设定义了数据成员: CBitmap m_bitmap;(1) 位图的读取 v原创 2012-01-01 00:27:38 · 423 阅读 · 0 评论 -
对话框程序的按键消息
在MFC对话框程序中,如果要实现键盘消息的响应,该怎么办呢?直接在OnKeyDown()消息响应函数里添加代码,似乎没反应,应该是被对话框程序截获了。我们可以在消息转发之前对其进行相应的处理:BOOL CPicViewDlg::PreTranslateMessage(MSG* pMsg) {// TODO: Add your specialized code here and/原创 2012-01-01 00:27:57 · 709 阅读 · 0 评论 -
使用vs2005 express
就只是在windows平台上,也可能存在多个版本的项目,如vc6.0的,vs2005的,vs2008的。由于各种各样的原因,这些项目不能统一成一个版本的,这样麻烦的事情就多了。比如说某个项目用的是vc8的静态库,你就必须用vc8来继续开发了,用vc9虽然可以编译通过,但可能运行不起来,可能提示“由于应用程序配置不正确,未能启动该应用程序”。装了vs2008以后,不想再装一个vs2005。于是想装一原创 2012-01-01 00:45:04 · 689 阅读 · 0 评论 -
用mesa模拟OpenGL 2.0
mesa是一个用软件实现OpenGL接口的开源图形库。即使你的显卡不支持OpenGL 2.0,也可以在它的帮助下,调试和运行需要OGL 2.0支持的程序。详细介绍和最新下载:http://www.mesa3d.org/由于需要调试使用了OpenGL ES2.0接口的程序,但自己的电脑显卡却是很旧的集显,不支持OpenGL 2.0,因此程序运行不起来。无奈之下只好想找一个可以软件模拟OpenGL原创 2012-01-01 00:45:27 · 1146 阅读 · 0 评论 -
how to build Mesa
(1) 资源准备:下载MesaDemos-7.8.2.tar.bz2,MesaGLUT-7.8.2.tar.bz2,MesaLib-7.8.2.tar.bz2,并解压在同一目录;(2) 编译mesa及OpenGL基本库:在Mesa-7.8.2\windows\VC8\mesa下,打开mesa.sln解决方案,直接build就可以了;在Mesa-7.8.2\windows\VC8\m原创 2012-01-01 00:47:10 · 725 阅读 · 0 评论 -
宏定义中的连接符##和#
1. C语言宏定义中的##用来连接符号可以用##来连接宏定义中的一个或多个变量。如#define file_open(filename_tag, filename, mode) \ FILE *filename_tag = fopen(filename, stdio_file_open_##mode)file_o原创 2012-01-01 00:47:53 · 412 阅读 · 0 评论 -
Visual C++访问SQL server数据库
VC提供了多种数据库开发技术和编程规范,主要包括ODBC API,MFC ODBC,DAO,OLE DB和ADO,可以用来访问SQL server数据库, 1.ODBC API ODBC(open database connectivity)是为数据库应用程序访问关系型数据库时提供的一个统一接口,对于不同的数据库,ODBC提供了一套统一的API,使应用程序可以访问任何一种原创 2011-12-31 21:56:53 · 1097 阅读 · 0 评论 -
ADO数据库开发技术(续)
使用数据库访问控件。ADO控件使用Microsoft ActiveX数据对象(ADO)来快速建立数据绑定的控件和数据提供者的连接。 ActiveX数据绑定控件开发技术使用了两种ActiveX控件,一种是数据控件,另一种数据绑定控件。数据控件:负责数据库的连接和记录集的获取。VC++提供了ADO数据控件和RDO数据控件。ADO是对OLD DB的一个封装,RDO是对ODBC的一个封装。AD原创 2012-01-01 00:08:01 · 264 阅读 · 0 评论 -
CDialog
在一本VC.NET的书中看到点击对话框的OK按钮时竟然有EndDialog()这个函数,我以为是VC.NET里面的新函数。一查MSDN,原来就是MFC里面的,说模态对话框一定要调用EndDialog()这个函数来关闭对话框。发现这么久以来,自己一直仅仅用DoModal()函数显示和关闭对话框就完事了。不过也没出什么问题,呵呵。看来自己好多细节问题都忽视了啊。虽然说能用就行,不必斤斤计较小问题。但还原创 2012-01-01 00:12:13 · 669 阅读 · 0 评论 -
VC中的预处理和宏定义
自己在VC中有时能用到的。1.避免头文件被重复编译#ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif2.源代码版本控制main(){。。。。。。#ifdef _WINDOWS_PLATFORMHeapAlloc(5);#elsemalloc(5);#endif。。。。。}或者#原创 2012-01-01 00:17:58 · 273 阅读 · 0 评论 -
关于常量指针
1)const常量const int a=2; int const b=c; // c是已经声明过的整型 两者都可以。本地的const常量必须在第一次声明时就初始化,用变量或常量初始化都可以,只是初始化一次以后它的值就不能再改变了,此所谓const的含义。2)指向常量的指针(指向的是常量)const int *pa=&x; int const *pa=&x; //两者等价原创 2012-01-01 00:19:34 · 214 阅读 · 0 评论 -
switch疑惑
int main(int argc, char* argv[]){int a=1;switch(a){case 1: printf("a=1\n");case 2: printf("a=2\n");case 3: printf("a=3\n");default: printf("default.\n"); break;原创 2012-01-01 00:26:40 · 281 阅读 · 0 评论 -
char*、WCHAR*、vc8中的CString
在vc6中喜欢用CString,因为它用起来方便,可以容易地进行字符串赋值,复制,格式化,甚至相加,然而到了vc8中,这些操作似乎都不能用了。连CString str = "Hello World!";都会报错。网上找了一下,原来是vc8下的应用程序默认支持unicode,采用的是宽字符集,因此一般的字符串需要加一些操作才能兼容了。CString内部即是采用wchar*来表示字符串的。如果是新原创 2012-01-01 00:41:54 · 570 阅读 · 0 评论 -
使用文件映射实现进程通信
使用文件映射实现进程通信是通过让两个或更多的进程映射同一文件映射对象的视图来实现的,也就是说它们共享着相同的物理存储页面。结果,当一个进程对在一个共享文件映射对象的视图中的数据进行写操作时,其它进程立刻在它们的视图中看到了改动。注意,对于多个进程共享一个文件映射对象,所有进程必须对该文件映射对象使用完全相同的名字。使用内存映射文件时,调用CreateFileMapping()创建文件。一旦已创原创 2012-01-01 00:42:20 · 801 阅读 · 0 评论 -
"SQL Server不存在或访问被拒绝"问题的解决(转)
最近做一个项目(Asp.net+Sql Server 2000),在原来开发的机器上运行没有任何问题.但当我在另外一台机器上调试程序(本机调试)的时候,总出现“SQL Server不存在或访问被拒绝”。相信在任何一个搜索网站输入这样的检索词,一定会获得n多的页面。总结起来的关于SQL Server连接中此类四个最常见错误错误解决方案如下:一."SQL Server 不存在或访问被拒绝"转载 2011-12-31 21:53:22 · 1185 阅读 · 0 评论 -
C/C++代码批量格式化
使用eclipse可以对C/C++代码进行格式化,按ctrl+shift+F即可,但是只能打开一个一个的文件然后采用这种方法。使用astyle可以对批量地对C/C++代码进行格式化,并且可以选择某种风格,免除了种种配置的烦恼。比如我喜欢使用bsd/allman风格,格式化某目录下所有的.c文件,使用如下命令即可:>astyle -R -A1 *.c-R表示递归地转换该目录下...原创 2012-01-01 00:29:18 · 1490 阅读 · 0 评论