- 博客(40)
- 资源 (17)
- 收藏
- 关注
原创 什么是句柄
在Windows环境中,句柄是用来标识 项目的,这些项目包括: *.模块(module) *.任务(task) *.实例(instance) *.文件(file) *.内存块(block of memory) *.菜单(menu) *.控制(control) *.字体(font) *.资源(
2013-12-02 21:33:15
887
转载 宏的妙用
2005-11-15 09:20:10 www.hackbase.com 来源:互联网 1、概述 C++中出了const关键字以后,宏定义常量的功能已经不在被推荐使用。这使得宏似乎没有了用武之地。实际上,宏还可以做很多事情,笔者也难以全部列举。这 1、概述 C++中出了const关键字以后,宏定义常量的功能已经不在被推荐使用。这使得宏似乎没有
2013-07-16 11:35:33
721
原创 命题空间的全局变量不能直接拖到Watch窗口查看
vc6.0调试时namespace中全局变量不能查看#includenamespace n1{int x;}void pp(){printf("x is %d\n",n1::x);}void main(){n1::x=2;pp();}调试时,可以在watch窗口中看见n1::x的值,但如果用using namespace n1
2013-07-16 11:27:09
946
转载 ambiguous symbol
多初学C++的人,对于C++中的一些基本的但又不常用的概念感到模糊,命名空间(name space)就是这样一个概念 C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。 当然,你也可以使用不同的名字,但有时我们并不知道另一个变量也使用完全相同的名字;有时为了程序的方便,必需使用同一名字。比如你定义了一个变量 string user_na
2013-06-20 09:17:06
3842
转载 sizeof与strlen的区别与联系
一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所
2013-06-19 08:58:42
555
转载 CloseHandle(),TerminateThread(),ExitThread()的区别
线程的handle用处:线程的handle是指向“线程的内核对象”的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问。该内存块是一种数据结构,它的成员负责维护对象的各种信息(eg: 安全性描述,引用计数等)。CloseHandle()在CreateThread成功之后会返回一个hThread的handle,且内核对象的计数加1,Cl
2013-06-19 08:35:11
684
原创 WM_SETTINGCHANGE
WM_SETTINGCHANGE是个Windows的常用消息,当程序修改了SystemParametersInfo设置,则Windows就会广播此消息。但WM_SETTINGCHANGE也比较多地用在其它情形。一般情况下,wParam/uFlags时0,lParam/pszSection是WIN.INI段名或被修改部分的注册表键(只是最终的键,而不是整个串)。事实上,WM_SETTINGCHA
2013-05-30 18:49:17
5778
转载 BSS段、数据段、代码段、堆与栈
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通
2013-05-30 17:18:02
567
原创 创建画刷的几种形式
HBRUSH hbr;第一种: hbr= CreateSolidBrush(RGB(255,0,0)); //创建单色的画刷第二种: hbr= (HBRUSH)GetStockObject(BLACK_BRUSH); //只能取特定颜色的画刷,如BLACK_BRUSH,GRAY_BRUSH刷第三种: hbr= CreatePa
2013-05-30 15:39:04
10427
原创 取得设备内容句柄方法汇总
Windows提供了几种取得设备内容句柄的方法。如果在处理一个消息时取得了设备内容句柄,应该在退出窗口函数之前释放它(或者删除它)。一旦释放了句柄,它就不再有效了。对于打印机设备内容句柄,规则就没有这么严格。最常用的取得并释放设备内容句柄的方法是,在处理WM_PAINT消息时,使用BeginPaint和EndPaint呼叫:hdc = BeginPaint (hwnd, &ps) ;
2013-05-30 11:51:57
2270
原创 PAINTSTRUCT结构
中文解释:该结构体包含了某应用程序用来绘制它所拥有的窗口客户区所需要的信息。PAINTSTRUCT定义typedef struct tagPAINTSTRUCT {HDC hdc;BOOL fErase;RECT rcPaint;BOOL fRestore;BOOL fIncUpdate;BYTE rgbReserved[32];
2013-05-30 09:26:03
7569
转载 关于char转换成LPCWSTR的问题
char buffer[80]; 方法一: wsprintf(buffer,L"WM_CHAR: Character = %c ",ascii_code); TextOut(hdc, 0,0,(LPCWSTR)buffer, strlen(buffer));这个只能显示第一个字母“W”方法二: sprintf((LPCWSTR)buf
2013-05-28 20:44:17
948
转载 VS2005的Command Window 调试命令的总结
调试命令的总结,挺有用的,所以转过来了。调试的时候,可以在VS2005的Command Window中输入调用。以 Unicode 形式列出内存>du 0x056769d0 原稿: http://msdn.microsoft.com/en-us/library/c338aexd.aspx[摘]“命令”窗口用于直接在 Visual Studio 集成开发环境 (IDE
2013-05-28 18:22:55
683
转载 OnPaint()和OnEraseBkgnd()
问题是这样产生的.在OnEraseBkGnd中,如果你不调用原来缺省 的OnEraseBkGnd只是重画背景则不会有闪烁.而在OnPaint里面, 由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd 函数,这时就和窗口缺省的背景刷相关了.缺省的 OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况 下是白刷),而随后你又自己重画背景
2013-05-28 12:33:11
828
转载 C/C++中const关键字详解
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 常对象: 类名 const 对象名 常成员函数:
2013-05-28 09:37:27
623
转载 C++ string CString 详解
前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱的string find 函数 1.3 string insert, replace, erase 2 string 和 C风格字符串 3 string 和 Charactor Traits 4 string 建议 5 小结 6 附录前言: string 的角
2013-05-28 08:55:03
1410
原创 全局变量的使用
1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能非常的理解编译与连接的区别!当在VC这样的开发工具
2013-05-28 08:32:31
6637
原创 得到当前窗口句柄
HWND hwnd;hwnd=CreateWindow("my own windowshandle","jaycnvip",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);这是用一个句柄变量来保存新创建的窗口句柄。其它如:通过窗口标题获取窗口句柄CWnd *pWnd = FindWindow(_T("#32770"),
2013-05-27 09:53:22
11009
原创 while (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
项目中用到了好多这个消息循环,很是困惑。遂百度之,难道一个窗口下可以有多个消息循环吗?百度结果都是介绍和GetMessage区别的,正经的说这个有啥作用的,少之又少。不过有一篇英文的不错,这是出处,可以参考一下http://blog.youkuaiyun.com/scofieldlau/article/details/1965517#t0。奈何我的疑惑仍然为解。最后查看MSDN,清晰一二原文
2013-05-24 14:54:01
8812
2
转载 程序员的九重境界
第一重: 在哪本电脑杂志上看见软件工程师这个职业介绍,或者走在大街上看见某某软件培训机构鼓吹培训完就能年薪10万的广告,有些羡慕那些编程序的,自己有些蠢蠢欲动。 第二重: 用控制台或者说SDK之类的东西写了一个“HELLO WORLD!”,感觉编程这个东西,太简单没难度。 第三重: 学会了简单的使用某某工具例如VC,知道怎么利用工具创建对话框之类的东西了,认为自己已经有了“扎实”的基础,出
2013-05-23 09:49:10
585
原创 关于.h和C/C++混编
1 .h 的在编译中的作用 一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。而且 .c就是你写的程序文件。 一
2013-05-22 11:17:40
811
原创 PostThreadMessage 的使用
#include #include #include #define MY_MSG WM_USER+100const int MAX_INFO_SIZE = 20;HANDLE hStartEvent; // thread start event// thread functionunsigned __stdcall fun(void *param){ printf(
2013-05-20 16:04:10
4098
原创 srand()以及rand()函数用法
rand(void)用于产生一个伪随机unsigned int 整数。 srand(seed)用于给rand()函数设定种子。srand 和 rand 应该组和使用。一般来说,srand 是对 rand 进行设置。 比如: srand((UINT)GetCurrentTime()); int x = rand() % 100; 是生成 0 到 100 之间的随机数。sr
2013-05-18 11:09:28
795
原创 Slepp(0)
微软的msdn: A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run. If no other threads of equal priority are ready t
2013-05-17 09:45:51
868
原创 消息分流器
通常的窗口过程是通过一个switch语句来实现的,这个事情很烦,有没有更简便的方法呢?有,那就是消息分流器,利用消息分流器,我们可以把switch语句分成更小的函数,每一个消息都对应一个小函数,这样做的好处就是对消息更容易管理。之所以被称为消息分流器,就是因为它可以对任何消息进行分流。下面我们做一个函数就很清楚了:void MsgCracker(HWND hWnd,int id,HWN
2013-05-16 12:29:59
703
转载 关于VC编译错误error LNK2001:的解决办法
. Windows子系统设置错误, 提示: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainWindows项目要使用Windows子系统, 而不是Console, 可以这样设置:[Project] --> [Settings] --> 选择"Link"属性页,在Project Option
2013-04-27 15:42:03
1247
原创 窗口拆分
1 CSplitterWnd类CSplitterWnd类提供一个分隔器窗口的功能,分隔器窗口是一个包含有多个窗格的窗口。窗格通常是应用程序特定的由CView派生的对象,但它也可以是具有适当子窗口ID的任何CWnd对象。一个CSplitterWnd对象通常被嵌入CFrameWnd或CMDIChildWnd父对象。你应按如下步骤创建一个CSplitterWnd对象:1.在父框架中嵌入一个C
2013-04-26 18:30:01
720
原创 解释一下SetItemData
在用树形结构的时候发现有一个SetItemData树形,MSDN解释如下Call this function to set the 32-bit application-specific value associated with the specified item.看完好生困惑,于是乎百度了一下,看到一优快云论坛大神的解释,释然。SetItemData可以为每一行绑定一个
2013-04-26 11:00:23
8777
原创 预编译头和.pch 文件
预编译头的概念:所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的 C/C++代码--------甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。预编译头的作用: 1提高便宜速度了,有了它你没有必
2013-04-26 10:07:34
812
原创 关于VC编译错误fatal error C1083的解决办法
错误描述fatal error C1083: Cannotopen precompiled header file: /'Debug/v13_3.pch/': No such file or directory 原因及分析This error results from a missing file - the compiled version of StdAfx.cpp. Visual
2013-04-26 09:58:33
1413
转载 CRichEditCtrl系列讲堂8 解决CEdit/CRichEdit中SetSel错位或者位置判断错误的问题
需求:在CEdit中查找指定文本然后选中,当然CEdit中会包含汉子以及英文字符,也包括回车换行符,然后进行查找,第一次标识并选中第一次出现的位置,再次点查找要标识并选中第二次出现位置,如果到达最后一次要从头重新查找。 解答:问题很简单可能会使用CString来获取窗口的内容GetWindowText 然后在获取到的CString中进行查找,然后使用
2013-04-25 11:26:37
1664
转载 CRichEditCtrl系列讲堂7 设置行间距源代码
根据实际测试来看,bLineSpacingRule=5时,可以设置dyLineSpacing=30来设置1.5倍行距,所以最终决定用这个设置1倍以上的非整数行间距。设置行间距源代码CRichEditCtrl m_RichEdit;LONG lineSpace=(LONG)(X*20);//X为要设置的行间距PARAFORMAT2 pf;ZeroMemory(&pf
2013-04-25 11:25:40
1354
原创 CRichEditCtrl系列讲堂6 一些小技巧
CEdit::GetSelDWORD GetSel()const;void GetSel(int& nStartChar,int& nEndChar)const;返回值:此版本返回一个双字,其低位字为起始位置,高位字为第一个未被选中的字符的位置。参数: nStartChar 指向当前选中部分的第一个字符位置,用整数表示。nEndChar 指向第一个未被选中的字符
2013-04-25 11:24:47
788
转载 CRichEditCtrl系列讲堂5 常用函数应用
函数应用1. 设置RichEdit控件的显示字体CHARFORMAT cf;ZeroMemory(&cf, sizeof(CHARFORMAT));cf.cbSize = sizeof(CHARFORMAT);cf.dwMask|=CFM_BOLD;cf.dwEffects|=CFE_BOLD; //粗体,取消用cf.dwEffects&=~CFE_BOLD; cf.dwM
2013-04-25 11:23:04
736
原创 CRichEditCtrl系列讲堂4 自己遇到的查找问题及解决方案
UpdateData(TRUE);CString str; m_RichTex.GetWindowText(str);int len=strEdit.GetLength();long index=0,end_index=0; repText.Format("%d",len);strEdit.MakeLower();str.MakeLower(); if(m_down==IDC
2013-04-25 11:21:49
780
转载 CRichEditCtrl系列讲堂3 关于版本和查找错位问题
1 如何使用richedit2.0 or richedit3.0使用原因:由于RichEdit2.0A自动为宽字符(WideChar),所以它可以解决中文乱码以及一些汉字问题方法一:(msdn上的做法,适用于用VC.NET及以后版本创建的工程)To update rich edit controls in existing Visual C++ applications to
2013-04-25 11:18:22
821
转载 CRichEditCtrl系列讲堂2 查找功能的实现
void FindText( CRicheditctrl & cRichEdit ,LPCTSTR pszText,BOOL bWholeWord,BOOL bCaseSen,BOOL bUp ){ DWORD dwOptions = 0; if (bWholeWord) dwOptions |= FR_WHOLEWORD; if (bCaseSen) dwOptions |=
2013-04-25 11:16:45
924
转载 CRichEditCtrl系列讲堂1 VC中在对话框上使用Rich Edit控件相关问题
这几天所学,所查资料进行一下小结1.设置edit只读属性 方法一: m_edit1.SetReadOnly(TRUE); 方法二: ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);2.判断edit中光标状态并得到选中内容(ri
2013-04-24 23:56:04
1048
原创 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
// Mut.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include CRITICAL_SECTION g_cs;DWORD WINAPI WriteA(){ //DWORD i=GetCurrentThreadId(); for (int
2013-04-24 19:51:56
877
Windows核心编程 高清,带目录china-pub 出品版
2018-11-27
NumPy攻略 Python科学计算与数据分析.
2018-01-16
程序员的数学1
2017-12-19
程序员的数学2 概率统计
2017-12-19
程序员的数学
2017-12-19
Qt SQLite开源浏览工具源码
2017-12-08
VC++ IO完成端口 网络考试系统(服务器+用户端+数据库+源代码)
2014-07-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人