- 博客(18)
- 资源 (3)
- 收藏
- 关注
转载 线程安全
以前常听高手告诫MFC对象不要跨线程使用,因为MFC不是线程安全的。比如CWnd对象不要跨线程使用,可以用窗口句柄(HWND)代替。 CSocket/CAsyncSocket对象不要跨线程使用,用SOCKET句柄代替.那么到底什么是线程安全呢?什么时候需要考虑?如果程序涉及到多 线程的话,就应该考虑线程安全问题。比如说设计的接口,将来需要在多线程环境中使用,或者需要跨线程使用某个对象时,这个就必须
2007-11-28 15:49:00 771
转载 IOCP
网络程序入门后的第一件是就是学会选择合适的io模型,这对于一个网络程序来说非常重要,特别是性能。当前Windows支持的各种Socket I/O模型如下:select模型WSAAsyncSelect模型WSAEventSelect模型Overlapped I/O 事件通知模型Overlapped I/O 完成例程模型IOCP模型(这里以下的介绍援
2007-11-21 18:00:00 8022 8
原创 string to float
const TCHAR* p = _T(" +112.2"); //const TCHAR* p = _T("1.23456E+3"); TCHAR szSign[2] = {0, 0}; long double factor; unsigned int expo; while(isspace(*p))
2007-11-19 16:20:00 1980
原创 浮点数
1. float, double, 以及 long double 前面所说的数据类型只能用于处理整数。如果我们需要使用小数,就要使用浮点类型(floating-point)。C 提供了三种浮点类型:float, double, 以及 long double。注意,unsigned/signed 不能用于修饰浮点类型。浮点类型可以处理正数,也能处理负数。没有无符号浮点型。 C 标
2007-11-19 16:17:00 4178
原创 atof(), sscanf()的区别
在使用 Microsoft C 或 C/C++ 开发的应用程序中,sscanf() 函数可以很好地替代 atof() 函数,将数字字符串转换为浮点数。如果字符串表示的数无效,atof() 将返回零值,而 sscanf() 会返回更多有用的错误信息。应用程序可以将 sscanf() 返回的错误值用于 matherr() 函数以执行错误处理。除非真正发生了数学异常,否则 atof() 函数不会调用 m
2007-11-16 15:15:00 1891 1
转载 .obj, .lib, .dll, .exe的关系
lib是和dll对应的。 lib是静态的库文件,dll是动态的库文件。 所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行 你的exe的时候不再需要lib。 所谓动态就是exe运行的时候依赖于dll里面提供的功能,没有这个dll,你的exe无法运 行。 lib, dll, exe都算是最
2007-11-15 17:21:00 804
转载 shutdown Command
在Windows XP中,新增了一条命令行工具“shutdown”,其作用是“关闭或重新启动本地或远程计算机”。利用它,我们不但可以注销用户,关闭或重新启动计算机,还可以实现定时关机、远程关机。 该命令的语法格式如下: shutdown [-i |-l|-s |-r |-a] [-f] [-m [//ComputerName]] [-t xx] [-c "message"] [-d[u][p]
2007-11-15 11:15:00 1333
转载 CFile
FC下的文件类 文件操作的方法 使用Visual C++编程,有如下方法进行文件操作: (1)使用标准C运行库函数,包括fopen、fclose、fseek等。 (2)使用Win16下的文件和目录操作函数,如lopen、lclose、lseek等。不过,在Win32下,这些函数主要是为了和Win16向后兼容。 (3)使用
2007-11-14 15:58:00 7036 2
转载 MFC 对象诊断,检测, 内存检查
MFC对象内容转储 对象内容转储是CObject类提供的功能,所有从它派生的类都可以通过覆盖虚拟函数DUMP来支持该功能。在讲述CObject类时曾提到过。 虚拟函数Dump的定义: class ClassName : public CObject { public: #ifdef _DEBUG virtual vo
2007-11-14 15:51:00 1281
转载 调试 要用到的一些函数
C运行库提供和支持的调试功能C运行库提供和支持的调试功能如下: 调试信息报告函数 用来报告应用程序的调试版本运行时的警告和出错信息。包括: _CrtDbgReport 用来报告调试信息; _CrtSetReportMode 设置是否警告、出错或者断言信息; _CrtSetReportFile 设置是否把调试信息写入到一个文
2007-11-14 15:34:00 942
转载 windows 内存分配方式
Win32的堆分配函数 每一个进程都可以使用堆分配函数创建一个私有的堆──调用进程地址空间的一个或者多个页面。DLL创建的私有堆必定在调用DLL的进程的地址空间内,只能被调用进程访问。 HeapCreate用来创建堆;HeapAlloc用来从堆中分配一定数量的空间,HeapAlloc分配的内存是不能移动的;HeapSize可以确定从堆中分配的空间的大小;HeapFr
2007-11-14 15:29:00 2898 1
原创 MFC 线程局部存储
1) CThreadSlotData,MFC线程局部存储机制总结如下: 每个线程局部变量(宏THREAD_LOCAL定义)占用一个槽,并有一个槽号。。 每个线程都有自己的MFC局部存储空间(下文多次使用“线程的MFC局部存储空间”,表示和此处相同的概念)。 通过TLS索引得到的是一个指针P1,它指向线程的M
2007-11-14 14:44:00 1048
转载 CFont
在讲述文字的各种处理效果之前,我们首先来介绍Visual C++中的MFC提供的用来创建字体的CFont类。对于Windows程序开发人员来说,可以创建的字体有两种:库存字体(该字体直接使用字体的索引选 入设备上下文就可以了,例如:CDC::CreateStockObject(int nIndex ))和自定义字体。 CFONT类从CgdiObject派生而来,该类的对象可以通过Createfo
2007-11-14 11:22:00 1780
转载 机器启动时, 要按F1的问题
机器启动时, 要按F1的问题 开机按F1键,这是因为你的BIOS设置不当但也能正常引导系统,属非致命性故障,按F1是在问你是否继续。 你没有安装软盘驱动器,但是在CMOS中设置了,开启软驱的选项. 方法是:开机按Del键,进入BIOS设置,选择第一个"基本设置",把floopy一项设置没"Disabel"无效就可以了. 2 刚开始开机时按DEL进入BIOS,按回车键进入第一项,看看里面的“Dri
2007-11-12 10:25:00 880
转载 一位软件工程师的6年总结
一位软件工程师的6年总结 作者:成晓旭 (声明:欢迎转载,请保证文章的完整性) “又 是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉 淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前 面几点旨在确定大的
2007-11-09 13:55:00 760
转载 xp更换 序列号
1) HKEY_LOCAL_MACHINE/SOFTWARE/microsoft/Windows NT/CurrentVersion/Winlogon/Notify/WgaLogon,删除它,重新启动,wgatray.exe就不会自动启动了, 再把x:/windows/system 32中的wgatray.exe删除2) 首先,新建个文本文件,输入下面这些: ON ERROR RESUME
2007-11-08 13:41:00 850
转载 揭密数组名
揭密数组名 现在到揭露数组名本质的时候了,先给出三个结论: (1)数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组; (2)数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量; (3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址! 1、数组名指代一种数据结构:数组
2007-11-05 10:54:00 520
tcc-0.9.25-win32-bin
2011-08-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人