随笔分类 - VC/MFC
VC/MFC编程实践
摘要:上代码: 1 #include "stdafx.h" 2 #include 3 #include 4 5 #pragma comment(lib, "ws2_32.lib") 6 #pragma comment(lib, "urlmon.lib") 7 8 #define MAX_SIZE 1024 9 10 11 int GetLocalIP(); 12 int GetInternetIP(); 13 14 int main(int argc, char* argv[]) 15 { 16 GetLocalIP(); 17 GetIn
阅读全文
摘要:我们平时常见的三种中文内码是:GB2312(简体中文)、GBK、BIG5(繁体中文)。网上有很多中文内码的专用转换工具。我们碰到由于内码不 一致而导致的乱麻问题,用这些工具可以进行相互转换。但论坛里经常有人问如何在自己的程序中集成这些功能呢?本文将介绍如何利用 Windows 提供的API 函数来实现。转换涉及到的 API 函数主要有两个:MultiByteToWideChar 和 WideCharToMultiByte。有关这两个函数的详细文档请参考 MSDN,本文不再赘述。 本文将介绍四个转换函数分别实现如下的转换: * Big5 => GBK * GBK => Big5 *
阅读全文
摘要:转自:http://www.zeroplace.cn/article.asp?id=705使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序);二是可以用来显示软件名称和版权等提示信息。怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应用程序,第四种适用于基于对话框的应用程序。 1.利用组件库中的Splash Screen组件实现 (1)用Photoshop等制作启动画面图像,保存为bmp格式。 (2)用Appwizard建一个基于单文档的工程Splash。 (3)在资源中插入位图资源 打开VC++的资源编辑器,用鼠标右键单击Resou..
阅读全文
摘要:我们在编写程序的过程中,有很多要用到出始化,但有很多都写进了注册表,而我们在想修改或者查看的时候必须到注册表里去修改,而不是直接到一个程序目录下的ini文件里查看或者修改,怎么使可以直接生成的ini文件能写进Debug 呢?而不写进注册表.下面的程序可以帮助我们实现这个目的!!!! 在应用程序类下的 * App::InitInstance()函数里加入下面的程序语句;charczProgName[MAX_PATH];CString czN;intiNiValue=0;iNiValue= GetModuleFileName(0,czProgName,MAX_PATH);if(iNiValue&l
阅读全文
摘要:转自:http://blog.csdn.net/liquanhai/article/details/7074825 MFC的源代码可以说是微软共享给广大程序员的一笔很宝贵的财富,尤其是调试的时候会调试进去,让我们看到“有代码有真相”。无幻兄弟已经总结过两种方法查看MFC源代码。笔者再在此基础上锦上添花。 一:快速实现类浏览的方法 首先介绍一个快速实现类浏览的方法,使用它不仅可以浏览MFC中的各个类而且可以查看类的各种成员及其源文件.同时,实现起来又非常简单,各位VC的爱好者不妨一试.首先,在VC中新建一个空的"Win32 Application"工程,然后,把MFC的源文件
阅读全文
摘要:获得指定点的窗口使用WindowFromPoint函数 函数功能:该函数获得包含指定点的窗口的句柄。 函数原型:HWND WindowFromPoint(POINT Point); 参数: Point:指定一个被检测的点的POINT结构。 返回值S:返回值为包含该点的窗口的句柄。如果包含指定点的窗口不存在,返回值为NULL。如果该点在静态文本控件之上,返回值是在该静态文本控件的下面的窗口的句柄。 备注:WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内。应用程序应该使用ChildWindowFromPoint函数进行无限制查询,这样就可以获得静...
阅读全文
摘要:主窗口指针保存在CWinThread::m_pMainWnd中,可以先调用AfxGetApp函数获得应用程序的指针,然后通过应用程序的指针获得其主窗口的指针。 //获得应用程序指针 CMy1_2App* pApp = (CMy1_2App*)AfxGetApp(); //获得主窗口指针 CWnd* pMainWnd = pApp->m_pMainWnd; CString strText = _T(""); strText.Format("pMainWnd = 0x%x\nthis = 0x%x\n", pMainWnd, this); AfxMes
阅读全文
摘要://获得当前窗口的句柄 HWND hWnd = GetSafeHwnd(); //通过HWND获得CWnd指针 CWnd *pWnd = CWnd::FromHandle(hWnd); CString strText = _T(""); strText.Format("pWnd = 0x%X\nthis = 0x%X\n", pWnd, this); AfxMessageBox(strText);1、GetSafeHwnd方法:该函数获得窗口对象的窗口句柄。Returns the window handle for a window. Returns N
阅读全文
摘要:看下吧,人民邮电出的。电子书可以在电驴上下,扫描版,PDF格式,比较清晰。随书源码:(115盘)http://115.com/file/dnmj0hzm#从51cto上下的,花了2个豆
阅读全文
摘要:VC6.0一般是用c++语言的MFC,是VisualStudio6一部分。VC.NET(是VC2003,VC2005,VC2008通称,就可可以用c++语言的.net),是Visual Studio.NET一部分。一、前言VS包含了VC.VB,VJ,VC#,是一个大集成的开发平台。VC++是Visual C++的简称,是Visual Studio编程套件的一个部分,支持语言C/C++的编译。VC和VS对应版本关系:VC6.0—————— VISUAL STUDIO 6.0VC7.0—————— VISUAL STUDIO 2002VC7.1—————— VISUAL STUDIO 2003VC
阅读全文
摘要:int EnumFontFamiliesEx( HDC hdc, // handle to DC LPLOGFONT lpLogfont, // font information FONTENUMPROC lpEnumFontFamExProc, // callback function LPARAM lParam, // additional data DWORD dwFlags // not used; must be 0);C...
阅读全文
摘要:VC++ 6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。 1. 安装完成后:需要把VC98\MFC\LIB下的MFC42U*.*手动拷贝到对应的安装目录下 2. 为工程添加UNICODE和_UNICODE预处理选项:打开[工程]->[设置…]对话框,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,加上_UNICODE,UNICODE。(注意中间用逗号隔开).在没有定义UNICODE和_UNICODE前,所有函数和类型都默认使用ANSI的版本;在定义了UNICODE和_UNICO...
阅读全文
摘要:一、基本的调试设置 1、CTRL+F10:运行到当前光标处2、设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。为了增加调试信息,可以按照下述步骤进行:l 打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开)l 选择C/C++页,Category中选择gene
阅读全文
摘要:1、 如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、 如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Program Database。在Link标签中选中Generate debug info复选框。注:只是一个介乎Debug合Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状
阅读全文
摘要:一、MFC、句柄、控件及结构的命名规范Windows类型 样本变量; MFC类 样本变量;HWND hWnd; CWnd* pWnd; HDLG hDlg; CDialog* pDlg; HDC hDC; CDC* pDC; HGDIOBJ hGdiObj; CGdiObject* pGdiObj; HPEN hPen; CPen* pPen; HBRUSH hBrush; CBrush* pBrush; HFONT hFont; CFont* pFont; HBITMAP hBitmap; CBitmap* pBitma...
阅读全文
摘要:(一)充分利用MSDN,因为我个人觉得它胜过任何一本编程参考书; MSDN是Microsoft当前提供的有关编程信息的最全面的资源,它包含微软最新的技术数据库,加上易学易用的全文检索功能,让您迅速找到任何您需要的技术参考数据,让您随时拥有与全世界菁英同步的技术,掌握最丰富的程序开发资源。我经常收到很多朋友的EMAILS,他们所提的问题往往都非常的简单,MSDN完全可以解答这些问题,但他们好象不太喜欢用,这是让我郁闷的地方,是因为英文不好呢,还是没有学会充分利用各种资源来解决问题的方法呢? (二)提高英文水平,养成多上英文网站多看英文资料多买老外原版英文书; 有关程序员与英文水平的讨论已太...
阅读全文
摘要:一、使用MFC的CFile类。二、使用MFC的CFile派生类CStdioFile CFile的派生类CStdioFile提供了对文件进行流式的操作功能。其中函数void CStdioFile::WriteString( LPCTSTR lpsz )写入一个字符串,需要给字符串lpsz的末尾加上换行标志”\r\n”;函数bool CStdioFile::ReadString(CString &rString )从文件中读取一行,如果文件未读完返回true,否则返回false。 比如:写入文件的例子 View Code 1 //创建文件 2 3 4 CStdioFile file; ..
阅读全文
摘要:在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINAPI函数原型为: BOOL WritePrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName ); 其中各参数的意义: LPCTSTR lpAppName 是INI文件中的一个字段名. LPCTSTR lpKeyNa...
阅读全文
摘要:各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。 1.文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。View Code 1 CString strFileTitle;2 CFile...
阅读全文
摘要:在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟悉,以下提供一些文件操作 API 函数介绍: 一般文件操作 API CreateFile 打开文件 要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。 ReadFile 从文件中读取字节信息。 在打开文件获得了文件句柄之后,则可以通过该函数读取数据。 WriteFile 向文件写入字节信息。 同样可以将文件句柄传给该函数,从而实现对文件数据的写入。 CloseHandle 关闭文件句柄。 打开门之后,自然要记得关上。 G...
阅读全文