- 博客(34)
- 资源 (3)
- 收藏
- 关注
原创 Run-Time Check Failure #3 - The variable 'comstat' is being used without being initialized
方案1: 改变项目配置属性一种解决方案是改变基本运行时检查(changing the runtime checks in project settings):在菜单Project->Project properties-> C/C++ -> Code generation-> Basic Runtime checks --> change to 'Default',在中文版中是:项目-
2017-06-26 13:16:12 1370
原创 VC文档"最近使用的文档"列表LoadStdProfileSettings
在文档/视图中,打开菜单旁边的”最近使用列表“可以列出最近使用的文档名称,这对于加快程序的处理文档速度。在VC2008SP1中的效果如下:我们只要在应用程序类的InitInstance 函数中调用LoadStdProfileSettings()即可,函数原型如下:void LoadStdProfileSettings( UINT nMaxMRU = _AFX_
2017-06-23 16:54:37 1091
原创 VC INI文件读写 和 GetProfileString,WriteProfileString函数的使用
VC中用函数读写ini文件的方法 ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。[section]
2017-06-23 16:21:07 997
原创 SetRegistryKey的作用
使用CWinApp类的WriteProfileString 、GetProfileString等函数。1、如果不调用SetRegistryKey(),CWinApp 会把信息保存系统目录的的Test.ini文件中(C:\Windows\Test.ini)2、如果调用SetRegistryKey(),CWinApp 会把信息保存系统目录的的注册表中 HKEY_CURRENT_USER
2017-06-23 16:14:11 802
原创 探索MFC全局函数-AfxGetApp()
MFC做到了从C/SDK开发Win32程序到利用OOP思想开发Win32程序的过渡,它的封装完美体现的C++的三大特性,提高了Win32程序的开发效率,但它的封装也使得本来清晰的脉络,变得晦涩起来。今天我们探究被微软冠以Afx前缀的全局函数AfxGetApp(),这个函数作用是获取当前应用进程的指针,确切的说是获取由CWinApp派生出类的对象,相信懂MFC的人都熟知,但作为全局函数的它是
2017-06-23 16:08:35 974
原创 AfxGetApp用法
AfxGetApp( )是全局的。AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。比如在全局函数中要向对话框中的列表写数据。void writeString(char* pString){ CWnd* pWnd = AfxGetApp()->GetMainWnd(); CMyD
2017-06-23 16:07:41 401
原创 防止C++程序重复运行的几种方法
今天给自己的程序加了防止重复运行的功能.用的是创建互斥量的方法,感觉还不错.下面的帖子转自http://bbs.cfan.com.cn/viewthread.php?tid=793295 有时候,为了某些要求,我们希望程序实例只运行一次。而在VB6中,我们可以很轻易的根据App.hPreInstance来判断程序是否已经运行。但是在C++中,这一切就变得不是那么容易。
2017-06-23 15:52:31 6031
原创 对MFC中CDocument::UpdateAllViews的理解
对MFC中CDocument::UpdateAllViews的理解:void CDocument::UpdateAllViews(CView* pSender, LPARAM lHint, CObject* pHint) // walk through all views{ ASSERT(pSender == NULL || !m_viewList.IsEmpty()); PO
2017-06-22 16:18:10 1584
原创 CDocument::SetModifiedFlag
CDocument类成员 CDocument::SetModifiedFlag void SetModifiedFlag(BOOL bModified = TRUE); 参数: bModified 文档是否被修改的标记。 说明: 在对文档作了修改之后调用该函数。连续调用以确保在关闭之前框架提示用户保存这些变化。通常使用bModified参数的
2017-06-22 16:15:53 1454
原创 UpdateWindow
只将窗口显示区域标记为无效以产生WM_PAINT消息,对于某些应用程序来说也许不是完全令人满意的选择。在呼叫InvalidateRect之后,Windows将WM_PAINT消息放入消息队列中,最后由窗口消息处理程序处理它。然而,Windows将WM_PAINT消息当成低优先级消息,如果系统有许多其它的动作正在发生,那么也许会让您等待一会儿工夫。这时,当对话框消失时,将会出现一些空白的「洞」,程序
2017-06-22 15:04:32 624
原创 怎样在vs2010里面实现两个编辑控件对应一个消息处理函数
本上介绍的实现方法是采用的vc6.0,自己试了一遍,在vc6.0下可以采用。但是在vs2010里面却不行,实际上按照wizard确实不行,但是我们可以直接更改代码,图形UI解决不了的问题,我们可以手动更改代码,其实很简单。新建一个对话框风格的mfc程序,名为Ctest,所以系统会自动生成:CCtestDlg类,对应的文件为:CtestDlg.cpp和CtestDlg.h比如
2017-06-22 14:37:48 707
原创 c++ GDI 中SelectObject使用方法和注意事项
CPen* SelectObject( CPen* pPen );CBrush* SelectObject( CBrush* pBrush );virtual CFont* SelectObject( CFont* pFont );CBitmap* SelectObject( CBitmap* pBitmap );int SelectObject( CRgn* pR
2017-06-21 18:33:47 3376 1
原创 C++ UpdateData()
UpdateData()参数只有一个,默认为TRUE。UpdateData(TRUE)——刷新控件的值到对应的变量。(外部输入值交给内部变量)即:控件的值—>变量。UpdateData(FALSE)—— 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)即:变量值—>控件显示。例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_userco
2017-06-21 18:30:36 1766
原创 _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
_itoa功能:把一整数转换为字符串用法:char * _itoa(int value, char *string, int radix); 详细解释: _itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为radix进制的数,
2017-06-21 18:24:26 548
原创 例程 【C++】MFC 创建对话框,实现对“学生课程成绩”的管理
运行环境:VC6.0具备知识:对MFC的控件有一定的了解,包括图像列表、列表控件等。实现功能:单击下图中的“学生课程成绩”按钮,弹出“学生课程成绩”对话框,单击“添加”按钮,学生课程成绩添加到列表控件。若选中列表项,“修改”按钮由原来的禁用变成可用,单击“修改”按钮,则弹出的“学生课程成绩”对话框中的“添加”按钮标题变成“修改”,单击“学生课程成绩”对话框中的“修改”按钮,该列表项
2017-06-21 18:23:27 3815 2
原创 vc中GetDlgItem用法
在MSDN中定义为:HWND GetDlgItem(HWND hDlg, // handle to dialog boxint nIDDlgItem // control identifier);其中HWND代表当前窗口的句柄,其实就是m_hWnd,int 代表你想要得到的控件句柄的名字比如我们有个编辑框为IDC_EDIT_TEST,则这里面的值就是ID
2017-06-21 18:21:09 3794
原创 string.Format字符串格式说明
先举几个简单的应用案例:1、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20)默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数string.Format("{0:C1}",23.15) 结果为:¥23.2 (截取会自动四舍五
2017-06-21 18:18:00 471
原创 C++字符串格式化 sprintf、printf
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, a
2017-06-21 18:16:27 368
原创 MFC的使用 在共享DLL中使用MFC 和在静态库中使用MFC的区别
使用VS2010,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义。 第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件。 第三种是将DLL
2017-06-20 18:00:57 534
原创 Visual Studio 代码生成 运行时库的选择
运行时库的选项有:多线程(/MT)、多线程调试(/MTD)、多线程DLL(/MD)、多线程调试(/MDd) 有时调用外部的一些库,这个选择不对,老编译不通过;c运行时库 库文件single thread(static link) ML libc.libd
2017-06-20 17:50:10 402
原创 VS2010 c++编写的程序在别人的机子运行不了,缺少mfc100.dll, xxx100d.dll等的解决方法
问题:VS2010 c++编写的程序在别人的机子运行不了,缺少mfc100u.dll xxx100d.dll等的解决方法 解决方法:1.将这些dll打包,和应用程序一起发布;2.采用MFC静态编译; 附1:VS2010中静态编译设置方法 使用VS2010编译的程序在windows xp中运行时 经常会出现找不到 相关的DLL文件,我们可以
2017-06-20 17:40:15 820
原创 vs2008设置lib和h文件路径
一、只对当前工程起作用的设置1. 设置头文件包含路径 工程上右击,选择“属性”,打开工作属性页 “配置属性”-->“常规”-->“附加包含目录”2. 设置lib文件包含路径 工程上右击,选择“属性”,打开工作属性页 A“配置属性”-->“连接器”-->“常规”-->“附加库目录”, 注意这只是添加了目录而已 B“配置属性”-->“连接器
2017-06-20 16:02:08 620
原创 vs2008下设置.h, .lib和 .dll 的路径配置全图及其意义
文件夹: 类型文件include: .h (头文件)lib: .lib (库)前面二者在vs2008中通过属性来配置。bin: .dll (动态链接库)动态链接库是通过系统路径来配置的。 添加库(libs)文件目录 方法 1:项目->属性->配置属性->连接器->常规->附加库目录” 方法 2:[菜单]“工具->选项
2017-06-20 15:59:21 457
原创 VS2010 如何添加H文件目录和LIB目录
VS2010,编写DLL文件,编译完自己的DLL文件后,要在其它项目中使用,开始遇到很多错,但是在网上搜索了好久后,终于解决了问题。H文件目录:依次点击“项目——XX 属性——C/C++——常规”,在“附加包含目录”中加入H文件所在的文件夹 LIB目录: 依次点击“项目——XX 属性——链接器——常规”,在“附加库目录”中加入LIB所在目录 还没完,在“链接器”
2017-06-20 15:57:16 724
原创 VS2010下生成dll的方法
1.首先创建生成dll的项目:打开VS2010,两种途经建立dll项目,基于MFC DLL的和基于Win32控制台应用程序的,这里选择基于Win32控制台建立。 a.文件--新建--项目(项目命名为myAPI)--Visual C++ --Win32--选择Win32控制台应用程序; b.接下来下一步一直到如下图,程序类型选择DLL,如无特殊需要选择空项目完成,项目建立完毕;
2017-06-20 15:51:39 312
原创 lib 和 dll 的区别、生成以及使用详解
首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直接包含在最终生成的 EXE 文件中了。在vs中新建生成静态库的工程,编译生成成功后,只产
2017-06-20 15:34:03 191
原创 C++生成和使用dll和lib
dll和lib:动态链接库(dll)是一个可以被其他应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。和可执行文件(exe)非常类似,区别在于dll中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。静态链接库(lib) 包含函数代码本身,在编译时直接将代码加入程序当中。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪
2017-06-20 15:31:12 5694
原创 VC DLL文件无法生成LIB 解决方案
VC中WIN32项目,DLL时:1,在建项目时,不选择空项目,而选择导出符号(勾选),会自动导出,生成lib文件;2,当选择空白项目时,需要在工程中添加模块定义文件:LIBRARY EXPORT func11、在所建工程上单击鼠标右键,在弹出的右键菜单中选择“添加-->新建项....---->模块定义文件”,在该模块定义文件中写导出函数表
2017-06-20 15:28:20 1228
原创 如何在项目中引入.h、.lib和dll、以及.cpp
一、如何在项目中引入.h、.lib和dll、以及.cpp 一直搞不清楚.h、.lib和dll在工程里怎么引入,稀里糊涂的。这次使用sqlite做个试验。 目录如下: .. include lib dll 工程\注意:工程是最原是的MFC标准项目,没有对环境变量做任何修改:
2017-06-19 19:16:06 1266
原创 如何在编译器(vs2010)里设置调用别人写好的lib和dll
这是网上找的,但是实际使用时,我只添加了红色矩形标注出来的3项就可以用*********************************************************************************补充1***********************************************************************
2017-06-19 19:14:23 348
原创 lib和dll的区别,生成
首先介绍下静态库(静态链接库,.lib文件),动态库*(动态链接库,.dll文件)的概念,首先两者都是代码共享的方式.静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝.即静态库中的指令都全部被直接包含在最终生成的EXE文件中了. 在VS
2017-06-19 19:12:57 250
原创 VC6如何使用VS2005中的CImage类功能2
由于VC6启动速度快,产生的执行代码小,还有可爱的类向导,所以许多C++程序员还工作在VC6环境中。但是我们想在VC6中用VS2005中的新功能怎么办呢?例如CImage类(有很强的图像处理功能).当然我们无法直接使用CImage了,经过我的思考和实践,以下方法是可行的:用VS2005生成一个CImage2005动态库,然后用VC6调用就可以了。DLL主要代码如下:Image200
2017-06-19 18:31:43 448
原创 VC6如何使用VS2005中的CImage类功能
VC6如何使用VS2005中的CImage类功能 由于VC6启动速度快,产生的执行代码小,还有可爱的类向导,所以许多C++程序员还工作在VC6环境中。 但是我们想在VC6中用VS2005中的新功能怎么办呢?例如CImage类(有很强的图像处理功能).当然我们无法直接使用CImage了,经过我的思考和实践,以下方法是可行的: 用VS2005生成一个CIma
2017-06-19 18:30:49 877
原创 C++中_T()与L的区别
字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。以下是别人的总结:
2017-06-19 14:05:57 591
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人