自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

舞亦香满衣

夜深人静思往事,旧梦如歌转萧条。昨日悲欢苦未消,回首前尘却已遥。

  • 博客(26)
  • 资源 (12)
  • 收藏
  • 关注

转载 (20)LoadString、LoadIcon和LoadCursor函数

在编写国际化的应用程序里,经常要使用不同语言的字符串。比如中文菜单里叫做“文件”,而在英语里叫做“File”。开发这种软件的功能是一样的,只是界面上显示的文字不一样而已。为了方便这种软件的开发,在Windows里经常使用的方法就是替换掉显示的字符串,比如指定在中文里就显示“文件”,在英语里就显示“File”,是通过函数LoadString从不同的资源里加载不同的字符串显示来实现的。其实所有可变的字

2008-11-28 17:09:00 1187

原创 WM_CREATE ,WM_NCCREATE,WM_DESTROY,WM_NCDESTROY详解

通常我们理解在窗口创建时发出消息WM_CREATE,但是在这个消息之前还有一个消息是被发出的WM_NCCREATE。即:WM_NCCREATEWM_CREATE对应的,在窗口被关闭时发出消息WM_DESTROY,WM_NCDESTROY。顺序:WM_DESTROYWM_NCDESTROY这里要注意的是,在一个窗口被关闭时,如果这个窗口存在子窗口,那么会先发送子窗口的WM_DESTROY和WM_NC

2008-11-28 16:12:00 11982 4

转载 (19)DestroyWindow函数

以前已经介绍过直接点击关闭按钮来关闭应用程序,但想删除一个窗口对象,需要用到什么函数的呢?比如创建了30个窗口,想把第12个窗口关闭删除掉,那就需要使用函数DestroyWindow。当调用DestroyWindow函数后,操作系统就会进行一系列的删除动作,先发送WM_DESTROY消息,接着发送WM_NCDESTROY消息。如果这个窗口还有子窗口或者是其它窗口的所有者,就需要给所有子窗口发送删除

2008-11-28 14:34:00 1372

转载 (18)EndDialog函数

上一次介绍了怎么样显示对话框的函数,那么怎么样关闭对话框呢?这就需要使用到函数EndDialog。这个函数只能在对话框的消息处理函数里使用,并且这个函数调用之后,没有立即就删除对话框的,而是设置了操作系统里的结束标志。当操作系统查检到有这个标志时,就去删除对话框的消息循环,同时也去释放对话框占用的资源。其实对话框的生命周期是这样的,先由函数DialogBox创建对话框,这样函数DialogBox完

2008-11-27 08:47:00 1408

原创 (17)DialogBox和DialogBoxParam函数

对话框是比较常用的窗口,比如当你想让用户输入一些参数时就可以使用对话框。或者提示一些警告的信息,都是可以使用对话框的。比如当你拷贝文件时,Windows就会提示一个拷贝文件的进度对话框。对话框的使用范围比较广,并且它在设计时就可以看到运行的结果模样,这样方便设计。但对话框又分为两类,一种对话框运行后,一定要用户关闭那个对话框后才能返回到父窗口;一种对话框是不需要关闭后就可以直接返回父窗口。因此,软

2008-11-27 08:39:00 7216

转载 (16)BeginPaint和EndPaint函数

当人们使用软件时,大多数是想看到自己所需要的结果,比如玩RPG游戏,就是想看到自己所操作的主角做各种各样的事情。在2D的RPG游戏里,其实做的事情,就是不断地更新画面,也就是不断地显示BMP的图片。在普通的程序里,大多也是显示各种文本和图片的,但是有一种类型的应用程序是不怎么显示结果的,那就是服务程序。不管怎么样,只要我们想看到程序所执行后的结果,就需要在程序里显示出来。也就是需要调用BeginP

2008-11-26 22:08:00 892

转载 (15)PostQuitMessage函数

自然界面里,各种生物都是有其生命周期的。程序也是有其生命周期的,创建时就是它出生了,当它运行工作中就是成年期,最后少不了要死亡的,那么程序的死亡是怎么样出现的呢?像以前介绍函数GetMessage里是使用一个循环不断地检测消息,周止复始的,是不可能出现死亡的,但它会检测到消息WM_QUIT就退出来。那现在问题是谁发送WM_QUIT消息出来呢?这就是PostQuitMessage函数所做的工作。当你

2008-11-26 21:59:00 609

原创 VC 6.0 工程的 ClassView 中 丢失类

ClassView 里有两个类的信息显示不出来,网上搜了下才知道这是VC 6 的老问题。解决方法是:把相应的 .h 头文件修改一下,再保存就可以了。

2008-11-26 11:29:00 898

转载 C# 3.0 入门系列(一)

 谈到dlinq,就不得不先说linq。让我们先看看什么是linq。linq是 Language Integrated Query的缩写。那么事实上dlinq就是 Database Language Integrated Query 的缩写。linq和dlinq最大的区别就在与linq是对内存进行操作,而dlinq的操作对象为数据库。我们先来看一个linq的例子。在这之前,你需要安装s2008 b

2008-11-22 21:23:00 859

转载 八种排序算法总结

 学习了这么多的排序算法,还没有做个总结,呵呵       冒泡排序冒泡排序是最慢的排序算法。在实际运用中它是效率最低的算法。它通过一趟又一趟地比较数组中的每一个元素,使较大的数据下沉,较小的数据上升。它是O(n^2)的算法。  快速排序快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1) 如果不多于1个数据,

2008-11-21 08:43:00 12119 14

原创 堆与栈有什么区别?

 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—

2008-11-21 08:29:00 1185 3

转载 (14)DispatchMessage函数

 前面已经介绍从系统队列里获取一条消息,然后经过快捷键的函数检查,又通过字符消息函数的转换,最后要做的事情就是调用DispatchMessage函数,它的意思就是说要把这条消息发送到窗口里的消息处理函数WindowProc。 函数DispatchMessage声明如下:WINUSERAPILRESULTWINAPIDispatchMessageA(    __in

2008-11-20 20:05:00 1074 1

转载 (13)TranslateMessage函数

 TranslateMessage是用来把虚拟键消息转换为字符消息。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。TranslateMessage函数用于将虚拟键消息转换为字符消息。字符消息被投递到调用线程的消息队列中,当下一次调用GetMessage函数时被取出。当我们敲击键盘上的某个字符键时,系统将产生WM_KEY

2008-11-20 20:03:00 848

转载 (12)TranslateAccelerator函数

当应用程序运行时,用户按下快捷键,这样就产生了一个按键消息,那么Windows是怎么样把它转化为快捷键响应的消息呢?这就需要使用TranslateAccelerator函数。TranslateAccelerator函数主要的作用就是把消息跟快捷键表里定义的按键进行比较,如果发现有快捷键,就会把这个按键消息转换为WM_COMMAND或者WM_SYSCOMMAND消息给窗口的消息处理函数发送过去。

2008-11-20 19:41:00 2325

转载 安装vs2008中文时出现错误Write error in the file VS2008TeamSuite90DayTrialCHSX1429243.iso. Probably the disk is full 的解决办法

 出现图中所示错误时特地去看了下F盘的空间,还有3G多...经查找资料发现FAT32只支持单个文件为4.0GB,而VS2008的ISO文件要大于这个数,故出现文件写入错误提示磁盘空间已满,解决方法是你将文件解压的存放到NTFS文件格式的磁盘即可.下载详细信息: Visual Studio Team System 2008 Team Suite(试用版)http://www.micros

2008-11-19 08:42:00 4616 2

转载 (11)GetMessage函数

 应用程序为了获取源源不断的消息,就需要调用函数GetMessage来实现,因为所有在窗口上的输入消息,都会放到应用程序的消息队列里,然后再发送给窗口回调函数处理。函数GetMessage声明如下:WINUSERAPIBOOLWINAPIGetMessageA(    __out LPMSG lpMsg,    __in_opt HWND hWnd,    __

2008-11-18 10:00:00 1114

转载 (10)LoadAccelerators函数

当用户使用软件时,往往有些功能是最常用的功能。作为开发人员,就需要让用户感觉到这个软件好用,这样就需要把他们最常用的功能用起来最方便,最快捷,能提高生产效率。在这方面,微软是做到家了,比如在键盘上有一个Windows键,Windows很多功能都可以通过这个键与其它键来组合成快捷键,提高使用的方便性。现在就来介绍一下怎么样让你的程序也方便使用,就是使用快捷键。函数LoadAccelerators

2008-11-18 09:34:00 3263

转载 (9)WindowProc和DefWindowProc函数

在Windows操作系统里,当窗口显示之后,它就可以接收到系统源源不断地发过来的消息,然后窗口就需要处理这些消息,因此就需要一个函数来处理这些消息。在API里定义了一个函数为回调函数,当系统需要向窗口发送消息时,就会调用窗口给出的回调函数WindowProc,如果WindowProc函数不处理这个消息,就可以把它转向DefWindowProc函数来处理,这是系统的默认消息处理函数。当你按下菜单,或

2008-11-14 20:57:00 1311 1

转载 (8)UpdateWindow函数

UpdateWindow函数是更新窗口的客户区,主要通过发送WM_PAINT消息来实现的。 函数声明如下:WINUSERAPIBOOLWINAPIUpdateWindow(    __in HWND hWnd);hWnd是要更新窗口客户区的窗口句柄。 调用这个函数的实例如下:#001 BOOL InitInstance(HINSTANCE hIn

2008-11-14 09:03:00 2051

转载 (7)ShowWindow函数

ShowWindow的API函数是显示窗口,但它在第一次调用和以后的调用是有区别的。第一次调用时,它的输入参数nCmdShow是需要输入WinMain函数里传入来的nCmdShow参数,而不能是其它参数。 函数声明如下:WINUSERAPIBOOLWINAPIShowWindow(    __in HWND hWnd,    __in int nCmdSho

2008-11-14 09:00:00 1033

转载 (6)CreateWindow函数

函数声明如下:WINUSERAPIHWNDWINAPICreateWindowExA(    __in DWORD dwExStyle,    __in_opt LPCSTR lpClassName,    __in_opt LPCSTR lpWindowName,    __in DWORD dwStyle,    __in int X,

2008-11-14 08:53:00 1173

转载 (5)RegisterClass和RegisterClassEx函数

为了可以创建自己的窗口,就需要向Windows操作系统注册窗口类型,以便后面创建窗口时调用。当然,如果使用Windows预先注册的窗口是不需要注册的。 函数声明如下:#if(WINVER >= 0x0400)WINUSERAPIATOMWINAPIRegisterClassExA(    __in CONST WNDCLASSEXA *);WINUSER

2008-11-14 08:32:00 1911

转载 (4)MessageBox函数

为了显示提示信息给用户,Windows是提供了一个非常方便的API函数MessageBox给用户使用,使用这个API函数可以显示简单的文字信息出来,提醒或提示用户进行下一步操作。函数声明如下:WINUSERAPIintWINAPIMessageBoxA(    __in_opt HWND hWnd,    __in_opt LPCSTR lpText,    __i

2008-11-13 08:55:00 1381 1

转载 (3)使用命令行参数

下面再接着练习使用命令行参数,先在VC2005调试设置里设置输入参数,如下图:可以看到在Command Arguments里输入给程序传送的命令行参数(cmd1 cmd2 命令行参数)。接着修改原来的程序如下:#001 int APIENTRY _tWinMain(HINSTANCE hInstance,#002                       HINSTANCE

2008-11-13 08:39:00 874

转载 (2)使用应用程序句柄

从上面这段程序就可以看到,_tWinMain是应用程序的入口函数,这里是使用它的宏,定义在tchar.h头文件里,为什么要这样作宏定义的呢?由于Windows的应用程序要适应UNICODE和以前单字符的应用程序,由于Windows这两个API的定义是不一样的,如下:UNICODE的定义: #define _tWinMain   wWinMain单字符的定义: #define

2008-11-12 15:05:00 841

转载 (1)第一个应用程序

要跟计算机进行交互,就需要计算机显示信息给人看到,或者发出声音给人听到,然后人看到或听到相应的信息后,再输入其它信息给计算机,这样就可以让计算机进行数据处理,把结果显示给我们。现在就来编写一个最简单的Windows应用程序,让它提示一行文字给我们看到,这就是简单的目标。它实现的源程序和界面如下:上面这个图,是从VC++ 2005里截出来的。这样可以看到源程序和显示的界面,很清楚地知道那些内容在

2008-11-12 15:01:00 1021 3

MFC C++ 分页控件

写了个MFC的分页控件,分享一下。 使用方法: 1、分页控件父窗体继承CPagerNotify类,并重写virtual void OnGotoPager(int nIndex)方法 2、声明变量 CPagerCtrlEx m_Pager; 3、在窗体的OnInitDialog()方法中写入下面代码设置图片: m_Pager.Create(CPoint(200,200),this); // 第一个参数为控件坐标 m_Pager.SetNotifyManager(this); m_Pager.SetProperty(20,1); m_Pager.SetBitmaps(ITEM_FIRST,IDB_PAGER_1_1, IDB_PAGER_1_2, IDB_PAGER_1_3, IDB_PAGER_1_1); m_Pager.SetBitmaps(ITEM_PREV,IDB_PAGER_2_1, IDB_PAGER_2_2, IDB_PAGER_2_3, IDB_PAGER_2_1); m_Pager.SetBitmaps(ITEM_NEXT,IDB_PAGER_3_1, IDB_PAGER_3_2, IDB_PAGER_3_3, IDB_PAGER_3_1); m_Pager.SetBitmaps(ITEM_LAST,IDB_PAGER_4_1, IDB_PAGER_4_2, IDB_PAGER_4_3, IDB_PAGER_4_1);

2011-02-17

msinttypes

ffmpeg需要的文件 inttypes.h stdint.h

2010-07-01

c# wm_copydata 实现进程间通信的例子

c# wm_copydata 实现进程间通信的例子 开发环境vs2005 简单明了

2009-10-26

CodeHelp 代码生成器

声明:本程序开源,可以任意修改、复制,可以不保留原作者信息。 开发环境:vs2005 程序是我在2007年利用每个周末写的,由于现在不从事ASP.NET方面的工作,而且比较懒,放着也是浪费,所以希望有兴趣的朋友为这个软件添砖加瓦,为广大程序员作出贡献,谢谢。 这是一个未完成版本,不过核心代码都已经有了,由“舞亦香满衣”独立编写。 目前只支持SQLSERVER2000,数据库可以自己扩展。

2009-09-06

directsound 录音 捕获麦克风数据

DirectSound播放声音文件的例子网上可以找到不少。虽然有关DirectSound录音的文章不少,但是大部分都是智慧的鱼写的那篇,DEMO几乎没有,我这里在网上搜集整理了一些资料,做成了录音的DEMO供大家学习使用。 这个demo的主要代码是来自网络的,我没找到原作者是谁,对原作者表示感谢。

2009-09-06

C# 滚动的LABEL

C# 做的 WindowsApplication LABEL左右移动

2009-08-18

rfc3265 中文

本文档描述了会话初始协议(SIP)的一个扩展。这个扩展提供了一个用于某sip节点向其他sip节点订阅关于其他节点发生某件事情时候的一种通知的可扩展的平台。 本文档描述具体实现机制可能在将来会形成规范。 需要注意的是,在这里定义的事件通知机制,并不是为了所有通用的事件订阅和通知而制作的。 1. 简介 在很多SIP服务中,都可能会有终端之间的协作,在这些情况下,要求异步的事件通知就显得相当有用。这样的服务包括了自动回叫服务(基于终端的状态事件),好友列表(基于用户的出席状态事件),消息等待通知(基于邮箱状态变更时间),以及PSTN和Internetworking(PINT)[2]状态(基于胡椒状态事件)。 本文档描述的方法提供了一个框架,基于这个框架可以实现订阅这些事件的通知。 本文介绍的消息通知机制并不是为了一个处理所有类型事件的订阅和通知的通用的基础框架而设计的。处理所有类型事件的订阅和通知太复杂了,仅仅凭一个协议描述是远远不够的。我们的目标是提供一个基于SIP的不那么复杂的事件通知机制框架,并且有着比较好的扩展性,能够覆盖简单的事件通知情况到提供强大的订阅通知服务。注意,基于本框架的事件包将可以有任意的细节约定,规定他们所订阅和通知的事件或者事件的类别描述。 本文档并没有描述可能用到的直接扩展;他必须用其他的文档来描述这个扩展(这里指的是”事件包”event packages)。用面向对象的设计来描述的话,他可以被看成一个抽象的基类,必须被派生出一个扩展的实例类才能使用。在第四节讲述了如何创建这种扩展。

2009-08-12

图片取点工具 取得图片中某点的坐标

最新项目需要使用图片中的某点坐标,所以花了点时间写了这个小工具

2009-07-30

js 图片 轮换 效果

js图片轮换js图片轮换js图片轮换js图片轮换js图片轮换js图片轮换js图片轮换js图片轮换

2009-07-03

C++ 远程控制 白板 语音 程序

C++ 远程控制 白板 语音 C++ 远程控制 白板 语音 C++ 远程控制 白板 语音

2009-06-30

谈ASP.NET全局异常处理与假窗口提示demo

谈ASP.NET全局异常处理与假窗口提示

2008-12-16

文件删除工具1.0.0

批量删除硬盘文件 svn删除 c# 2003

2007-11-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除