- 博客(73)
- 资源 (23)
- 收藏
- 关注
转载 KMP字符串匹配算法【Z】
<br />最普通的字符串匹配算法就不记了,简单贴一下代码int strstr(char *sub, char * str){ int i=0 ; char *p=str, *q=sub; while( *( p+i) !='/0 ' &&*( q+i) !='/0 '){ if( *( q+i) ==*( p+i)) i++; else{
2010-09-15 23:35:00 450
转载 Linux平台gcc和动态共享库的基础知识
<br />对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧。<br /><br />一、GNU gcc的编译工具用法<br /><br />我们先来写一个简单的C程序:hello.cC代码 #include <stdio.h> void print_hello() { printf("Hello World/n"); } int main(int argc, c
2010-09-15 16:19:00 390
转载 clistctrl 虚拟列表
一、什么是虚拟列表控件 虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1是
2010-05-16 20:18:00 751
转载 解决Windows 程序界面闪烁问题的一些经验
原帖地址:http://blog.joycode.com/yaodong/archive/2004/11/26/39764.aspx一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段
2010-05-08 13:19:00 898 2
转载 《多线程服务器的适用场合》-- 例释与答疑
《多线程服务器的适用场合》(以下简称《适用场合》)一文在博客登出之后,有热心读者提出质疑,我自己也觉得原文没有把道理说通说透,这篇文章试图用一些实例来解答读者的疑问。我本来打算修改原文,但是考虑到已经读过的读者不一定会注意到文章的变动,干脆另写一篇。为方便阅读,本文以问答体呈现。这篇文章可能会反复修改扩充,请注意上面的版本号。本文所说的“多线程服务器”的定义与前文一样,同时参见《多线程服务器的
2010-05-07 14:16:00 397
转载 依赖设备的位图和 dib 之间转换
若要将一个 DDB 转换为 DIB 使用以下步骤: 初始化 BITMAPINFOHEADER 数据结构。 设置为 sizeof(BITMAPINFOHEADER) biSize。将 biWidth 设置为位图的宽度。将 biHeight 设置为位图的高度。将 biPlanes 设置为 1。设置为乘以 bmBitsPixel 的位图 bmPlanes biBi
2010-04-20 15:03:00 533
转载 使用线程局部存储TLS
Thread local storage(TLS)统一进程的多个线程可以通过由TlsAlloc方法返回的索引值在线程自身的空间内存储和取回一个值。在以下这个例子里,索引值在进程开始时创建,当各个线程启动时,会各自申请一块动态内存并且将内存指针通过TlsSetValue方法存储到各自的TLS空间中(由先前的索引值标定)。CommonFunc方法使用TlsGetValue方法通过索
2010-04-19 13:45:00 461
转载 UML类图关系
本文随便转载,请保留出处:http://blog.csdn.net/dylgsy/UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)。而其中关联又分为双向关联、单向关联、自身关联;下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里。1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对
2010-04-19 10:25:00 334
转载 探寻Windows NT/2000 Copy On Write机制
探寻Windows NT/2000 Copy On Write机制 WebCrazy(http://wecrazy.yeah.net) CopyOn Write机制是典型的Lazy evaluation实现,现代操作系统如WindowsNT/2000,UNIX/Linux的内存管理部分大量使用这种机制。本文通过对Windows NT/2000中Copy OnWrite机制
2010-02-05 17:01:00 694
转载 利用IE 实现Web 页面截图
1. 目的 在Codeproject 中看到有人做这个, 稍微做了下修改, 做成了命令行的, 使用方法是 iesnap.exe url filename 用以抓取 URL 对于的Web, 并且将Web 的截图保存在Filename 中. url : 要截图的网址 filename: 截图保存文件名 2. 思路 主要使用WebBrows
2010-02-02 21:56:00 2513 1
转载 HTTP服务器上断点下载文件
从HTTP服务器上下载一个文件有很多方法,“热心”的微软提供了 WinInet 类,用起来也很方便。当然,我们也可以自己实现这些功能,通过格式化请求头很容易就能实现断点续传和检查更新等等功能 。 连接主机 格式化请求头 设置接收,发送超时 要想从服务器下载文件,首先要向服务器发送一个请求。HTTP 请求头由若干行字符串组成。下面结合实例说说 HTT
2010-01-28 23:32:00 2254
转载 用WinInet开发Internet客户端应用指南(二)
二、实现步骤 大家知道,每个Internet客户端程序都伴随有一定的目的行为,如读文件、写文件、删除文件等等。客户端的程序要实现这些行为的先决条件是建立Internet连接。然后再根据不同的目的进行具体的操作。为了方便起见,下面这这些张表格针对不同的应用行为列出了所需要的具体操作。其中列出了一般的Internet URL (FTP、或者 HTTP)客户端行为要实现某个目标所必须使用的方法。这
2010-01-28 23:17:00 654
翻译 windows station和desktop
window station 和desktop。它们主要是用于服务程序,一般的应用程序不必使用它们。它们可以用来对服务进行保护。运行在不同的window station 或不同的desktop下的应用程序,不能互相发送消息、挂钩、使用同一个clipboard等等。主要是出于安全的目的。 服务程序一般使用的是LocalSystem帐户,拥有自己的window
2010-01-17 22:48:00 1582 3
转载 什么是系统调用
定义:linux内核中设置了一组用于实现系统功能的子程序,成为系统调用。系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态。系统调用提供在运行程序和操作系统之间的接口,通常以汇编语言指令形式提供。用户在程序中调用操作系统中的功能子模块。或操作系统核心中设置了一组用于实现各种系统功能的子程序,提供用户程序调用。
2010-01-11 22:47:00 968
转载 windows 内核对象
单地说: 内核对象是系统的一种资源。系统对象一旦产生,任何应用程序都可以开启并且使用该对象。系统给内核对象一个计数值作为管理只用,内核对象包括: event,mutex,semaphore,file,file-mapping,preocess,thread.这些内核对象每次产生都会返回一个handle,作为标示,每使用一次,对应的计数值加1,调用CloseHandle可以结束内核对象的使用。
2010-01-11 22:32:00 478
转载 如何从Internet上有效而稳定地下载文件
如何从Internet上有效而稳定地下载文件 ,这是很多网络应用程序要考虑的重要问题,本文提供的代码段针对这个问题进行了初步的探索。希望能够抛砖引玉,对各位编程人员有所帮助。 UINT InternetGetFile (HINTERNET IN hOpen, CHAR *szUrl, CHAR *szFileName, HWND hwndProgress, int idStatusText,
2009-12-27 22:16:00 464
转载 系统理解Win32 API和MFC 1
Win32 API是微软的操作系统Windows提供给开发人员的编程接口,它决定了我们开发的Windows应用程序的能力。MFC是微软为开发人员提供的类库,在某种意义上是对Win32 API的封装。本文试图从全局角度对Win32 API和MFC进行理解──给出二者的概念模型。 本文使用UML描述概念模型。Win32 API本不是面向对象的,我用面向对象的观点去理解它,
2009-12-23 17:59:00 556
原创 获取标题栏信息
1、GetSystemMetrics(SM_CYCAPTION) 2、菜单栏 GetSystemMetrics(CY_MENU); 标题栏 NONCLIENTMETRICS ncm; ncm.cbSize = sizeof(NON
2009-12-16 18:14:00 607
转载 获取桌面窗口的句柄
GetDestopWindow取到的是桌面窗口的句柄,但不是我们所看到的那个包含图标的窗口。包含图标的窗口实际上是DesktopWindow的一个字窗口。确切地讲,Desktop Window包含一个无标题的、类名为“SHELLDLL_DefView”的子窗口,这个字窗口又包含一个无标题的、类名为“SysListView32”的子窗口——这才是那个真正包含桌面图标的窗口。
2009-12-15 16:57:00 4969
转载 CListCtrl使用技巧
以下未经说明,listctrl默认view 风格为report1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windo
2009-12-10 10:06:00 514
转载 Windows外壳名字空间的浏览
Windows95/98对Dos/Win3.x作了许多重大改进,在文件系统方面,它除了采用长文件名替代Dos中的8.3文件名以外,引入外壳名字空间(Shell Name Space)来代Dos文件系统是其又一大突破.本文将简要地介绍如何在Windows 95/98或Windows NT4.0以上版本。简介 在Dos/Win3.x中,每个逻辑分区构
2009-11-27 22:00:00 613
原创 CTreeCtrl重载类
因为公司项目需要,对CTreeCtrl类进行了重载。效果如图 代码如下:#pragma once#include "afxcmn.h"class COwnerDrawTree : public CTreeCtrl{public: COwnerDrawTree(void); ~COwnerDrawTree(void); void DrawItems( CDC* pDC );pr
2009-11-08 22:04:00 1247 1
转载 模态对话框消息处理机制
摘要:消息驱动机制是Windows操作系统的根本,模态对话框消息处理又是不同于一般消息处理的特殊形式。通过分析这种消息机制的原理,可用来处理类似的程序设计要求。 在Windows操作系统中,面向用户的GUI基本上可分为对话框形式和文档/视图两种表现形式。对话框的显示方式又可分为模态对话框和非模态对话框,以适应不同的用户交互需求。由于对话框和文档/视图框架结构各有特色,能不能将文档/视图框架结构
2009-10-20 23:30:00 649
原创 窗口动画效果
在显示窗体动画效果前,先寻找系统区位置BOOL CALLBACK FindTrayWnd(HWND hwnd, LPARAM lParam){ TCHAR szClassName[256]; GetClassName(hwnd, szClassName, 255); // 比较窗口类名 if (_tcscmp(szClassName, _T("T
2009-08-31 14:18:00 500
原创 客户区也能移动整个窗口实现
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point) { if (!IsZoomed() && !IsIconic()) { SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); }
2009-08-25 09:43:00 379
原创 画框
画框的代码HWND hWndDesk = ::GetDesktopWindow(); HDC DeskDC = ::GetWindowDC(hWndDesk); //取得桌面设备场景 int oldRop2 = SetROP2(DeskDC, /*R2_NOTXORPEN*/R2_NOTXORPEN); HPEN newPen = ::CreatePen(0, 3, 0); //建立新画笔,载
2009-08-12 17:40:00 512
转载 透明位图的显示
包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。 一、TransparentBlt 函数的使用
2009-08-04 14:58:00 994
原创 位图变灰
void CGrayView::Gray(CBitmap* pBmp){ CClientDC dc(this); CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pOldBmp=memDC.SelectObject(pBmp); BITMAP sizeBmp;
2009-07-31 09:47:00 568
原创 浏览功能
void CCaptureDlg::OnBrowse() { CString str; BROWSEINFO bi; char name[MAX_PATH]; ZeroMemory(&bi,sizeof(BROWSEINFO)); bi.hwndOwner=GetSafeHwnd(); bi.pszDisplayName=name;
2009-07-29 17:47:00 376
转载 锁定窗口更新
在冗长和粒状的操作中更新窗口时的一个典型难题就是窗口闪烁,改变控件内容导致反复重画控件可见区域的部分或全部。当短时间内这样的更新大量发生时,这就成问题了,而且这种反复重画是以一种无任何吸引力的可视干扰形式出现的。解决这一难题的两种常用方法是使用API函数LockWindowUpdate和WM-SETREDRAW消息。LockWindowUpdate通过换出此窗口的正常设备场景(device c
2009-07-28 17:52:00 1007
转载 WM_PARENTNOTIFY
当子窗口被建立,销毁或用户单击鼠标键时,WM_PARENTNOTIFY被发送使用如下:LRESULT WINAPI xxx_WndProc(HWND hwnd,UINT uMsg, WPARAM wParam,LPARAM lParam)...{ switch(uMsg)...{ HANDLE_MSG
2009-07-27 14:15:00 3516
转载 BeginDeferWindowPos
HDWP hdwp = BeginDeferWindowPos(2); hdwp = DeferWindowPos( hdwp, hStatic, NULL, 0, 0, 100, 20, SWP_NOACTIV
2009-07-23 23:13:00 2189
转载 _TrackMouseEvent
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font
2009-07-21 18:02:00 2526
转载 WM_NCHITTEST消息说明
当光标移动到窗体,或鼠标按下,释放时,发送WM_NCHITTEST消息,如何鼠标不被捕获,消息在窗体得到光标之后发出,否则,消息发送到捕获到鼠标的窗体。 WM_NCHITTEST xPos = LOWORD(lParam); // 光标的水平位置(X)yPos = HIWORD(lParam); //光标的垂直位置(Y) Parameters(参数) xPos lP
2009-07-17 14:20:00 1680
转载 如何做出mouse over效果以文找文
在很多語言中 都會提供mouse over 效果例如當我們滑鼠移到一個按鈕上面 按鈕就會變亮 然後移走之後 又變回原樣然而這功能在VC++中好像都看不到那在VC++中應該要如何做出這功能呢要做出這功能 當然就需要知道兩個時間點就是滑鼠移入以及滑鼠移出的時候 滑鼠移入這非常容易只要在OnMouseMove()中偵測即可不過MFC中並沒有OnMouseL
2009-07-17 14:15:00 584
转载 C++各大有名库的介绍
C++各大有名库的介绍——GUI 在众多C++的库中,GUI部分的库算是比较繁荣,也比较引人注目的。在实际开发中,GUI库的选择也是非常重要的一件事情,下面我们综述一下可选择的GUI库,各自的特点以及相关工具的支持。1、MFC 大名鼎鼎的微软基础类库(Microsoft FoundationClass)。大凡学过VC++的人都应该知道这个库。虽然从技术角度讲,M
2009-07-14 18:06:00 362
转载 利用CImage进行屏幕截图
思路:(1)获取当前顶层窗口(即屏幕)(GetDesktopWindow)(2)获取当前顶层窗口的绘图设备(CWindowDC)(3)创建内存图像(4)将当前顶层窗口图像复制到内存图像中(5)保存图像Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlight
2009-07-14 16:58:00 700
转载 面试题
一道题目“鼠标左键点击在非当前窗口的标题栏上,会产生什么样的win32消息?”。当时感觉有点茫然,不就是WM_LBBUTTONDOWN、WM_ACTIVATE和WM_SETFOCUS吗?后来感觉可能不是这么简单,就用Spy++跟踪了一下,果然多了不少消息。在NC点击发出的消息流程如下: WM_NCHITTEST //在鼠标点击非激活窗体的时候发出的,如果是点在子窗体上,还会通过
2009-07-08 19:00:00 1088
转载 从Windows消息的角度看窗口应用程序的运行过程
一个典型的Win32窗口应用程序的框架是这样的: 程序入口点(WinMain函数)-->注册窗口类(调用RegisterClass函数或RegisterClassEx函数)-->创建主窗口(调用CreateWindow函数或CreateWindowEx函数)-->显示主窗口(调用ShowWindow函数)-->更新主窗口(调用UpdateWindow函数)-->进入消息循环(G
2009-07-08 18:24:00 701
转载 谈谈父窗口和所有者窗口
一、概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。 所以我们可以看到,窗口之间的关系有两种:owner-owned 关系和 parent-child关系。前者称之为拥有/
2009-07-04 23:25:00 408
MFC程序员的WTL指南
2011-09-05
分析模式 可复用的对象模型
2011-01-01
EXIM FREEIM 飞鸽传书 源码
2010-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人