- 博客(29)
- 收藏
- 关注
转载 转:堆和栈的区别(转贴,作者为一c++程序员,具体姓名不清楚)
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—> 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)—> 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—>全局
2009-03-08 20:20:00
617
1
转载 (转)如何让一个动态链接库文件debug和release编译的时候生成不同的文件名
果然,去掉DEF文件中的LIBRARY是问题的关键!不过用 #ifdef _DEBUG #pragma comment(linker, "/out:debug/test_d.dll") #else #pragma comment(linker, "/out:release/test.dll") #endif 有问题, LI
2008-11-14 17:27:00
1517
转载 (转)再谈非模态对话框的销毁
非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文:When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from
2008-09-27 14:54:00
482
转载 (转)MFC 中的CListCtrl简介
以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn1.CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标
2008-09-18 16:51:00
735
原创 windows多线程程序设计
v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 7.8 磅 0 2
2008-07-23 14:16:00
665
转载 (转)关于MFC42D.DLL
今天把自己写的程序“系统命令工具”给了一个网友,结果他运行出现了错误:没有找到MFC42D.DLL,因此这个应用程序未能启动.重新安装应用程序可能会修复此问题。我为此迷惑不解,去查资料。谜 底是:其实一般在编程序时,都是生成了调试版的程序,就是在那个Debug目录下的可执行文件。运行这调试版的exe文件,都会动态连接 MFC42D.DLL和MSVCRTD.DLL这两个文件,所以你如果将这个文件
2008-06-30 09:40:00
1641
转载 (转)注册表“.REG”文件完全攻略
我们平时对注册表的修改操作大多是通过注册表编辑器Regedit来实现的,然而有一天,你登录了某个网站以后,便发现注册表编辑器已经被禁止使用了,怎么办?最简单也是最方便而且不需要任何工具的办法,那就是使用REG文件来解除注册表编辑器的限制。 何谓REG文件
2008-06-16 11:26:00
960
转载 (转)屏幕录制,远程桌面传输,基于Windows图形驱动的屏幕截图技术
计算机屏幕图像的截取在屏幕的录制、计算机远程控制以及多媒体教学软件中都是关键术,基于Windows操作系统有多种截屏方法,研究的重点集中在如何快速有效的截取DBI(Device-Independent Bitmap)格式的屏幕图形数据。现在商业软件流行的截屏技术主要采取的Api Hook技术,但这种技术一次截屏仍有较大的时间消耗,这样就对运行软件的硬件仍有较多的限制,而且是一种非标准的技术,不为微
2008-06-04 10:45:00
4590
2
转载 (转)高效屏幕录制
屏幕录制有着广泛的用途,主要用于建立演示培训,或者远程屏幕监视和广播。由于屏幕的大小和色深通常很高,而且具有大块背景色、窗口拖动/卷动造成的内容移动和菜单弹出造成的瞬时变化等特性,因此需要在数据采集、压缩和传输/存储上多加考虑。录制之前录制之前,应该选择录制方法,压缩方式和录制范围。有必要尽可能缩小录制的区域以减少数据量。在录制开始之前,可以让用户指定录制的范围,例如全屏幕,指定窗口,
2008-06-04 10:29:00
5050
1
转载 (转)用 Directx 和 GDI 的 两种方法的截屏代码
LPDIRECTDRAW lpDD = NULL;LPDIRECTDRAWSURFACE lpDDSPrime = NULL;LPDIRECTDRAWSURFACE lpDDSBack = NULL;LPDIRECTDRAWSURFACE lpDDSGdi = NULL;LPDIRECTDRAWSURFACE lpSurf = NULL;DDSURFACEDESC DDS
2008-06-04 10:26:00
2544
转载 (转)CONTAINING_RECORD macro之研究
CONTAINING_RECORD macro之研究#define CONTAINING_RECORD(address, type, field) ((type *)( / (PCHAR)(address) - / (ULONG_PTR)(&((type *)0)->field))) 这个宏的目的是 当我们知道某一个 C struct 内的某个field 的 address,我们就可以反推回
2008-05-07 15:23:00
682
转载 (转)译:理解 Win32 "OutputDebugString"
坚定的 Win32 开发人员可能对 OutputDebugString() API 函数比较熟悉,它可以使你的程序和调试器进行交谈。它要比创建日志文件容易,而且所有“真正的”调试器都能使用它。应用程序和调试器交谈的机制相当简单,而本文将揭示整件事情是如何工作的。本文首先是由以下事件促使的,我们观察到 OutputDebugString() 在管理员和非管理员用户试图一起工作或游戏时并不总是
2008-05-06 09:28:00
802
转载 用完成端口开发大响应规模的Winsock应用程序
作者:Anthony Jones&Amol Deshpande 翻译:刘西齐 原文出处:http://msdn.microsoft.com/msdnmag/issues/1000/Winsock/ 通常要开发网络应用程序并不是一件轻松的事情,不过,实际上只要掌握几个关键的原则也就可以了——创建和连接一个套接字,尝试进行连接,然后收发数据。真 正难的是要写出一
2008-01-31 14:03:00
397
转载 socket编程模型分析(转)
曾经用VC做过一个聊天程序,目的是熟悉socket编程模型。当然也放到了简历上,没想到每次面试都会被问到有哪些网络模型,早就记不清楚了,只能知道个大概。虽然不用面试了,但还是很有必要把它总结一下,学一点东西,就要把它搞清楚。 没有研究过socket发展史,但通过这些网络模型的分析与比较,也大概明白了其发展过程。最先出现的是阻塞模型,这个模型是讲解计算机网络时被作为例子 介绍的,也是最简单
2008-01-31 14:00:00
564
转载 用VC++获取系统时间几种方法(转)
A:1 使用time_t time( time_t * timer ) 精确到秒 计算时间差使用double difftime( time_t timer1, time_t timer0 )2 使用clock_t clock() 得到的是CPU时间 精确到1/CLOCKS_PER_SEC秒3 使用DWORD GetTickCount() 得到的是系统运行的时间 精确到毫
2008-01-14 10:15:00
2834
转载 系统托盘图标相关(转)
VC中使程序最小化到//定义托盘图标结构体NOTIFYICONDATA nid; #define WM_ICONNOTIFY WM_USER + 909 //图标响应消息(lParam)#define ID_TASKBARICON 100 //参数(wParam)//初始化系统托盘图标 void CMainFrame::OnBtnMinimize() {
2008-01-09 11:23:00
436
转载 解开 Windows 下的临界区中的代码死锁(转)
摘要临界区是一种防止多个线程同时执行一个特定代码节的机制,这一主题并没有引起太多关注,因而人们未 能对其深刻理解。在需要跟踪代码中的多线程处理的性能时,对 Windows 中临界区的深刻理解非常有用。 本文深入研究临界区的原理,以揭示在查找死锁和确认性能问题过程中的有用信息。它还包含一个便利的实用工具程序,可以显示所有临界区及其当前状态。在 我们许多年的编程实践中,对于 Win32® 临界
2008-01-07 00:05:00
479
转载 看了论坛里关于send时产生WSAEWOULDBLOCK的处理,仍有疑问(转)
搜索了一下论坛里关于send时产生WSAEWOULDBLOCK时的处理办法,得出如下结论: 1.产生这个错误只是说明out buffer已经满了,不代表出错. 2.可以等待FD_WRITE消息,此时将没有发送完成的数据再次发送出去. 但还是有疑问,我的问题如下: 1.我上面的两条结论正确吗? 2.关于在FD_WRITE里把没有发送完的数据发送完,这一点如何做到呢?因为 in
2007-12-25 09:47:00
1443
1
转载 WSAEWOULDBLOCK send 出错(转)
今天有朋友问我关于 Winsock 发送数据出错的问题,错误代码为 WSAEWOULDBLOCK。而刚好以前自己也遇到过这个问题,也研究过一下发生的原因,所以很顺利的帮朋友解决了问题,但由于自己语言表达能力太弱,所以干脆把原因分析写下来:“关于 Winsock Send 无法完成,返回 WSAEWOULDBLOCK 的原因分析和解决方法”,如下:首先,Winsock 异常 10035 WS
2007-12-25 08:40:00
1589
1
原创 遍历文件夹
void EnumeratePathFolders(LPCTSTR lpPathName){ WIN32_FIND_DATA fd; CString s = lpPathName; if (s.Right(1).Compare(_T("//")) != 0) s = s + _T("//"); HANDLE hFind = FindFirstFile(s +
2007-12-12 14:05:00
359
转载 CToolTipCtrl使用详细解说(转)
ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法。一般用法步骤:1、添加CToolTipCtrl成员变量 m_tt。2、在父窗口中调用EnableToolTips(TRUE);3、在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同
2007-12-12 09:06:00
545
转载 控件之CToolTipCtrl(加入仿系统目录树视图)(转)
说明:这些代码是建立在仿系统目录树视图之上的。(在vs2005下编译通过) 一、首先在BrowseSysTreeDlg.h 中加入成员CToolTipCtrl* m_pToolTipCtrl。在资源里,Tree Control把ToolTip的属性设为True;二、然后就是初始化,在BOOL CBrowseSysTreeDlg::OnInitDialog()加入如下代码: ……
2007-12-12 09:05:00
520
转载 VC6.0下实现系统托盘的气泡提示窗口(转)
首先需要更新一下VC6.0的SDK(否则会出现编译出错),方法如下: 1.把ShellAPI.h文件中的关于任务栏提示的函数和常量替换为下面的内容(重要): //// //// Tray notification definitions ////
2007-12-12 09:04:00
1697
转载 在VC++6.0中使用气泡提示(转)
首先需要更新一下VC6.0的SDK,方法如下: 把ShellAPI.h文件中的关于任务栏提示的函数和常量替换为下面的内容://// Tray notification definitions////typedef struct _NOTIFYICONDATAA { DWORD cbSize; HWND hWnd; UINT uID; UI
2007-12-12 09:00:00
772
转载 Windows Socket API 使用经验(转)
我的Windows Socket API 使用经验 文章作者:唐纲本文是我在进行MS-Windows、HP-Unix网络编程的实践过程中总结出来的一些经验,仅供大家参考。本文所谈到的Socket函数如果没有特别说明,都是指的Windows Socket API。一、WSAStartup函数 int W
2007-12-10 10:24:00
875
转载 Socket 的 Send Recv 的长度问题(转)
一个包没有固定长度,以太网限制在46-1500字节,1500就是以太网的MTU,超过这个量,TCP会为IP数据报设置偏移量进行分片传输,现在一般可允许应用层设置8k(NTFS系统)的缓冲区,8k的数据由底层分片,而应用层看来只是一次发送。 windows的缓冲区经验值是4k。 Socket本身分为两种,流(TCP)和数据报(UDP),你的问题针对这两种不同使用而结论
2007-12-10 10:20:00
9973
转载 如果你真的想删除东西的话就在类似remove的算法后接上erase(转)
我将从remove的复习开始这个条款,因为remove是STL中最糊涂的算法。误解remove很容易,驱散所有关于remove行为的疑虑——为什么它这么做,它是怎么做的——是很重要的。这是remove的声明:templateForwardIterator remove(ForwardIterator first, ForwardIterator last, const T& valu
2007-12-06 14:42:00
785
转载 如何优雅地关闭一个socket(转)
最近在windows编程时需要考虑到“如何优雅地关闭一个socket”,查阅了一些资料,现将查到的相关资料做个汇编,希望能对后来者有所帮助(比较懒,所以英文资料没有翻译:-)) 1. 关闭Socket时究竟做了什么 关闭socket分为主动关闭(Active closure)和被动关
2007-12-05 23:00:00
625
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人