2012-07-14 23:12
⁄ 工业·编程
⁄ 共 587字
Windows API函数::GetModuleFileName的主要作用是获取当前应用程序的路径,其用法大致如下:
extern CWinApp theApp;
char szAppName[MAX_PATH];
:: GetModuleFileName(theApp.m_hinstance, szAppName, MAX_PATH);
这样字符数组szAppName就保存了当前应用程序的全路径。现在发现它的一个妙用是可以通过它获取应用程序的一些辅助文件路径,如参数文件所在的路径、临时文件所在路径,只要设置这些路径和应用程序路径存在相对关系...
VC阅读全文
2012-07-14 23:10
⁄ 工业·编程
⁄ 共 5408字
Windows环境下读写文件一般有下列有下面几种方式:C语言的文件操作函数,如fopen函数等,C++的I/O流库,Win32 API的文件操作函数,如CreateFile()、WriteFile()、ReadFile(),MFC的文件操作类,如CFile和CStdioFile等等。但是在大型的数据文件,上面的文件处理方法是不太适合的。对于大文件的操作一般是以内存映射文件来加以处理的。为此本人以读取著名的遥感图像文件格式pix文件来说明如何应用内存文件映射来设计一个通用的文...
VC阅读全文
2012-07-14 23:09
⁄ 工业·编程
⁄ 共 846字
对话框DoModal()函数调用失败一般而言有两种表现形式:一是对话框弹不出来,但是没有错误提示;二是对话框弹不出来,同时伴随内存访问错误的提示框出现。
第一种表现主要是因为没有对资源句柄进行切换造成的,以在DLL中弹出对话框中最为常见。解决办法是:如果是MFC规则DLL,可以使用所有导出函数的开始处添加 AFX_MANAGE_STATE宏,具体代码为:AFX_MANAGE_STATE(AfxGetStaticModuleState( )),如果是MFC扩展DLL,具体做法是
1....
VC阅读全文
2012-07-14 23:07
⁄ 工业·编程
⁄ 共 268字
开发时有一个工程的一个文件的断点无效,VS 2005提示说当前不会命中断点。源代码与原始版本不同,请在断点选项里设置允许源代码与原始版本不同。这个是针对单个断点进行设置。如果要对所有的断点进行设置,则要在“工具”——〉“选项”——〉“调试”——〉“要求源文件与原始版本完成匹配”去掉勾。
实际上有比这个办法更好的办法,就是将出问题的文件用notepad打开,然后另存为Unicode编码,覆盖原来的文件。 网上另外有一种办法是: ...
VC阅读全文
2012-07-14 23:06
⁄ 工业·编程
⁄ 共 2021字
目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称"静态库"),另一种为动态连接库(DLL,以下简称"动态库")的导入库(Import Libary,以下简称"导入库")。
静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子。
...
VC阅读全文
2012-07-14 23:04
⁄ 工业·编程
⁄ 共 494字
CString转换为std::string,网上通行的做法是利用CString的GetBuffer函数。具体做法如下(编译环境为VS C++ 2005+sp1, Win XP+sp3,多字节字符集编译,以下同):
CString strMFC= _T("Hello!");
std::string str2(strMFC.GetBuffer());
strMFC.ReleaseBuffer();
CString strMFC= _T("Hello!"); std::string str2(strMFC.GetBuffer()); strMFC.ReleaseBuffer();
这种做法在unicode字符集下也可行。今天...
VC阅读全文
2012-07-11 22:51
⁄ 工业·编程
⁄ 共 5124字
动态链接库 (DLL)是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL副本的内容。
1 DLL基本编程原理分析
一般来说,DLL是一种磁盘文件(通常带...
dll, VC阅读全文
2012-07-11 22:32
⁄ 工业·编程
⁄ 共 3737字
VC编程精粹需要进行内存的动态分配和释放操作,本文总结常用的VC对内存的操作方法并比较他们之间的区别,以便于读者能够加深对他们的理解并根据项目的实际情况选用适合自己的方案。
1、GlobalAlloc() The GlobalAlloc function allocates the specified number of bytes from the heap. Windows memory management does not provide a separate local heap and global heap. Note The global functions ar...
VC阅读全文
2012-07-11 22:15
⁄ 工业·编程
⁄ 共 2513字
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。 2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建...
VC阅读全文
2012-07-11 22:02
⁄ 工业·编程
⁄ 共 2047字
在所有的预处理指令中,#Pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中...
VC阅读全文