摘要:
API函数GetModuleFileName():获得应用程序目录相对路径MFC函数GetModuleFileName():获得应用程序目录绝对路径采用.\\也能获得应用程序当前目录当前目录不一定等于应用程序执行文件的所在目录,一个应用程序被启动时,当前目录是可以被任意设置的。GetModuleFileName()得到模块的完整路径名,例如,你载入c:\windows\system32\a.dll,得到模块句柄h,则你可以用GetModuleFileName()得到h模块的完整路径名。.\\一般用在包含头文件的语句中。另一个是程序编译后起作用的,例如,打开自定义的配置文件等。注:直接用Load 阅读全文
posted @ 2012-04-22 22:08
血马雄风
阅读(13292)
评论(0)
推荐(0)
摘要:
动态连接库有其自身的优点,如节省内存(例如,多个应用程序可以共享一个DLL文件,真正实现了资源"共享",大大缩小了应用程序的执行代码,有效地利用了内存,而且DLL文件作为一个单独的程序模块,封装性、独立性好,有利于提高软件开发和维护的效率。)、支持多语种等功能,而且,当DLL中的函数改变后,只要不是参数的改变,调用函数并不需要重新编译。Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的。 阅读全文
posted @ 2012-04-22 20:49
血马雄风
阅读(3659)
评论(0)
推荐(0)
摘要:
程序的诞生#Application Object产生,内存于是获得配置,初值亦设立完成。#AfxWinMain执行AfxWinInit,后者又调用AfxInitThread,把消息队列尽量加大。#AfxWinMain执行InitApplication。这是CwinApp的虚函数,但我们通常不改写它。#AfxWinMain执行InitInstance.这是CwinApp的虚函数,我们必须改写。#CMyWinApp::InitInstance 'new'了一个CMyFrameWnd对象。#CMyFrameWnd构造函数调用Create,产生主窗口。我们在Create参数中指定的窗口 阅读全文
posted @ 2012-04-22 16:12
血马雄风
阅读(161)
评论(0)
推荐(0)
摘要:
首先是常规的包含:1 #include "a.h"2 3 int4 main()5 {6 function_a();7 }这是一个在平常不过的包含了,主文件main.cpp包含头文件"a.h",当调用function_a()函数时,由于main.cpp文件中未包含function_a此函数的声明,那么它会到"a.h"这个文件中去找它的声明。如果在"a.h"这个文件中找不到,那么它回到"a.h"所包含的头文件中去找,这样一级一级往上找,直到找到或者找不到而报错为止。图中是最为平常的头文件包含。但是 阅读全文
posted @ 2012-04-22 16:03
血马雄风
阅读(250)
评论(0)
推荐(0)
摘要:
原文:Yevgeny Menaker翻译:Northtibet下载源代码原文出处:Five Steps to Writing Windows Services in C摘要 Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。 当初我写第一个 NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 写的文章:.. 阅读全文
posted @ 2012-04-22 15:38
血马雄风
阅读(473)
评论(0)
推荐(0)
摘要:
最近用VC7做一个小软件,主要的功能是定时扫描GPRS接收过来的数据,并存放在数据库里。要求把软件注册成为windows服务。在所有的工作做完以后,我着手实现这部分功能。其实完全不用在程序中写入任何代码,只需要执行一个批处理文件,便可完美地打成服务了。但我还是想试一下用程序怎么实现这个功能。在VC知识库里,找到一篇文章,其实原理并不难,无非是把程序的切入口,由main函数转换到服务控制台上去。文章的名字叫《用 C 语言编写 Windows 服务程序的五个步骤》,有兴趣的朋友可以参考一下。在这里要说的是,我用的VS2003做为开发工具,与VC6有一定差别,比如main和_tmain,在引用的头文 阅读全文
posted @ 2012-04-22 15:36
血马雄风
阅读(2002)
评论(0)
推荐(0)
摘要:
此压缩包是Microsystems公司做的符合CCITT规范的Solaris 2.0系统上的软件原代码g72x.h g721.c, g723_24.c 和 g723_40.c的头文件g711.c CCITT G.711 u-law 和 A-law 压缩 g72x.c G.721 and G.723 ADPCM codes 通用命名规则 g721.c CCITT G.721 32Kbps ADPCM 编码器 (with g72x.c) g723_24.c CCITT G.723 24Kbps ADPCM 编码器 (with g72x.c) ... 阅读全文
posted @ 2012-04-22 12:54
血马雄风
阅读(2172)
评论(0)
推荐(0)
摘要:
__inline 关键字建议编译器在合理的情况下内联编译 C 或 C++ 函数。__inline 语义与 C++ inline 关键字的语义完全相同。__inline 是一个存储类限定符。 它不影响函数的类型。格式:inline _declarator; __inline _declarator; // Microsoft相关__forceinline _declarator; // Microsoft相关__inline与inline等同。inline和__inline通知编译器将该函数的内容拷贝一份放在调用函数的地方,这称之为内联。内联减少了函数调用的开销,但却增加了代码量。_... 阅读全文
posted @ 2012-04-22 12:24
血马雄风
阅读(20360)
评论(0)
推荐(3)
摘要:
数据类型说明BOOL布尔变量,实际上是UINTCOLORREF 用作颜色索引的32位整数DWORD 32位的无符号整数HANDLE 32位的无符号整数,用作句柄HINSTANCE 32位的无符号整数,用作实例句柄HWND 32位的无符号整数,用作窗口句柄HDC 一个设备描述背景的句柄LONG 32位带符号整数LPARAM 32位整数,用作窗口函数或者其他回调函数的参数之一LPCSTR 指向一个字符串常量的32位指针LPSTR 定义一个线性的32位字符串指针LRESULT 32位整数,是窗口函数或者其他回调函数的返回值类型UINT 定义一个新的Win32数据类型,它会把一个参数强制转换... 阅读全文
posted @ 2012-04-22 10:43
血马雄风
阅读(1378)
评论(0)
推荐(0)
摘要:
plus就是“加” 的意思 c plus plus = cpp = c++;#ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。 要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c++ 阅读全文
posted @ 2012-04-22 10:33
血马雄风
阅读(225)
评论(0)
推荐(0)
摘要:
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么标准头文件都有类似以下的结构? #ifndef __INCvxWorksh#define __INCvxWorksh #if... 阅读全文
posted @ 2012-04-22 10:17
血马雄风
阅读(167)
评论(0)
推荐(0)
摘要:
对话框DoModal()函数调用失败一般而言有两种表现形式:一是对话框弹不出来,但是没有错误提示;二是对话框弹不出来,同时伴随内存访问错误的提示框出现。第一种表现主要是因为没有对资源句柄进行切换造成的,以在DLL中弹出对话框中最为常见。 解决办法是: 如果是MFC规则DLL,可以使用所有导出函数的开始处添加 AFX_MANAGE_STATE宏,具体代码为:AFX_MANAGE_STATE(AfxGetStaticModuleState( )), 如果是MFC扩展DLL,具体做法是 1. 在DLL中定义两个全局变量, HINSTANCE hResOld; // 旧的资源句柄 HINST... 阅读全文
posted @ 2012-04-22 01:41
血马雄风
阅读(458)
评论(0)
推荐(0)
摘要:
1.WSAStartup 函数 为了在你的应用程序当中调用任何一个Winsock API 函数,首先第一件事情你就是必须通过WSAStartup函数完成对Winsock 服务的初始化,因此需要调用WSAStartup函数。Declare Function WSAStartup Lib "ws2_32.dll" _ (ByVal wVersionRequired As Long, lpWSAData As WSAData) As Long 这个函数有两个参数: wVersionRequired 和 lpWSAData。wVersionRequired 参数定义Windows 阅读全文
posted @ 2012-04-22 01:29
血马雄风
阅读(299)
评论(0)
推荐(0)
摘要:
//创建定时器函数的声明:SetTimer( hWnd: HWND; {与定时器相关联的窗口句柄} nIDEvent: UINT; {指定一个非 0 的定时器标识符} uElapse: UINT; {指定间隔时间, 单位是毫秒} lpTimerFunc: TFNTimerProc {每到时间后, 要调用的函数的指针}): UINT; {返回定时器标识符; 失败返回 0}//移除定时器函数的声明:KillTimer( hWnd: HWND; {与定时器相关联的窗口句柄} ... 阅读全文
posted @ 2012-04-22 00:59
血马雄风
阅读(625)
评论(0)
推荐(0)
摘要:
在wince应用程序编程中遇到了播放关机音乐的问题,还有同步播放和异步播放的问题,这些问题主要是PlaySound函数的问题。现将相关内容整理如下。一、PlaySound函数用法PlaySound函数的声明为:BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);1、参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。2、参数hmod是应用程序的实例句柄,当播 阅读全文
posted @ 2012-04-22 00:02
血马雄风
阅读(10875)
评论(0)
推荐(0)

浙公网安备 33010602011771号