C/C++/C#
文章平均质量分 88
阳光岛主
阳光、快乐、创新
展开
-
vc++如何将客户区存为bmp和VC实现自绘图形输出到bmp文件
vc++如何将客户区存为bmp 在view类中添加以下三个函数:BOOL CTestestView::WriteWindowToDIB(LPTSTR szFile, CWnd *pWnd){ CBitmap bitmap; CWindowDC dc(pWnd); CDC memDC; CRect rect;原创 2009-12-12 13:20:00 · 5227 阅读 · 0 评论 -
VC怎样把一副自己画的图存成BMP格式和在VC++下实现高彩色工具条
VC怎样把一副自己画的图存成BMP格式int SaveBmp(HANDLE hData,LPSTR filename){BITMAPFILEHEADER bfh;BITMAPINFOHEADER *lpbi=(BITMAPINFOHEADER*)hData;bfh.bfType=0x4D42; //BMbfh.bfSize=sizeof(bfh)+GlobalSize(hD转载 2009-12-12 13:28:00 · 4633 阅读 · 0 评论 -
VC++改变对话框的背景色和VC++制作伸展自如、收缩随意的对话框
改变对话框的背景色黄基前(广西桂林)---- 笔者曾在《软件报》2000年第5期中讨论过如何改变控件的颜色,但还有相当一部分的读者来信提问:一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对于这个问题,其实可以由几种不同的方法来实现,具体如下(粗斜体代码为增添的): ---- 方法一:调用CWinApp类的成员函数SetDialogBkCo转载 2009-12-12 13:24:00 · 4743 阅读 · 1 评论 -
c++ 格式化中使用的数据类型 收藏
c++ 格式化中使用的数据类型 收藏 ┃代码│ 意 义 ┃ ┃ %a │读浮点值(仅适用于 C99) ┃ ┃ %A │读浮点值(仅适用于 C99) ┃ ┃ %c │读单字符 ┃ ┃ %d │读十进制整数 ┃ ┃ %i │读十进制、八进制、十六进制整数 ┃ ┃ %e │读浮点数 ┃ ┃ %E │读浮点数 ┃ ┃ %f │读浮点数 ┃ ┃ %F │读浮点数(仅适用于 C99) ┃ ┃原创 2009-12-16 15:22:00 · 3174 阅读 · 0 评论 -
VC 编程ANSI环境下读写Unicode文件和将CStdioFile类扩展,读取UNICODE文本文件
VC 编程ANSI环境下读写Unicode文件没有注意到文件编码的不同会产生这么多的问题,在动手以前查询了很多资料,在本博客中收藏了不少先辈的成果,在这里一并表示致敬! 关于ANSI和Unicode编码的原理在这里也不说了,主要讲下如何读写! 首先确定你的工程是采用的是什么编码环境,默认是ANSI,不同的字符集读写文件的差别也比较大,我这里只在ANSI环境下做的,下一步在探转载 2009-12-16 17:09:00 · 7503 阅读 · 1 评论 -
VC++之MFC的五大批判
VC++之MFC的五大批判 写在本文之前算起来,我用Visual C++也有将近5年的历史了。在这期间,我也曾涉猎过Visual Basic和Delphi,但都是浅尝而止;Visual C++始终是我的主业。可是努力的成果如何呢?我用Delphi作出了十多个有规模的软件,用VB--虽然我用在VB上的时间只有短短的两三个月--也有两个像样的项目;然而,在我付出了最大热情和最多努力的Visua转载 2009-12-16 17:22:00 · 4044 阅读 · 0 评论 -
Windows环境下Unicode编程总结和将ANSI转换到Unicode 将Unicode转换到ANSI
Windows环境下Unicode编程总结 UNICODE环境设置在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。 UNICODE编译设置:C/C++, Preprocessor difinitions 去除_MBCS,加_UNICODE,UNICODE在ProjectSetting/link/output转载 2009-12-16 16:59:00 · 7748 阅读 · 0 评论 -
VC++的Unicode编程(经典之作,交流传薪)
VC++的Unicode编程作者:韩耀旭原文链接:http://www.vckbase.com/document/viewdoc/?id=1733下载源代码 一、什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一转载 2009-12-16 16:29:00 · 5987 阅读 · 2 评论 -
[C/C++] 为什么把常量写在 == 运算符的左边
[C/C++] 为什么把常量写在 == 运算符的左边当然,把常量写在 == 运算符的左或右对运算本身没有任何影响,它们仅仅是两种不同的书写风格。所以我敢保证很多人并不会因为看到某些帖子宣称“应该将常量放在左边”就真的改变自己固有的风格,说到底,习惯而已。不过,将常量写在运算符左边在某种情况下可能会更容易查错。看下面的例子: 片段一,当且仅当 flag == 5 时执行循环体中的原创 2009-12-16 12:41:00 · 5625 阅读 · 0 评论 -
VC++程序文件扩展名解读大全(精炼)
VC文件扩展名解读大全 .APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。.BMP:位图资源文件。.BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source brower的话就必须有这个转载 2009-12-16 15:51:00 · 3569 阅读 · 0 评论 -
Ansi、Unicode、UTF8等编码字符串之间的转换和写入文本文件(学习中……)
Ansi、Unicode、UTF8字符串之间的转换和写入文本文件 最近有人问我关于这个的问题,就此写一篇blogAnsi 字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个/0结尾,常用于txt文本文件Unicode 字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的/0结尾,NT操作系统内核用的是这种字符串,常被定义为typedef unsigned short wchar_t;所转载 2009-12-16 16:52:00 · 6044 阅读 · 3 评论 -
Linux Make(Makefile)由浅入深的学习与示例剖析
经过长时间学习和研究linux GNU make工程管理器,现在把学习心得与大家分享一下,希望本文能教会您一些有用的东西。在Linux/UNIX 系统中,习惯使用 Makefile或makfile 文件作为make命令目标文件。Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互依赖关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。一、多文件的总体结构如下图所示,本示原创 2010-07-06 23:23:00 · 15044 阅读 · 6 评论 -
编程学习——前20名编程语言排名
经常看到编程语言的排名,也和一些导师和同学讨论过该学习那种语言,如何学习等纸上谈兵。今天特意整理了一篇编程语言排名,以飨读者。学业有先后,术业有专攻。纸上得来终觉浅,绝知此事要躬行。乘风破浪会有时,直挂云峰机沧海…… Program top: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (英文)前二十名编程语言排名如下:主要语言的长期变化趋势图如下:前十名编程语言在5年、10年、15年前的排名情况:21到50名编程语原创 2010-07-11 14:26:00 · 5308 阅读 · 2 评论 -
MSDN: MFC ATL COM ActiveX
Microsoft Foundation Classes (MFC) The C++ class library thatMicrosoft provides with its C++ compiler to assist programmers increating Windows-based applications. MFC hides the fundamental原创 2010-05-17 21:35:00 · 3956 阅读 · 0 评论 -
void main(void) - the Wrong Thing
<br />很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( ) 从来就不存在于 C++ 或者 C )。下面我分别说一下转载 2010-06-10 18:18:00 · 3940 阅读 · 0 评论 -
Bjarne Stroustrup's C++ Style and Technique FAQ
Bjarne Stroustrup's C++ Style and Technique FAQModified October 4, 2009Source: http://www2.research.att.com/~bs/bs_faq2.html#void-main==================================================================================These are questions about C++ Style and转载 2010-06-10 18:28:00 · 7585 阅读 · 0 评论 -
面试题:重写strcpy() 函数原型(转)
已知strcpy函数的原型是char* strcpy(char* strDest,const char* strSrc);1.不调用库函数,实现strcpy函数2.解释为什么要返回char*;1.strcpy的实现代码char* strcpy(char* strDest,const char* strSrc){ if((strDest == NULL) || (strSrc == NULL)) //[1] throw "Invalid Arguments";转载 2010-06-10 19:33:00 · 5802 阅读 · 1 评论 -
gcc和g++的区别
很多人不是很明白GCC与G++的区别gcc和g++都是GNU(组织)的一个编译器。误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来转载 2010-06-13 11:03:00 · 4320 阅读 · 0 评论 -
getchar()和EOF总结(转载)
大师级经典的著作,要字斟句酌的去读,去理解。以前在看K&R的The C Programming Language(SecondEdition)第1.5节的字符输入/输出,被getchar()和EOF所迷惑了。可能主要还是由于没有搞清楚getchar()的工作原理和EOF的用法。因此,感觉很有必要总结一下,不然,很多琐碎的知识点长时间过后就会淡忘的,只有写下来才是最好的方法。其实,getchar()最典型的程序也就几行代码而已。本人所用的环境是DebianGNU/Linux,在其他系统下也一样。一、g转载 2010-06-13 18:30:00 · 6553 阅读 · 2 评论 -
一些算法拾贝
<br />kmp算法(算法是转的)+代码<br /> <br />此算法的确很难理解。但是只要你花耐性去理解;应该是可以理解的;!<br /><br />所以叫做KMP,是因为这个算法是由Knuth、Morris、Pratt三个提出来的,取了这三个人的名字的头一个字母。这时,或许你突然明白了AVL 树为什么叫AVL,或者Bellman-Ford为什么中间是一杠不是一个点。有时一个东西有七八个人研究过,那怎么命名呢?通常这个东西干脆就不用人名字命名了,免得发生争议,比如“3x+1问题”。扯远了。<br转载 2010-06-16 15:42:00 · 4053 阅读 · 0 评论 -
图的基本算法实现(邻接矩阵与邻接表两种方法)
本博客前面文章已对图有过简单的介绍,本文主要是重点介绍有关图的一些具体操作与应用阅读本文前,可以先参考本博客 各种基本算法实现小结(四)—— 图及其遍历一、无向图1 无向图——邻接矩阵测试环境:VS2008#include "stdafx.h"#include #include #define MAX_VEX 20#define INFINITY 65535int *visited;struct _node{ int vex_num; struct _node *next原创 2010-06-21 12:15:00 · 21886 阅读 · 4 评论 -
图的深度优先和广度优先算法(DFS递归与非递归)
<br />本博客前面文章已对图有过简单的介绍,本文主要是重点介绍有关图的一些具体操作与应用<br />阅读本文前,可以先参考本博客 各种基本算法实现小结(四)—— 图及其遍历 和 图的一些基本算法<br /> <br />无向图——邻接矩阵的深度优先和广度优先算法实现<br />测试环境:VS2008(C)<br />#include "stdafx.h"#include <stdlib.h>#include <malloc.h>#define INFINITY INT_MAX#原创 2010-06-21 17:52:00 · 12589 阅读 · 1 评论 -
C语言部分函数原型实现
学习、研究库函数的实现,能使你考虑问题更加严谨、全面,培养良好的编程风格和习惯最近想学习一下C语言库函数的内部实现,于是自己写了简单的写了几个贴出以下代码,希望大家能够帮忙指正、优化、完善,特别是考虑不周和执行效率上给出指导意见调试环境:VS2008(C)// sysFunc.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include /******************原创 2010-06-24 15:12:00 · 7478 阅读 · 3 评论 -
树与二叉树的深度优先与广度优先算法(递归与非递归)
本博客前面文章已对树与二叉树有过简单的介绍,本文主要是重点介绍有关二叉树的一些具体操作与应用阅读本文前,可以先参考本博客 各种基本算法实现小结(三)—— 树与二叉树 和 各种基本算法实现小结(二)—— 堆 栈二叉树深度层数、叶子数、节点数和层次遍历算法以及树的先序、中序、后序的递归与非递归实现测试环境:VS2008(C)#include "stdafx.h"#include #include #define DataType charint d_tree=0; /* tree'原创 2010-06-22 16:12:00 · 13691 阅读 · 3 评论 -
阻塞和非阻塞通信
阻塞通信意味着通信方法在尝试访问套接字或者读写数据时阻塞了对套接字的访问。在 JDK 1.4 之前,绕过 阻塞限制的方法是无限制地使用线程,但这样常常会造成大量的线程开销,对系统的性能和可伸缩性产生影响。java.nio 包改变了这种状况,允许服务器有效地使用 I/O 流,在合理的时间内处理所服务的客户请求。没有非阻塞通信,这个过程就像我所喜欢说的“为所欲为”那样。基本上,这个过程就是发送和读取任何能够发送/读取的东西。如果没有可以读取的东西,它就中止读操作,做其他的事情直到能够读取为止。当发送数据时,该过转载 2010-09-19 17:35:00 · 10285 阅读 · 0 评论 -
C++中的long long和__int64类型(转载)
<br />C语言中long long的用法<br />http://www.awuit.com/c-language-the-usage-of-long-long/<br />阿吴 | C/C++ | 十一月, 03 2009 | 5 Comments<br />在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long的说法。在C语言的C99标准扩展转载 2010-09-29 10:42:00 · 21341 阅读 · 2 评论 -
struct tm 和 time_t 时间和日期的使用方法(转)
<br />关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)<br /><br /><br />1.概念<br />在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。下面主要介绍在C/C++中时间和日期的使用方法.<br /><br />通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:<br转载 2010-09-29 13:55:00 · 6581 阅读 · 0 评论 -
pthread_create、readlink、getpid等函数的学习与总结
UNIX环境创建线程函数,具体格式: #includeint pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void*(*start_rtn)(void*),void *restrict arg); 返回值:若成功则返回0,否则返回出错编号 返回成功时,由tidp指向的内存单元被设置为新创建线程的线程ID。attr参数用于制定各种不同的线程属性。新创建的线程从start_rtn函数的地址开始原创 2010-10-01 16:46:00 · 5387 阅读 · 0 评论 -
linux多线程pthread
<br />1.Linux线程的发展<br /> 早在LINUX2.2内核中。并不存在真正意义上的线程,当时Linux中常用的线程pthread实际上是通过进程来模拟的,也就是同过fork来创建“轻”进程,并且这种轻进程的线程也有个数的限制:最多只能有4096和此类线程同时运行。<br /> 2.4内核消除了个数上的限制,并且允许在系统运行中动态的调整进程数的上限,当时采用的是Linux Thread 线程库,它对应的线程模型是“一对一”,而线程的管理是在内核为的函数库中实现,这种线程得到了广泛的应原创 2010-10-04 11:58:00 · 15680 阅读 · 0 评论 -
string、string.h和ctring学习小结
<br />string 和 string.h (和cstring等价)头文件的区别<br /> <br />为什么下面这段代码 <br />#include <string.h> <br /><br />void main() <br />{ <br /> string aaa= "abcsd d"; <br /> printf("looking for abc from abcdecd %s/n", <br /> (strcmp(aaa,"abc")) ? "Found" :原创 2010-10-01 23:08:00 · 4775 阅读 · 0 评论 -
pthread多线程编程的学习小结
pthread多线程编程整理=================================================================================pthread_mutex_lock 函数名pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_unlock - lock and unlock a mutex SYNOPSIS概要#include int pthread_mutex_lock(pthrea转载 2010-10-04 12:33:00 · 40673 阅读 · 1 评论 -
编程学习书籍推荐(小结)
研发推荐书籍介绍【推荐参考】http://www.sudu.cn/info/html/edu/20080403/261058.html原创 2010-12-03 09:41:00 · 5623 阅读 · 1 评论 -
将stdout、stderr导入到指定文件
<br />在编写程序中,经常用到stdout、stderr作为输出,通常stdout用于输出程序运行正常时的信息,stderr用于输出程序出错时的信息。我们可以通过一些命令将stdout、stderr在屏幕上的输出导入到指定的文件。<br /> 1、准备工作<br /> 带有stdout、stderr输出的test.cpp<br /><br /> /* <br /> ** test.cpp <br /> */<br /> #include <iostream><br /> #include原创 2010-10-13 11:11:00 · 6252 阅读 · 0 评论 -
Linux 信号signal处理机制
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使用信号,对于理解信号机制都特别重要。下面就来看看什么是信号。 1、基本概念 软中断转载 2010-10-16 14:53:00 · 5967 阅读 · 0 评论 -
Linux 信号signal处理函数
alarm(设置信号传送闹钟)相关函数 signal,sleep表头文件 #include定义函数 unsigned int alarm(unsigned int seconds);函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。返回值返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。范例 #include#includevoid handler() {printf("hell转载 2010-10-16 16:17:00 · 5892 阅读 · 0 评论 -
一个简单的Linux下Client/Server应答例子
<br />题目:Hello world<br />要求:案例程序基于TCP协议,由客户程序启动后向服务器程序发送“hello world”,服务器程序显示客户机IP地址、端口、以及发送的信息。服务器将收到的字符串发送给客户端,客户端显示验证。<br />使用方法:在linux下编译<br />$gcc -o client client.c<br />$gcc -o server server.c<br />先运行server程序$./server<br />再运行client程序$./client xxx原创 2010-10-17 19:34:00 · 12134 阅读 · 4 评论 -
Linux多线程Pthread学习小结
简介POSIX thread 简称为pthread,Posix线程是一个POSIX标准线程.该标准定义内部API创建和操纵线程.作用线程库实行了POSIX线程标准通常称为pthreads.pthreads是最常用的POSIX系统如Linux和Unix,而微软Windowsimplementations同时存在.举例来说,pthreads-w32可支持MIDP的pthread Pthreads定义了一套 C程序语言类型、函数与常量,它以 pthread.h 头文件和一个线程库实现。数原创 2010-12-08 14:54:00 · 47082 阅读 · 8 评论 -
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。2.从标准头文件说起某企业曾经给出如下的一道面试题:为什么标准头文件都有类似以下的结构? #ifndef __I转载 2010-12-16 12:45:00 · 6495 阅读 · 0 评论 -
关于进程和线程以及句柄
说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行 说法二:进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本转载 2010-10-26 10:34:00 · 14720 阅读 · 0 评论 -
异步套接字基础:select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
<br />select函数:<br /> 系统提供select函数来实现多路复用输入/输出模型。原型:<br /> #include <sys/time.h><br /> #include <unistd.h><br /> select函数:<br /> 系统提供select函数来实现多路复用输入/输出模型。原型:<br /> #include <sys/time.h><br /> #include <unistd.h><br /> int select(int maxfd,fd_set转载 2010-10-28 13:42:00 · 25529 阅读 · 0 评论