
VC/MFC编程
文章平均质量分 55
allovexuwenqiang
这个作者很懒,什么都没留下…
展开
-
VC Dll之一 (转载)
在我们实际用软件时,经常可看到许多动态连接库。动态连接库有其自身的优点如节省内存、支持多语种等功能,而且,当DLL中的函数改变后,只要不是参数的改变调用起的函数并不需要重新编译。这在编程时十分有用。至于其他妙处,各位在电脑杂志、书籍中都能看到,我这里再说就是废话了.这次小弟我所要讲的是如何在VC5.0中如何做自己的Win32 DLLs,各位要做自己的动态连接库,首先要知道DLL在VC5.0中都有哪转载 2009-04-01 09:18:00 · 643 阅读 · 0 评论 -
自定义消息传递(从对话框到视图)
问题:系统通过菜单项弹出一个对话框,需要视图响应该对话框的消息并更新视图。不可能在视图类中直接建立对话框控件的消息响应函数,因此需要自定义消息传递。由对话框发出消息,视图类接收,并作出重绘动作更新视图。 解决方法: 1)在应用程序类的头文件中,C***App类声明的前面定义消息宏:#pragma once#include "resource.h" #defin原创 2009-08-25 11:31:00 · 1846 阅读 · 1 评论 -
#pragma once与 #ifndef的区别
#pragma once与 #ifndef的区别 (转自http://www.cppblog.com/szhoftuncun/archive/2007/10/28/35356.html )为了避免同一个文件被include多次1 #ifndef方式2 #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一:转载 2009-08-27 21:12:00 · 617 阅读 · 0 评论 -
char *、CString和string之间的类型转换
1、string 转 CString CString.format("%s", string.c_str()); 方法二: char* pchar= string.c_str(); CString scstr(pchar);2、char * 转 CString CString.format(转载 2009-08-30 11:19:00 · 791 阅读 · 0 评论 -
Unicode下 TCHAR* 和CString转string的一种方法
1)TCHAR* 转string TCHAR exePathAndName[MAX_PATH]; GetModuleFileName(NULL, exePathAndName, MAX_PATH); (_tcsrchr(exePathAndName,//))[1]=0; USES_CONVERSION; string filepath = T2A原创 2009-09-06 20:45:00 · 4434 阅读 · 0 评论 -
VS2005中一种获取项目可执行文件路径的方法
首先声明存储路径的字符数组,建议使用TCHAR类型,便于不同字符集类型的兼容。然后调用全局函数GetModuleFileName(),获取得到的是包含可执行文件名的路径,可以根据需要对字符串进行操作及类型转换。 TCHAR exePathAndName[MAX_PATH]; GetModuleFileName(NULL, exePathAndName, MAX_PATH);原创 2009-07-07 10:19:00 · 2305 阅读 · 0 评论 -
CString,String,Char*的比较
CString,string,char*的综合比较(宗成庆博士)(2009-04-04 21:50:05)(一)概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,转载 2009-07-07 15:17:00 · 1025 阅读 · 0 评论 -
c++中全局变量的声明与使用
1.extern的作用 extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b); 则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的, C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的,这要看编译器的"脾气"了(不同原创 2009-07-07 10:44:00 · 15160 阅读 · 2 评论 -
函数声明尾加const的作用
void name () const; 函数声明尾加const说明这个函数不可以修改类的成员变量(或者说不可以改变对象的内部状态)。因此,加了const的函数: (1)不能修改成员变量; (2)不能调用非const函数; (3)其他const函数可以调用它;(其他非const函数当然也可以调用它) (4)只能从const对象(或引用用转载 2009-07-09 15:54:00 · 4362 阅读 · 1 评论 -
string类的方法
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类的字符操作:转载 2009-09-08 18:38:00 · 3133 阅读 · 0 评论 -
关于虚拟函数的一些总结 (参考:深入浅出MFC 第二版 候俊杰)
关于虚拟函数实现多态的总结: 1)如果希望在派生类别中重新定义父类的某个函数,则在父类中必须将此函数设为虚拟函数; 2)抽象类别的虚拟函数一般不被调用,所以也不必被定义,将其设为纯虚函数; 3)在不使用虚拟函数的情况下,若用父类的指针指向某个派生类的对象,则使用该指针调用某个函数时,会调用指父类的函数;而使用虚拟函数,则会调用父类指针指向的派生类别的函数。因此,虚拟函数可以原创 2009-06-22 09:35:00 · 1601 阅读 · 0 评论 -
关于Ontimer()函数
关于OnTimer() OnTimer()函数是响应用SetTimer()函数设定的时钟发送的时钟消息的,你没设定时钟,就不会有时钟消息,OnTimer()里的语句当然也不会被调用。 为类添加VM_TIMER消息响应,会看到类中多了个OnTimer(UINT nIDEvent)。 然后用SetTimer(1,10,NULL)就行了。第一个参数是ID,第二个是间隔时间转载 2009-06-19 21:37:00 · 14723 阅读 · 2 评论 -
学习 C++的五十条忠告 来自http://blog.youkuaiyun.com/redhat7890/archive/2008/12/23/3589701.aspx
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开转载 2009-04-03 10:59:00 · 1166 阅读 · 0 评论 -
CCommandLineInfo
转自:http://blog.sina.com.cn/s/blog_4c9c4e2b0100aeol.htmlCCommandLineInfovar $tag=杂谈;var $tag_code=a987c6475b45f7c7a9b8d9ebfeff1323;标签:杂谈 在文档窗口创建的时候 ,它缺省总是会转载 2009-04-03 17:37:00 · 688 阅读 · 0 评论 -
获取视图类指针的方法
CMainFrame* pMainFrame = (CMainFrame*)::AfxGetMainWnd();CTestView* PTestView = (CTestView*)pMainFrame->GetActiveFrame()->GetActiveView();原创 2009-07-13 21:09:00 · 798 阅读 · 0 评论 -
ofstream的使用方法
1ofstream的使用方法 ofstream的使用方法 ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默转载 2009-07-16 15:33:00 · 1511 阅读 · 0 评论 -
Invalidate()与UpdateAllviews()的区别
Invalidate()与UpdateAllViews转自:http://hi.baidu.com/ncudlz/blog/item/6ccbc43d90836305baa16715.htmlInvalidate()是让程序重画窗口。 UpdateAllViews()是在DOC/VIEW结构中,当一个视图的数据改变后,通知所有视图作相应的改变,和重画毫无关系转载 2009-07-18 19:56:00 · 1448 阅读 · 0 评论 -
onDraw和onPaint函数的区别
onDraw和onPaint函数的区别 转自:http://hi.baidu.com/ncudlz/blog/item/6ccbc43d90836305baa16715.html CWnd::OnPaint() 是CWnd类的成员函数,是WM_PAINT 消息的响应函数.当你调用CWnd::UpdateWindow(),CWnd::RedrawWindow()时, 或者窗口被其转载 2009-07-18 19:59:00 · 1385 阅读 · 0 评论 -
VC获取系统时间、程序运行时间
VC获取系统时间、程序运行时间2009-07-26 01:01VC获取系统时间、程序运行时间1.使用CTime类CString str;//获取系统时间CTime tm;tm=CTime::GetCurrentTime();str=tm.Format("现在时间是%Y年%m月%d日 %X");MessageBox(str,NULL,MB_OK);2: 得到系统时转载 2009-08-01 09:30:00 · 761 阅读 · 0 评论 -
使用异或运算实现菜单项功能的启用与关闭
在MFC程序设计中,经常有这样的问题:点击一个菜单项启动某项功能,再点击一次取消该功能,再点击又启动该功能,再点击又取消该功能.......。尤其是有多个菜单项功能的时候,如何有效组织各个菜单项各自的状态,保证互不干扰,且实现简练。 本文以一个三维绘图程序为例,介绍使用异或状态运算实现菜单项功能的启用与关闭。假设在三维场景中有5种场景要素:天空、地面、房屋、道路、树木。程序要求实现这样的功原创 2009-08-23 09:32:00 · 885 阅读 · 0 评论 -
#ifndef的作用
#ifndef #ifndef x #define x ... #endif 这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等 #ifndef x //先测试x是否被定义过 #define x //如果没有定义下面就定义x并执行下面的语句 ... #endif //如果已经定义了则执行#e转载 2009-07-09 15:09:00 · 1287 阅读 · 0 评论