
C/C++学习交流
文章平均质量分 74
Felix.Peng
魔都IT民工,从事医疗/科学仪器嵌入式系统软件开发工作!
展开
-
NMAKE: fatal error U1065
前几天在利用VS2008编译QT4.7.1时被NMAKE : fatal error U1065: invalid option '-' 这个错误给拦住啦,后来才发现是环境变量:MAKEFLAGS惹的祸,由于公司用的QNX系统,所以我们的开发工具都是QNX Momentics IDE 4.6,安装这个开发环境时自动设置了这个环境变量:MAKEFLAGS = -If:/QNX641/target/qnx6/usr/include原创 2011-02-24 23:56:00 · 4835 阅读 · 1 评论 -
eVC下自绘按钮实现
按钮这个控件在软件中使用是非常广泛的,特别是基于MFC开发,按钮提供了很好的便捷。但是在eVC下的按钮显示效果是非常土的,且背景颜色不好改。如果裁系统的时候将XP风格裁进去的话,默认按钮效果会好一些,但是背景颜色不好控制,在ce平台下,没有鼠标是很正常的,带XP风格的CE系统按钮提示不够明显,这个时候就需要自绘按钮了。首先,先建立一个基于CWnd的类,如:CMyButton : publi转载 2008-11-05 16:46:00 · 2040 阅读 · 0 评论 -
删除一个非空目录(2种方法)
1、如果不进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。 示例代码: BOOL DelTree(LPCTSTR lpszPath){ SHFILEOPSTRUCT FileOp; FileOp.fFlags = FOF_NOCONFIRMATION; FileOp.hNameMappings = NULL; File转载 2008-10-10 01:18:00 · 3439 阅读 · 0 评论 -
全屏程序的系统功能屏蔽处理
全屏程序的系统功能屏蔽处理作者:彭学周(Favory.Peng) 我们在编写全屏应用程序时有时不希望受到一些系统功能的影响,例如:左右的“WIN键”,“Ctrl+ESC”,“Atl+F4”,任务栏,桌面菜单以及桌面右键菜单等等;因此我们需要通过代码屏蔽这些功能;本文代码编辑环境:Delphi 7.0 所涉及到的技术:键盘HOOK,系统窗口查找与隐藏,消息过滤原创 2008-10-09 01:46:00 · 2073 阅读 · 0 评论 -
在Windows下进行底层IO操作之CMOS数据的读取和显示
在Windows下进行底层IO操作之CMOS数据的读取和显示作者:彭学周(Favory.Peng) CPU执行命令一般分为:特权(Privileged-Ring0)和非特权(Non-Privileged Mode-Ring3)两种模式;Windows系统下的程序都是在Ring3下执行,无法进行任意I/O端口的操作;要是能让程序在Ring0下执行,自然就可以顺利的进行读写I/O端原创 2008-10-09 00:52:00 · 6219 阅读 · 4 评论 -
确保一个程序只运行一个实例(BCB,Delphi)
一、通过创建互斥量来判断: BCB 代码: //--------------------------------------------------------------------------- #include #pragma hdrstop USERES("Project1.res"); USEFORM("Unit1.cpp",原创 2008-10-05 22:52:00 · 3173 阅读 · 1 评论 -
如何让程序只运行一个实例(VC)
我们在使用《金山词霸》时发现,在《金山词霸》已经运行了的情况下,再次点击《金山词霸》的图标,那么它不会再运行另外一个《金山词霸》,而是将已有的《金山词霸》给激活,始终只能运行一个《金山词霸》的实例。在我们的程序当中如果要实现类似《金山词霸》的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例。对于第一个问题,我们可以通过设置转载 2008-06-29 23:02:00 · 3323 阅读 · 1 评论 -
回调设计模式
0. 引言使用过SDK的朋友应该知道“回调函数”(callback function)这个概念,但本文并不是介绍如何使用回调函数,而是站在SDK开发者的角度,讲述如何实现回调机制。1. 何为回调(callback) 所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的转载 2008-06-24 15:28:00 · 3614 阅读 · 0 评论 -
VC6.0完美界面换肤解决方案
完美界面换肤解决方案-、简介VC里边界面换肤是比较头痛的问题,网上有不少介绍,但是大多数仅仅提供Dll或者Lib,有代码的又有很多问题,效果很差。这几日突然想到一个解决方案,有源码,皮肤有一百多个,就是采用Delphi里边成熟的界面组件vclskin,将它做成Dll来用,效果相当不错,赶紧介绍给大家。二、效果预览实例中的效果如下图: 效果预览三、Dll制作首先启转载 2008-06-14 12:49:00 · 9637 阅读 · 7 评论 -
用注册表键存储用户程序的信息
如果要使你的程序对用户友好,那么存储用户设置以及程序运行的首选项是很重要的。目前比较通行的做法是将这些信息存储在注册表中。这也是Windows 徽标(Logo)程序的要求。在注册表中存储用户程序信息的原理很简单,无非是保证应用程序知道要将信息存储在注册表的什么地方,当需要这些信息时能通过MFC函数对信息进行读写操作。按照规范,应用程序首选和设置信息应该保持和存储在注册表的HKEY_CURRENT转载 2008-08-08 16:32:00 · 1728 阅读 · 0 评论 -
BCB实现BMP图片的RGB分解,BMP与JPG格式的相互转换
BCB实现BMP图片的RGB分解 1、打开BMP图片文件,在Image控件中显示; if(dlgOpen1->Execute()) ...{ edt1->Text=dlgOpen1->FileName; img1->Picture->LoadFromFile(edt1->Text); }2、逐行扫描图片,获取图片中每点的像素颜色值; color=i原创 2008-01-11 01:59:00 · 4379 阅读 · 0 评论 -
eVC下CString 操作指南
原文出处:codeproject:CString Management 通过阅读本文你可以学习如何有效地使用 CString CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。 使用CString可转载 2008-11-05 16:36:00 · 4464 阅读 · 0 评论 -
用应用程序模拟键盘和鼠标按键
在Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输入,而用程序来模拟键盘及鼠标的输入呢?答案是肯定的。这里主要是通过两个Windows API函数来实现的。下面以 VC++为例来介绍一下如何实现这两个功能。本文示例代码模拟键盘我们用Keybd_eve转载 2008-11-15 15:33:00 · 1526 阅读 · 0 评论 -
三十分钟掌握STL
STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。转载 2010-10-22 02:01:00 · 961 阅读 · 0 评论 -
探索C++的秘密之详解extern "C"
C和C++对函数的处理方式是不同的.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明转载 2010-09-13 10:36:00 · 840 阅读 · 0 评论 -
CFont与LOGFont、HFont是什么关系,CDC *pDC和HDC hdc有什么不同?
CFont与LOGFont、HFont是什么关系,CDC *pDC和HDC hdc有什么不同,类似的有CWnd *pWnd和HWnd?转载 2010-08-30 11:15:00 · 3176 阅读 · 1 评论 -
sprintf,你知道多少?
选自《优快云 社区电子杂志——C/C++杂志》本文作者:steedhorse(晨星)printf 可能是许多程序员在开始学习C 语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf 了解多吗?在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法转载 2009-12-02 11:37:00 · 998 阅读 · 0 评论 -
大端与小端存储模式详解
端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian(这句话最为形象)。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big End原创 2009-08-13 10:51:00 · 39631 阅读 · 4 评论 -
CRC校验代码与使用技巧
CRC校验代码与使用技巧作者:彭学周(Favory.Peng) 在工业控制和通讯中,为了保证数据通讯的可靠性,我们会需要在通讯数据报文中加入校验码,以确保发送和接收到的数据的一致,保证数据的完整; 对于校验码的生成方法,各家公司都会有自己的一套,但最常用的莫过于CRC校验啦,关于CRC校验的介绍我这里就不多提啦,网上一搜就可以看到很多很多关于CRC校验的文章,感原创 2008-12-20 21:28:00 · 6366 阅读 · 0 评论 -
最常见的20种VC++编译错误信息集合
1、fatal error C1010: unexpected end of file while looking for precompiled header directive。 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h") 2、fatal error C1083: Cannot open include file: R……转载 2008-12-08 22:45:00 · 1208 阅读 · 0 评论 -
eVC实现INI格式文件操作(Unicode)
INI文件作为配置文件的一种相信大家都不陌生,但在eVC中并没有我们所熟悉的GetPrivateProfileString,WritePrivateProfileString等可以方便用来操作INI文件的API函数,因此就需要我们自己去实现;函数定义:static BOOL WriteProfileString(const CString strSection, const CS原创 2008-12-04 00:18:00 · 4197 阅读 · 2 评论 -
Windows环境下Unicode编程总结
什么是Unicode(统一码)?Unicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论是什么语言。基本上,计算机只是处理数字。它们指定一个数字,来储存字母或其他字符。在创造Unicode之前,有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符:例如,单单欧州共同体就需要好几种不同的编码来包括所有的语言。即使是单一种语言,例如英语,也没有哪一个编码可以转载 2008-12-03 17:29:00 · 2820 阅读 · 0 评论 -
C++内存管理与内存泄漏及其检测
一、内存错误的分类a.内存访问错误对内存进行读或写时发生的错误,可能是读未被初始化的内存单元,也可能是读写错误的内存单元。 b.内存使用错误主要是在动态请求内存之后没有正确释放产生的错误。二、内存剖析(典型的c++内存模型)BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称转载 2008-11-24 11:03:00 · 1713 阅读 · 0 评论 -
BCB多语言版本软件的实现
在BCB中实现多语言设计的方法可能有多种多样,在此我通过一个实例讲解一下我个人的实现思路: 1、首先必须挖掘程序中所使用的到文字资源将其统一整理出来,再对应翻译成各种语言,我这里就以:中文简体,中文繁体,英语为例;建立语言资源文件:lang.ini 具体内容如下:[set]val=3[chs]title=程序重启测试(设计:彭学周)topic=语言设置option1=中文简体opti原创 2007-12-14 01:14:00 · 3406 阅读 · 2 评论 -
VC实现程序重新启动
在很多情况下,我们需要将当前运行的程序重新运行;此时我们就必须在程序关闭后立即重新运行程序,形成新的进程;实例代码:1、重启按钮事件中添加代码: g_bIsRunAgain=true;//控制是否重新运行的变量 this->SendMessage(WM_CLOSE);2、在OnClose()消息处理中加入代码: if(g_bIsRunAgain)原创 2007-12-14 00:45:00 · 1931 阅读 · 2 评论 -
在winxp下用mingw编译安装wxwidgets
mingw、Msys、wxwidegts都可以在sourceforge搞到,这里就不多说了。要说一下的是:新年新气象,自2005年1月1日以来,chinese great firewall终于对各大著名open source项目的网站开了一扇门,使我们可以顺利访问开源软件的官方网站,获得第一手消息和资料,而不是像以前一样,明明是很利国利民的事情,却要偷偷摸摸的干——中国人真的很可怜的,学个东西吧,转载 2007-11-21 02:27:00 · 1445 阅读 · 0 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解(7)
61.1~9组成三个3位的平方数 将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三个数不允许有重复数字,也不许同其它组的三个数字重复,要求每组中的三位数都组成一个平方数。*问题分析与算法设计本问题的思路很多,这里介绍一种简单快速的算法。首先求出三位数中不包含0且是某个整数平方的三位数,这样的三位数是不多的。然后将满足条件的三位数进行组合,使得所选出转载 2007-07-12 10:46:00 · 4788 阅读 · 0 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解(4)
31.歌德巴赫猜想 验证:2000以内的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以内的正偶数成立)。*问题分析与算法设计为了验证歌德巴赫猜想对2000以内的正偶数都是成立的,要将整数分解为两部分,然后判断出分解出的两个整数是否均为素数。若是,则满足题意;否则重新进行分解和判断。程序中对判断是否为素数的算法进行了改进,对整数判断“用从2开始到该整数的一半”改为“2转载 2007-07-12 10:25:00 · 3815 阅读 · 0 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解(8)
71.约瑟夫问题这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。*问题分析与算法设计约瑟夫问题并不难,但求解的方法很多转载 2007-07-12 10:47:00 · 4415 阅读 · 0 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解(3)
位反序数 设N是一个四位数,它的9倍恰好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321。*问题分析与算法设计可设整数N的千、百、十、个位为i、j、k、l,其取值均为0~9,则满足关系式:(i*103+j*102+10*k+l)*9=(l*103+k*102+10*j+i)的i、j、k、l即构成N。*程序说明与注释#includeint m转载 2007-07-12 10:23:00 · 5248 阅读 · 0 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解(9)
81.角谷猜想日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。*问题分析与算法设计本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的转载 2007-07-12 10:49:00 · 5478 阅读 · 1 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解(6)
51.谁是窃贼公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:甲说:“乙没有偷,是丁偷的。”乙说:“我没有偷,是丙便的。”丙说:“甲没有偷,是乙偷的。”丁说:“我没有偷。”请根据这四人的答话判断谁是盗窃者。*问题分析与算法设计假设A、B、C、D分别代表四个人,变量的值为1代表该人是窃贼。由题目已知:四人中仅转载 2007-07-12 10:45:00 · 4474 阅读 · 1 评论 -
双缓冲解决绘制图象闪烁问题
C++ Builder中的实现方法:原理:双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。 双缓冲实现过程如下: 1、在内存中创建与画布一致的缓冲区 BufferBmp=new Graphics::TBitmap(); //创建位图BufferBmp->Canvas->Handl原创 2007-07-11 20:14:00 · 2924 阅读 · 1 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解 (10)
91.人机猜数游戏由计算机“想”一个四位数,请人猜这个四位数是多少。人输入四位数字后,计算机首先判断这四位数字中有几位是猜对了,并且在对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数是多少为止。例如:计算机“想”了一个“1234”请人猜,可能的提示如下:人猜的整数 计算机判断有几个数字正确 有几个位置正确1122 2 13344 2 133转载 2007-07-12 10:50:00 · 4976 阅读 · 0 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解(5)
41.马克思手稿中的数学题42.最大公约数和最小公倍数43.分数比较44.分数之和45.将真分数分解为埃及分数46.列出真分数序列47.计算分数的精确值48.新娘和新郞49.委派任务50.谁在说谎 下载全部文章《C++语言经典实用趣味程序设计编程百例精解》:http://download.youkuaiyun.com/source/547232转载 2007-07-12 10:32:00 · 2232 阅读 · 0 评论 -
C/C++语言经典、实用、趣味程序设计编程百例精解(2)
11.打鱼还是晒网 中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。*问题分析与算法设计根据题意可以将解题过程分为三步:1)计算从1990年1月1日开始至指定日期共有多少天;2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;3)根据余数判断他是在“打鱼”还是在“晒网”;若 余数为1,2转载 2007-07-12 10:22:00 · 6604 阅读 · 0 评论 -
十道连锁问题的求解
请回答下面的10个问题:1、第一个答案是B的问题是哪一个?(A)2 (B)3 (C)4 (D)5 (E)62、唯一的连续两个具有相同答案的问题是:(A)2,3 (B)3,4 (C)4,5 (D)5,6 (E)6,73、本问题答案和哪一个问题答案相同?(A)1 (B)2 (C)4 (D)7 (E)64、答案是A的问题的个数是:(A)0 (B)1 (C)2 (D)3原创 2007-07-21 16:52:00 · 1856 阅读 · 0 评论 -
数据类型转换
Decimal To Hex(十进制转十六进制)// Use _itoa( ) function and set radix to 16.char hexstring[10]; int number = 30;itoa( number, hexstring, 16);// In hexstring is 1e.Hex To Decimal(十六进制转十进制)// You can use str翻译 2007-07-25 02:27:00 · 1369 阅读 · 0 评论 -
wxWindows 程序编译选项设置统揽
wxWindows 程序编译选项设置统揽[原始文章链接:http://blog.youkuaiyun.com/huyoo/archive/2005/04/03/334742.aspx]下面我会写的罗嗦一点,我之所以罗嗦,是因为我注定要成为大师级的人物~呵呵~首先,得确保你的wxWindows 已经安装好了,并且把你的wxWindows编译出了相应的lib和dll文件.然后,把你的wxWindows安装转载 2007-11-20 01:17:00 · 1137 阅读 · 0 评论 -
利用Eclipse CDT进行C++开发的入门
设置Eclipse CDT C++ IDE开发环境Steps Download and install latest java runtime environment. (You might be having one. If not install it). You can find it in www.eclipse.org. Download an原创 2007-11-18 02:43:00 · 5287 阅读 · 5 评论