C/C++
BrandoLv
这个作者很懒,什么都没留下…
展开
-
C++有元关系
什么是有元关系: 有元关系是类之间的一种特殊关系,这种关系不仅允许有元类访问对方的public方法和属性.还允许对方访问protected和private方法和属性.语法: friend class XXX 这条语句可以放在任何地方.包括private里.一个简单的友元关系:#include #include u原创 2012-09-26 17:24:21 · 1304 阅读 · 0 评论 -
C++ 进程间通讯
当一个进程启动的时候.操作系统会为这个进程分配4GB的私有地址空间供这个进程使用.在一个进程中的多个线程,共享同一个地址空间.因此线程间的通讯非常简单.而因为每个进程拥有的4GB内存空间都是私有的.一个进程不能访问另一个进程地址中的数据.因此进程间的通讯相对就困难一些.在windows平台下.系统给我们提供了多种进程间通讯的机制.进程间通讯的四种方试:1.剪切板 剪切板实际上原创 2012-10-30 21:40:46 · 1865 阅读 · 0 评论 -
VS2010中 为图片添加背景图片
void CTestDlg::OnPaint(){ if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMe原创 2012-10-22 20:34:00 · 4679 阅读 · 0 评论 -
VC++使用DC画出点,线,矩形,椭圆
void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point){ //鼠标按下,设置坐标. m_ptOrigin = point; CView::OnLButtonDown(nFlags, point);}void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point){ /原创 2012-10-23 22:04:51 · 7386 阅读 · 0 评论 -
C++MFC添加动图片(GIF)
示例程序下载后用WINZIP选择use folder解压,其中PictureEx.h,PictureEx.cpp两个文件为类文件PictureEx图片显示类支持以下格式的图片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,但不支持图片背景透明(个人看法).下面是详细的编程过程:1. 新建项目:原创 2012-10-25 15:55:53 · 6752 阅读 · 3 评论 -
MFC显示Flash动画
Flash动画已经广泛应用于网页中了,其美观与趣味性得到了我们的认可。网页是通过浏览器例如IE,The World等软件呈现给我们的,这些浏览器软件内置能够播放Flash的软件,那么如何在MFC程序中显示Flash,使我们设计的对话框程序更加美观呢?本文就是讨论这个问题的。 当然在开始时有一个准备工作要做,那就是下载一个较小的.swf格式的Flash动画吧。另外要确保你的计算机里安装了播转载 2012-11-09 16:36:44 · 585 阅读 · 0 评论 -
C++,CString,string,char*,int等转换
环境是VS2010:string 转 CStringCString.Format(_T(”%s”), string.c_str());int 转CStringint i = 15;CString str;str.Format(_T("%d"), i);其他环境:CString 转char * CString cstr;char *p原创 2012-10-24 14:23:14 · 1196 阅读 · 0 评论 -
C++(MFC)各控件或取和属性
获取当前主窗口框架指针: CFrameWnd * active = GetActiveFrame();获取当前ID的文本内容: GetDlgItemText(ID);设置当前ID的文本内容: GetDlgItemText(ID, CString);获取当前控件: GetDlgItem(ID);获取控件大小:CRect rect; //一个矩形对象.CRect(0,0,10,10原创 2012-09-29 10:31:26 · 1395 阅读 · 0 评论 -
Microsoft Visual Studio 2010 加载包错误的解决方法
问题多表现为: 1. 未能正确加载“Microsoft.Data.Entity.Design.Package.MicrosoftDataEntiyDesignPackage, Microsoft.Data.Entity.Design.Package, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 包。转载 2013-01-08 23:20:09 · 1748 阅读 · 0 评论 -
搭建VS2010,OpenGL开发环境
基于OpenGL标准开发的应用程序运行时需有动态链接库OpenGL32.DLL、Glu32.DLL,这两个文件在安装Windows NT时已自动装载到C:\WINDOWS\SYSTEM32目录下(这里假定用户将Windows NT安装在C盘上)。OpenGL的图形库函数封装在动态链接库OpenGL32.DLL中,开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。OpenGL函转载 2013-01-10 16:41:40 · 532 阅读 · 0 评论 -
OpenGL第二章_Hello word
OpenGL.h:#pragma once#include "resource.h"LRESULT CALLBACK MainWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);OpenGL.cpp:// OpenGL.cpp : 定义应用程序的入口点。//#include "stdafx.转载 2013-01-13 16:25:08 · 699 阅读 · 0 评论 -
CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换
一.CString与LPCWSTR 两者的不同:LPCWSTR 是Unicode字符串指针,初始化时串有多大,申请空间就有多大,以后存贮若超过则出现无法预料的结果,这是它与CString的不同之处。而CString是一个串类,内存空间类会自动管理。 CString转换成LPCWSTR 方法一:CString strFileName;转载 2013-01-20 20:25:57 · 414 阅读 · 0 评论 -
C\C++文件读写操作
1.C语言中文件操作。2.C++语言中的文件操作。3.Win32 API函数文件操作。4.MFC CFile类文件操作。5.MFC CFileDialog类的文件操作。6.注册表文件操作。 下面我来详细说明一下各种文件操作方法:1. C语言中文件操作.需要包含的头文件STDIO.H 写入文件:FILE *pfile=fopen("C.txt","w");//以转载 2013-01-21 12:32:14 · 3311 阅读 · 0 评论 -
C++获取网页源码
#include #include #include #include using namespace std;int main() { CInternetSession session("HttpClient"); char * url = "www.baidu.com"; CHttpFile* pfile = (CHttpFile *)sessio原创 2013-05-25 23:24:39 · 4181 阅读 · 1 评论 -
C使用正则.
//#include #include #include #include #include #include using namespace std; using namespace boost; regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)"); int main(in转载 2013-05-25 23:37:06 · 664 阅读 · 0 评论 -
原码,补码,反码
原码: 是将最高位作为符号位(0代码正,一代表负),其余各位代表数值本身的绝对值(以二进值表示). 如:+7 原码: 0000 0111-7 原码: 1000 0111原码会出现的问题:+0 原码: 0000 0000-0 原码: 1000 0000+0和-0其实都是0,但是原码表示确不唯一.所以计算机中没有采用原码来表示.反原创 2012-09-22 21:53:47 · 547 阅读 · 0 评论 -
UE4 C++编程 实用方法
打印日志 的几种方式:UE_LOG(LogTemp, Warning, TEXT(""));UE_LOG(LogTemp, Warning, TEXT("1111 %f"), value);连接字符串:FString str;str.Append(TEXT("名称:")).Append(name);UE_LOG(LogTemp, Warning, TEXT("%s"),原创 2016-11-10 11:21:31 · 1259 阅读 · 0 评论 -
C++运算符重载(operator)
C++不允许用户自己定义新的运算符,只能对已有的运算符进行重载.运算符重载:有5个运算符不允许重载:1. . (成员访问运算符).2. .* (成员指针访问运算符).3. ::(域运算符).4. sizeof(尺寸运算符).5. ?: (条件运算符).重载时需注意:1. 不能改变运算符对象的操作个数.2. 不能改变运算符的优先级别.3. 不能改变运算符原创 2012-09-27 12:09:54 · 536 阅读 · 0 评论 -
C++数据类型
ANSI C/C++基本数据类型:TypeSize数值范围无值型void0 byte无值域布尔型bool 1 bytetrue false 有符号短整型short [int] /signed short [int]2 b原创 2012-09-25 09:39:07 · 361 阅读 · 0 评论 -
C++中的string
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 首先,为了在我们的程序中使用string类型原创 2012-09-25 10:11:18 · 379 阅读 · 0 评论 -
C++Socket(TCP)
写Socket的时候必须导入:#include 必须link ws2_32.lib;Server(服务端)程序:#include #include void main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); er原创 2012-09-22 22:15:09 · 378 阅读 · 0 评论 -
C++预处理器
预处理器的条件指令:#if 如果表达式为真,执行代码.#else 如果前面的#if表达式为假,执行代码.#elif 相当于else if.#endif 用来标志一个条件指令的结束.#ifdef 如果本指令所引用的定义已存在,执行代码.#ifndef 如果本指令所引用的定义不存在,执行代码.使用预处理命令防止重复引入头文件:原创 2012-10-08 20:54:34 · 420 阅读 · 0 评论 -
C++获取网页内容
#include #include int main() { CInternetSession session("HttpClient"); char * url = "http://www.baidu.com"; CHttpFile *pfile = (CHttpFile *)session.OpenURL(url);原创 2012-10-09 21:39:11 · 13665 阅读 · 4 评论 -
C++string报未引入和CString互转
C++在使用string类的时候报错:'string' : undeclared identifier解决方法:#include 引入string. 而不是,.using namespace std; 引入命明空间.如果要输出内容就要用#include #include using namespace std;CString和string的原创 2012-09-25 10:33:25 · 611 阅读 · 0 评论 -
VC6.0里使用正则表达式
1、接下来的就是下载boost库网上很好找。我下载的是压缩包40M。下载地址:([url]http://nchc.dl.sourceforge.net/sourceforge/boost/boost_1_35_0.zip[/url])。我解压的目录是D:\boost 2、然后是编译,我只要支持正则表达式就可以因此只需要编译D:\boost\libs\regex\build目录下的文件原创 2012-10-10 14:15:09 · 2052 阅读 · 0 评论 -
Visual AssistX 安装
这个版本的VAX安装包直接支持所有的VS,包括VC6 VS2003 2005 2008 2010。使用方法: 直接安装安装文件,然后应用安装包里面的破解补丁即可(对于非2010来说)。 破解方法是将Patch复制到安装目录,运行,Path即可。对于vs2010的朋友需要额外注意,使用2010的朋友,是需要覆盖到Visual Studio 2010的Visual原创 2012-10-10 21:08:49 · 627 阅读 · 0 评论 -
C++因为应用程序没关闭,不能编译程序
LINK : fatal error LNK1168: cannot open Debug/TcpClient.exe for writingError executing link.exe.TcpClient.exe - 1 error(s), 0 warning(s)报这个错误是因为应用程序没有关闭完全,而不能LNk造成的.解决方式:打开任务管理器,关掉相应的应用程序就原创 2012-09-22 22:48:57 · 772 阅读 · 0 评论 -
C++Socket(UDP)
/************服务端程序*************/#include #include void main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequeste原创 2012-09-22 22:55:18 · 2592 阅读 · 0 评论 -
C快速排序
/* 快速排序. 此排序是先确定第一个数的位置.在把这个数组分成两半. 在先确定左边第一个数的位置.在确定右边第一个数的位置. 在折半.在确定. 直到所有的数都确定位置了.*/#include void quickSort(int * a, int low, int high);int findPos (int * a, int low, int high);int mai原创 2012-09-22 23:18:08 · 2837 阅读 · 0 评论 -
C++获取系统盘符
#include #include #include int main(){ DWORD dwLen = GetLogicalDriveStrings(0, NULL); //获取系统字符串长度. char * pszDriver = new char[dwLen]; //构建一个相应长度的数组. GetLogicalDriveStrings(dwLen, pszDriver原创 2012-09-22 23:30:04 · 4286 阅读 · 0 评论 -
树的先序递归算法
#include #include typedef struct Tree{ char Data; //数据 struct Tree * pLTREE; //左指针 struct Tree * pRTREE; //右指针} TREE, * PTREE;PTREE createTree(void);//树的先序排序.void xianXu(PTREE);void m原创 2012-09-22 23:41:56 · 819 阅读 · 0 评论 -
循环Queue(队列)
#include #include #define LEN 6typedef struct queue{ int * pBase; //队列的数组. int front; //出队点. int rear; //入队点.} QUEUE, * PQUEUE;void init(PQUEUE);int en_queue(PQUEUE, int);int full_qu原创 2012-09-22 23:25:31 · 1127 阅读 · 0 评论 -
汉诺塔(递归)
#include void move(int n, char A, char B, char C){/* 如果是一个盘子. 直接将A上的盘子移动到C. 否则 先将A上的n-1个盘子移动借助C移动到B. 直接将A上的盘子从A移动到C. 最后将B上的n-1个盘子借助A移动到C.*/ if(n ==1){ printf("将编号为%d的盘子从%c移动到%c\n", n,原创 2012-09-22 23:23:41 · 776 阅读 · 0 评论 -
位运算符
运算符 含义 & 按位与 | 按位或 ∧ 按位异或 ∽ 取反 >> 右移 说明:1。位运算符中除∽以外,均为二目(元)运算符,即要求两侧各有一个运算了量。2、运算量只能是整形或字符型的数据,不能为实型数据。 “按位与”运算符(&) 规定如下:0&0=0 0&1=0原创 2012-09-22 20:35:30 · 2121 阅读 · 0 评论 -
C++宏定义
C++ 宏定义将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替。前面已经说过,预处理命令不同于一般C++语句。因此预处理命令后通常不加分号。这并不是说所有的预处理命令后都不能有分号出现。由于宏定义只是用宏名对一个字符串进行简单的替换,因此如果在宏定义命令后加了分号,将会连同分号一起进行置换。三种预处理功能 C++提供的编译预处理功能主要有以下三种: (一)原创 2012-09-25 09:54:09 · 403 阅读 · 0 评论 -
编程实用小技巧
1. 循环获取数组下一个值:var arr = [1, 2, 3];for(var i=0; i<arr.length; ++i) { var cur = arr[i]; var next = arr[(i+1) % arr.length]; }}原创 2017-08-09 10:57:09 · 286 阅读 · 0 评论