c++
管哥的天下
这个作者很懒,什么都没留下…
展开
-
一个链表的反序
listNode.h#pragma once#include <stdio.h>struct node{ int i; struct node* next;};//新增一个链表节点void addListNode(struct node* head, int idata);//打印链表节点void printListNode(struct node* he...原创 2020-04-15 20:46:35 · 238 阅读 · 0 评论 -
线程的挂起
唤醒一个线程当一个线程调用G e t M e s s a g e或Wa i t M e s s a g e,但没有对这个线程或这个线程所建立窗口的消息时,系统可以挂起这个线程,这样就不再给它分配C P U时间。当有一个消息登记或发送到这个线程,系统要设置一个唤醒标志,指出现在要给这个线程分配C P U时间,以便处理消息。正常情况下,如果用户不按键或移动鼠标,就没有消息发送给任何窗口。这意味着系原创 2012-09-11 14:04:57 · 532 阅读 · 0 评论 -
socket模型
两种I/O模式一.选择模型二.异步选择三.事件选择四.重叠I/O模型五.完成端口模型五种I/O模型的比较 两种I/O模式1、两种I/O模式阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式原创 2012-09-11 22:49:48 · 583 阅读 · 0 评论 -
友元函数的代码
#include #include using namespace std;#include "stdafx.h"class MyClass;class A{public: A() { m_ia = 0; printf("A()\n"); } A& operator=(const A &a) { printf("=\n"); return *原创 2012-09-07 13:47:56 · 1763 阅读 · 1 评论 -
从utf-8文件中读取转换成unicode
int CCheckSensitiveWord::ReadSenSitiveWordFromFile( CString &strPath){ try { char ch[MAXTXTLEN]=("\0"); WideCharToMultiByte ( CP_OEMCP,NULL, strPath.GetBuffer(0),-1,ch,strPath.GetLengt原创 2011-12-15 20:36:32 · 753 阅读 · 0 评论 -
链接错误LNK2001
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unresolve转载 2011-12-15 22:03:47 · 404 阅读 · 0 评论 -
错误整理
TCHAR ch[1024]=_T("d:\\"); TCHAR cc = _T('\\'); TCHAR *pCh = _tcsstr(ch, &cc); if (NULL == pCh) { return; } pch为空 TCHAR ch[1024]=_T("d:\\"); TCHAR cChar[2] = _T("\\");原创 2011-11-29 10:20:34 · 529 阅读 · 0 评论 -
Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
转载请注明出处http://www.cppblog.com/greatws/archive/2008/08/31/60546.html最近有人问我关于这个的问题,就此写一篇blogAnsi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的是这转载 2011-12-14 15:25:10 · 603 阅读 · 0 评论 -
创建utf-8文件,并且向里面写数据,在读出来
FILE *pf = fopen(("d:\\33.txt"),("wb,ccs=UTF-8")); if(pf == NULL) { return; } TCHAR cc[10]=_T("中国"); //_ftprintf(pf, _T("%s\n"), cc); int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL,原创 2011-12-15 09:04:19 · 1138 阅读 · 0 评论 -
关于对话框DoModal()函数调用失败的原因分析
对话框DoModal()函数调用失败一般而言有两种表现形式:一是对话框弹不出来,但是没有错误提示;二是对话框弹不出来,同时伴随内存访问错误的提示框出现。 第一种表现主要是因为没有对资源句柄进行切换造成的,以在DLL中弹出对话框中最为常见。解决办法是:如果是MFC规则DLL,可以使用所有导出函数的开始处添加 AFX_MANAGE_STATE宏,具体代码为:AFX_MANAGE_STATE转载 2011-12-21 10:09:33 · 2186 阅读 · 0 评论 -
判断文件是否是utf-8
/*===================================//函数名: IsUTF8File//作者: guandiqun //日期: 2011-12-01//功能: 判断文件是否是utf-8//输入参数:TCHAR *strFile //返回值: int-2:表示文件错误-1:表示打开文件错误1:是UTF-8(有bom)2:是UTF原创 2011-12-12 11:09:37 · 3930 阅读 · 4 评论 -
经典的代码
在头文件中定义 #define GETTREEVIEWLEFT() \ CTreeViewLeft* pTreeViewLeft=NULL;\ 在cpp文件中调用GETTREEVIEWLEFT()pTreeViewLeft = new CTreeViewLeft 判断这个指针是否属于这个类(并且这个类是MFC的) 首先必须是个类,并且在类头文件中进行了原创 2011-12-01 16:04:54 · 486 阅读 · 1 评论 -
类模板的特化,局部化以及缺省模板的实参
// 泛型编程.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;//类模板template class CC{public: void hh(T itemp){} void pp(T kk){}};//类模板的特化template<>class CC{原创 2012-09-17 15:47:40 · 980 阅读 · 0 评论 -
[c++ template]非类型的函数模板以及非类型的类的模板
template class mm{};templatevoid ff(T tt,int cc){}void main(){ mm mmm; ff(2,33); system("pause");}对于非类型的,浮点数以及字符串的文字都不能使用日如templateclass ccc{}; ccc c;//error以及全局指针原创 2012-09-18 16:30:03 · 575 阅读 · 0 评论 -
c++类型转换
#include "stdafx.h"#include #includeusing namespace std; class A { public: int m_a; }; class B { public: int m_b; }; class C : public A, public B {}; void main(){ C c; printf("%原创 2012-09-18 14:21:33 · 523 阅读 · 0 评论 -
关于VC画图闪屏的问题 - VC/MFC / 基础类
显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。 而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。 MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单, 只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。 我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈 我的一些观点。 1、显示的图形为什么会闪烁?翻译 2014-05-29 13:51:49 · 2391 阅读 · 1 评论 -
bmp图像格式的详解
BMP文件是一种像素文件,它保存了一幅图象中所有的像素。这种文件格式可以保存单色位图、16色或256色索引模式像素图、24位真彩色图象,每种模式种单一像素的大小分别为1/8字节,1/2字节,1字节和3字节。目前最常见的是256色BMP和24位色BMP。这种文件格式还定义了像素保存的几种方法,包括不压缩、RLE压缩等。常见的BMP文件大多是不压缩的。 Windows所使用的BMP文转载 2013-12-16 11:32:27 · 1903 阅读 · 0 评论 -
如何在窗口绘制背景图片,并且在图片上话一个矩形
void CPtestDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectang原创 2013-12-06 11:05:08 · 1860 阅读 · 0 评论 -
重写clistctl中右键弹出菜单
void CPPListCtrl::OnRButtonDown( UINT nFlags, CPoint ptt ){ CRect rc; GetWindowRect(&rc); ScreenToClient(&rc); CPoint pt = ptt; //点在矩形中,并且里面有数据 int iItemCount = GetItemCount()原创 2013-11-22 11:44:29 · 927 阅读 · 0 评论 -
c++如何画实心的箭头
CDC *pDC = GetDC(); CRect rect; GetClientRect(rect); //获得用户区域大小 CPen penBlue(PS_SOLID, 1, RGB(0, 0, 255)); CPen* pOldPen = pDC->SelectObject(&penBlue); //蓝笔红刷原创 2013-10-21 14:14:32 · 3578 阅读 · 0 评论 -
解决SetForegroundWindow和BringWindowToTop等函数有时失败,无法将窗口带到前台的问题 C++代码
BOOL SetTopWindow(HWND hWnd) { HWND hForeWnd = GetForegroundWindow(); DWORD dwForeID = GetWindowThreadProcessId(hForeWnd, NULL); DWORD dwCurID = GetCurrentThreadId(); AttachThreadI转载 2013-09-06 16:56:03 · 5468 阅读 · 0 评论 -
没有限制的数字自加
void incString(std::string &strTemp) { int iLen = strTemp.length(); int iFlag = 0; for (int i = 0 ; i { if ('9' == strTemp[iLen-i-1]) { str原创 2013-07-12 15:26:06 · 551 阅读 · 0 评论 -
c++ 单件模式
#include "stdafx.h"class singClass{public: static singClass* getsingClassObj() { if (NULL == m_singClass) { m_singClass = new singClass(); } return m_singClass; } sta原创 2012-11-01 13:47:34 · 717 阅读 · 1 评论 -
RTTI
1对于带虚函数的类,在运行时执行RTTI,其它,则是在编译是计算RTTI操作符2:RTTI提供了两个运算符主要是两个:一个是:typeid运算符,可以是指针,引用或者对象都可以 typeid(表达式).name对于类中有virtual,当表达式为NULL的时候,会抛出异常#include class Base{public: virtua原创 2012-09-07 17:16:09 · 396 阅读 · 0 评论 -
通过基类指针来执行删除操作时,基类的析构函数设为公有且虚拟的
#include "stdafx.h"#include using namespace std;#include class Base{public: virtual void pp(){}};class Dev:public Base{};class A { public: virtual std::string getV翻译 2012-10-22 15:55:44 · 1328 阅读 · 1 评论 -
线程同步-临界区
CRITICAL_SECTION g_cs;unsigned int WINAPI thread1(PVOID pvParam){ EnterCriticalSection(&g_cs); cout<< "thread1" << endl; LeaveCriticalSection(&g_cs); return 0;}unsigned int WINAPI thread2(PVO原创 2012-09-20 09:45:36 · 890 阅读 · 0 评论 -
线程同步-event机制
#include #include HANDLE g_handl;unsigned int WINAPI thread1(PVOID pvParam){ WaitForSingleObject(g_handl, INFINITE); cout<< "thread1" << endl; return 0;}unsigned int WINAPI thread2(PVOID原创 2012-09-20 09:28:18 · 473 阅读 · 0 评论 -
软件详细设计模板
1 引言 1.1 编写目的:阐明编写详细设计说明书的目的,指明读者对象。 1.2 项目背景:应包括项目的来源和主管部门等。 1.3 定义:列出本文档中所用到的专门术语的定义和缩写词的愿意。 1.4 参考资料: ● 列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源 ●项目经核准的计划任务书、合同或上级机关的批文;项目开发计划;需求规格说明书;概要设计说明书原创 2011-11-30 14:06:22 · 920 阅读 · 0 评论 -
Windows ListCtrl使用技巧
<br />Windows ListCtrl使用技巧<br />1. ListCtrl 风格 <br /> LVS_ICON: 为每个item显示大图标<br /> LVS_SMALLICON: 为每个item显示小图标<br /> LVS_LIST: 显示一列带有小图标的item<br /> LVS_REPORT: 显示item详细资料<br /> 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”<br />----翻译 2011-03-15 17:59:00 · 803 阅读 · 0 评论 -
高分求字符串程序-文件
<br />有这么几百页这样的数据.<br /><br />do_pre/FGDYEO-4341596_OH.XLS <br />226 0 0 239 47 -2011-02-16 06:10:51 192.168.0.254 whsfs ITDEPT 192.168.0.4 21 [276]created /prod/<br />o_pre/FGDYEO-4341596_OD.XLS<br />226 0 0 5812 2187 -2011-02-16 06:10:51 192.168.0.254 w原创 2011-02-21 13:27:00 · 437 阅读 · 0 评论 -
ListCtrl 使用技巧
<br /> 【原】C<br />作者:lixiaosan<br />时间:04/06/2006<br /><br />以下未经说明,listctrl默认view 风格为report<br />相关类及处理函数<br /><br />MFC:CListCtrl类<br />SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn<br /> <br />------------------------------------翻译 2011-03-09 16:30:00 · 711 阅读 · 0 评论 -
虚函数和虚析类
<br />// A.h: interface for the CA class.<br />//<br />//////////////////////////////////////////////////////////////////////<br />#if !defined(AFX_A_H__AED18D70_2E0E_4FF9_9EF5_E04F5EF8E753__INCLUDED_)<br />#define AFX_A_H__AED18D70_2E0E_4FF9_9EF5_E04F5EF8原创 2011-03-09 10:58:00 · 423 阅读 · 0 评论 -
错误
<br /> <br /> <br />#include <iostream><br />#include <fstream><br /><br />#include <vector><br />#include <afx.h><br />using namespace std;<br />typedef vector<CString> do_pre1;<br />typedef vector<CString> recv_pre2;<br />do_pre1::iterator i_do_pre;<br /原创 2011-02-18 16:53:00 · 383 阅读 · 0 评论 -
内存池,源码发布
<br />#pragma once <br /> <br />#include <Windows.h> <br />#define POOLAPI __fastcall <br /> <br />/* <br />一个MEMORY_BLOCK的内存大小是SIZE_BLOCK_BYTE <br />分成COUNT_ALL_BLOCK个块,每个块的大小是SIZE_ONE_BLOCK <br />当用户申请的内存大小超过SIZE_BLOCK_BYTE时,使用系统函数来分配 <br />*翻译 2011-03-04 12:06:00 · 677 阅读 · 0 评论 -
为什么C++编译器不能支持对模板的分离式编译
<br />为什么C++编译器不能支持对模板的分离式编译<br /> <br />刘未鹏(pongba)<br />C++的罗浮宫(http://blog.csdn.net/pongba)<br /> <br />首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,翻译 2011-03-01 11:41:00 · 514 阅读 · 0 评论 -
c++编程思想 随笔
1 endl 和'/n'的区别endl会在输出流中插入换行符,并且会刷新缓冲区'/n'不会刷新原创 2011-01-31 11:07:00 · 442 阅读 · 1 评论 -
自己写 的trim有点问题
<br />char * trim(char *desc)<br />{<br /> if(!desc)<br /> {<br /> return NULL;<br /> }<br /> while(*desc == ' ' && *desc != '/0')<br /> {<br /> desc ++;<br /> }<br /> int len = strlen(desc);<br /> if(len == 0)<br /> {<br /> return NULL;<br /> }<br /> c原创 2011-01-31 10:00:00 · 338 阅读 · 0 评论 -
获取进程的数量
#include #include int GetProcessNum(char* ProcessName){ assert(ProcessName); HANDLE hand = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);; // ASSERT(hand!=NULL); PROCESSENTRY32 ppp; if(!Process32First(hand,&ppp)) return 0; int ProcessNum=0; do {原创 2011-02-25 15:13:00 · 1544 阅读 · 2 评论 -
编译完全攻略:编译器处理及LNK错误的解决方法[good!!]
<br />最近调试遇到N多LNK错误,遂总结各解决方案如下, 以做系统学习之用。 一编译器处理相关 .预处理器-编译器-汇编器-链接器预处理器会处理相关的预处理指令,一般是以"#"开头的指令。如:#include "xx.h" #define等。编译器把对应的*.cpp翻译成*.s文件(汇编语言)。 汇编器则处理*.s生成对应的*.o文件(obj目标文件) 最后链接器把所有的*.o文件链接成一个可执行文件(?.exe) 1.部件: 首先要知道部件(可以暂且狭义地理解为一个类)一般分为头文件(我喜欢称为接口翻译 2011-01-21 15:47:00 · 1166 阅读 · 0 评论 -
遍历所有文件和目录的函数
bool BrowseDir(const char *dir, const char *filespec){ _chdir(dir); long hFile; _finddata_t fileinfo; if ((hFile=_findfirst("*",&fileinfo)) != -1) { do { if ((fileinfo.attrib & _A_SUBDIR)) { if(!( fileinfo.attrib & _A_HIDDEN)) { if (strcmp原创 2011-01-20 15:41:00 · 617 阅读 · 0 评论