![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
转载---MFC
文章平均质量分 88
清水迎朝阳
多年windows下c++客户端开发,或多或少踩了很多坑,积累了一些经验
展开
-
在对话框中加入属性页
当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置。本文针对这种方法来讨论几种可能实现的方案。方案一 本方案的例子请见源代码打包文件中的Property1部分在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个)。然后利用Class Wizard来为Tab Control控件创建一个控转载 2013-01-25 17:26:50 · 945 阅读 · 0 评论 -
MFC Combo Box(组合框)控件的用法
一、如何添加/删除Combo Box内容 1,在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。 2,在程序初始化时动态添加 如: //控件内容初始化 CString strTemp; ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetCont转载 2010-09-04 18:30:00 · 2372 阅读 · 0 评论 -
设置控件随窗口大小而改变
第一步:在类中加入成员函数和成员变量 public:void SetControlInfo(WORD CtrlId);protected:int m_old_cx,m_old_cy;CDWordArray m_control_info; 第二步 在类的构造函数中初始化变量CgdiDlg::CgdiDlg(CWnd* pParent /*转载 2011-07-21 14:39:46 · 1447 阅读 · 3 评论 -
MFC中Doc,View,MainFrmae,App各指针的互相获取
1) 在View中获得Doc指针 2) 在App中获得MainFrame指针 3) 在View中获得MainFrame指针 4) 获得View(已建立)指针 5) 获得当前文档指针 6) 获得状态栏与工具栏指针 7) 获得状态栏与工具栏变量 8) 在Mainframe获得菜单指针转载 2011-09-02 17:44:33 · 5245 阅读 · 0 评论 -
VC获得桌面工作区与任务栏大小(宽度与高度)
获得桌面工作区大小,即不包括任务栏的大小,制作窗口全屏时经常用到,方法如下: RECT rt; SystemParametersInfo(SPI_GETWORKAREA,0,(PVOID)&rt,0); 获得任务栏高度与宽度方法有二:1.判断位置 RECT rt; SystemParametersInfo(SPI_GETW转载 2011-09-16 15:49:05 · 19390 阅读 · 0 评论 -
解说Win32的窗口子类化
也许你需要一个特殊的Edit来限制浮点数的输入,但是现有的Edit却并不能完成这项工作——因为它只能够单纯的限制大小写或者纯数字。当你在论坛上求救的时候,某个网友告诉你:“用子类化。”你也许会在看到一线曙光的同时多出了一连串的问题:何为子类化?子类化的原理是什么?如何实现子类化?下面就让我从一个简单的C++程序开始,一步步解开你的疑团吧。 首先,我为你列出以下这个C++程序: #inc转载 2011-10-10 16:54:36 · 923 阅读 · 0 评论 -
如何编译MFC程序
今天看了一下MFC,但是在VS2008下面怎么都不能编译书中给出的例子。书中的例子如下,是一个很原始和基本的MFC程序。 Hello.hclass CMyApp : public CWinApp{public: virtual BOOL InitInstance ();};class CMainWindow : public转载 2010-08-12 22:02:00 · 3252 阅读 · 0 评论 -
vs 常用 快捷键大全
vc快捷键大全F1: 帮助Ctrl+O :OpenCtrl+P :PrintCtrl+N :NewCtrl+Shift+F2 :清除所有书签F2 :上一个书签Shift+F2 :上一个书签Alt+F2 :编辑书签Ctrl+F2 :添加/删除一个书签F12 :Goto definitionShift+F12原创 2009-10-29 17:46:00 · 1222 阅读 · 0 评论 -
获取程序运行时间
1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年%m月%d日 %X"); MessageBox(str,NULL,MB_OK);2: 得到系统时间日期(使用GetLocalTime) SYSTEMTIME st转载 2010-08-13 15:34:00 · 1376 阅读 · 0 评论 -
FLASH播放器控件相关属性和方法说明.
==================================FLASH播放器控件相关属性和方法说明. ==================================++++++++++++++++++++++++++++++++++属性++++++++++++++++++++++++++++++++++语法:AlignMode As Long 说明:对齐方转载 2010-09-06 22:50:00 · 953 阅读 · 0 评论 -
VC中为SDI添加背景图片总结
方案一,使用画刷改变视图单调的背景 1 我们为CTestView类添加一个变量 CBrush m_brushBackground;这个画刷就是用于画背景的。2 我们在CTestView的构造函数中加入如下代码: //方案一.(1),直接用资源id CBitmap bmp;bmp.LoadBitmap(IDB_SPLASH); ///加载位图m_brushB转载 2011-07-26 17:30:04 · 3014 阅读 · 1 评论 -
MFC中屏蔽ESC和回车关闭对话框
解决方法是在 CDialog::PreTranslateMessage() 的重载函数中将ESC和回车按键的消息处理掉. 直接上代码: CResultCollectorDlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN) { switch(pMsg->wPara转载 2010-07-23 00:06:00 · 10259 阅读 · 0 评论 -
DoDataExchange(CDataExchange *pDX)
在对话框中有这么一个函数 其作用是与对应的变量交换对话框数据 MSDN 解释为: Called by the framework to exchange and validate dialog data. virtual void DoDataExchange( CDataExchange* pDX );转载 2009-10-12 14:57:00 · 7734 阅读 · 2 评论 -
VC中#ifdef与#pragma once避免重复包含的区别
在用VC6.0向导生成的头文件中,经常可以看见如下的代码段: #if !defined(AFX_RESIZABLELAYOUT_H__INCLUDED_) #define AFX_RESIZABLELAYOUT_H__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MS转载 2010-08-12 22:04:00 · 749 阅读 · 0 评论 -
C++哈希函数应用实例
#include "stdafx.h" #include #include #include using std::vector; using stdext::hash_map;typedef unsigned int UINT;class hash_wchar_t { public: // 以下两个变量我也不是很明白究竟是干嘛的转载 2012-11-07 15:17:02 · 6060 阅读 · 0 评论 -
C++ STL中哈希表 hash_map介绍
C++ STL中哈希表 hash_map介绍0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并转载 2012-11-07 15:13:31 · 1132 阅读 · 0 评论 -
VC/MFC中计算程序运行时间
方法一 利用GetTickCount函数(ms)CString str; long t1=GetTickCount();//程序段开始前取得系统运行时间(ms) 。。。。。。//to do sthlong t2=GetTickCount();//程序段结束后取得系统运行时间(ms) str.Format("time:%dms转载 2012-10-12 14:15:44 · 8055 阅读 · 0 评论 -
虚拟键码对照表
虚拟键码 对应值 对应键VK_LBUTTON1鼠标左键VK_RBUTTON2鼠标右键VK_CANCEL3CancelVK_MBUTTON4鼠标中键VK_XBUTTON15 VK_XBUTTON26 VK_BACK8BackspaceVK_T转载 2012-08-16 10:41:09 · 1251 阅读 · 0 评论 -
特殊符号大全
特殊符号 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ¢ £转载 2012-06-29 10:33:58 · 105115 阅读 · 0 评论 -
Shell
参考资料一: 在Windows中我们经常需要遍历一个文件夹或者遍历一个磁盘。本文介绍如何使用标准的Shell接口进行遍历。在介绍过程中会逐步的实现一个类似FileZilla的TreeView+ListView的界面。我最近为psftp做界面的时候简单了解了一下这方面的问题。基础知识Windows中的目录可以理解为是一个树型结构,树的根是“桌面”,“桌面”中一般拥有“我的电脑”、“网转载 2012-06-04 15:29:10 · 1591 阅读 · 1 评论 -
由AFX_IDW_PANE_FIRST宏的含义分析界面库XTP的一个bug
Codejock的界面库Xtreme Toolkit Pro(XTP)是当前MFC开发中发展得比较成熟,应用也颇为广泛的几个界面库之一,其强大的界面美化功能以及简便的使用步骤深受不少MFC程序员的青睐。应用XTP进行MFC程序的开发能够在极大地减少开发周期的前提下,编写出专业化的windows程序界面。笔者在实际使用XTP的过程中,发现了一个隐藏得比较深的、一般的应用不会遇到的bug。概括地说转载 2012-05-15 10:05:57 · 1314 阅读 · 0 评论 -
回车换行符
回车换行符 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另转载 2012-05-14 17:16:23 · 1297 阅读 · 0 评论 -
CList成员的使用
使用时 要#include ConstructionCListConstructs an empty ordered list.建立一个链表example:CList myList;//建立一个int链表CList myList(16);//建立一个cstring的链表,后面的16表示链表里面数据的个数,如果不写的话,可能是不限个数?CLi转载 2011-12-07 12:59:02 · 16087 阅读 · 1 评论 -
用extern定义全局变量
1.extern的作用 extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b); 则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的, C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的,这要看编译器的"脾气"了(不转载 2011-11-01 11:25:17 · 27617 阅读 · 3 评论 -
在MFC中获取窗口句柄
要找到某个CWnd对象的HWND,用GetSafeHwnd()。 在窗口类中,有句柄的成员变量,可以直接访问: m_hWnd 在窗口类外,可以用AfxGetMainWnd()->m_hWnd获得。 在MainFrame里直接用this; 其它地方用 CMainFrame* pMainFrame = (CMa转载 2010-08-12 21:49:00 · 687 阅读 · 0 评论 -
编译器处理相关
一.预处理器-编译器-汇编器-链接器预处理器会处理相关的预处理指令,一般是以”#”开头的指令。如:#include “xx.h” #define等。编译器把对应的*.cpp翻译成*.s文件(汇编语言)。汇编器则处理*.s生成对应的*.o文件(obj目标文件)最后链接器把所有的*.o文件链接成一个可执行文件(?.exe)1.部件:首先要知道部件(可以暂且狭义地理解为一个类转载 2010-08-12 21:56:00 · 534 阅读 · 0 评论 -
在VC/MFC中响应键盘按键
首先,简介一下键盘消息:(1)系统消息:(系统键Alt,F10等),由系统内部处理WM_SYSKEYDOWNWM_SYSKEYUPWM_SYSCHAR(2)非系统消息:WM_KEYDOWNWM_KEYUPWM_CHAR二、添加消息(一般WM_KEYDOWN),在消息响应函数OnKeyDown(UINT nChar, U转载 2010-08-12 21:59:00 · 1583 阅读 · 0 评论 -
VC之控件篇
1 使用Windows标准控件1.1 常见控件列表Windows标准控件即普通控件,撰写此文时,笔者每天面对的Word就带了一脸的控件,当然你肯定也熟悉:字体选择下拉框、工具栏、滚动条、状态栏,如此等等。常见的Windows标准控件在VC里就有:图2 控件集窗口通常这个控件集窗口在你的对话框设计界面的附近总能找到,如果找不到,在VC工具栏的任何空白处点击右键,在弹出菜单的C转载 2010-09-06 22:24:00 · 2157 阅读 · 0 评论 -
VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)ActiveX 控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留转载 2010-09-06 22:43:00 · 2558 阅读 · 0 评论 -
ShockwaveFlash控件详解
ShockwaveFlash控件详解2009-08-03 09:29======================================== 白金分割线 0.618 ========================================一、属性方面AlignMode (读写) 语法:AlignMode As Long 说明:对齐方式转载 2010-09-06 22:53:00 · 1299 阅读 · 0 评论 -
MFC中获得各个类的指针/句柄 ID的总结
MFC中获得各个类的指针/句柄 ID的总结一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,无论是多文档还是单文档,都存在指针获取和操作问题。下面这节内容主要是一般的框架,然后再讲多线程中的指针使用。使用到的类需要包含响应的头文件。首先一般获得本类(视,文档,对话框都支持)实例指针 this,用this的目的,主要可以通过类中的函数向其他类或者转载 2011-01-22 22:43:00 · 950 阅读 · 0 评论 -
SetWindowPos 详解
函数名: SetWindowPos 头文件: winuser.h 函数原型: BOOL SetWindowPos ( HWND hWnd, //窗口句柄 HWND hWndInsertAfter, //排列顺序的句柄 int X, //水平坐标 int Y, //垂直坐标 int cx, //宽 int cy, //高转载 2011-01-22 22:46:00 · 1260 阅读 · 0 评论 -
组合框控件CComboBox
内容:CComboBox控件提供了Windows组合框的基本功能。组合框由一个列表框和一个静态文本控件或编辑控件组成。当用户在列表框中选中一个项目时,该项目将显示在静态文本或编辑框中。CComboBox控件的主要方法、消息如下。(1)GetTopIndex方法该方法返回列表框中第一个可见项目的索引。语法:int GetTopIndex( ) const;(2)Set转载 2011-01-22 22:48:00 · 2350 阅读 · 0 评论 -
VS2005 制作安装程序
1.首先得有一需打包的项目,这里我就用以前的学习之笔:2.0 接下来就要新增 安装工程(专案) :2.1 专案生成后,界面如下:2.2 接下来当然是要添加需打包的项目了: 说明: 1.专案输出: 打包最核心内容, exe执行文件和配置文件之类... &nb sp; 2.档案: 一些辅助文件,说明书什么的,和程序运行没必转载 2011-01-28 21:19:00 · 2842 阅读 · 0 评论 -
vc++6.0中文档、视图与框架的互相调用
vc++6.0中的文档、视图、框架与应用程序类之间只有部分可以直接调用,其他都是通过间接调用实现的。下边用一个MFC直接生成的单文档程序My为例。四个类分别问CMyApp、CMyDoc、CMainFrame、CMyView。 一、AfxGetApp()与AfxGetMainWnd() theApp是程序的起点,在程序的任何地方都可以通过AfxGetApp()函数获得转载 2011-07-26 17:02:29 · 1551 阅读 · 0 评论 -
exit()和return语句的区别
(一)exit用于结束正在运行的程序,exit函数将参数是返回给OS。而return是返回函数值并退出函数。(二)return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。(三)在main函数(其代表一个进程)结束时会隐式地调用exit函数。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程。所以一般程序执行到 main转载 2011-08-17 15:03:23 · 977 阅读 · 0 评论 -
VC 获取系统特殊文件夹的路径如:系统目录,桌面等
如果需要,请在StdAfx.h中添加 #include TCHAR MyDir[_MAX_PATH]; SHGetSpecialFolderPath(this->GetSafeHwnd(),MyDir,CSIDL_APPDATA,0);AfxMessageBox(MyDir); 其中第三个参数CSIDL_APPDATA可以为以下的值: CSIDL转载 2011-08-31 16:47:02 · 7646 阅读 · 0 评论 -
提示对话框(MessageBox)
提示对话框(MessageBox)在视类和对话框类中可使用MFC函数中用的MessageBox()函数弹出提示对话框。这个函数原型为:int MessageBox(LPCTSTR lpszText,LPCTSTR lpsCaption=NULL,UINT nType=MB_OK);参数:lpszText 显示的字符串lpsCaption 对话框的标题nType 风格,可转载 2010-09-06 22:10:00 · 5164 阅读 · 0 评论 -
对话框控件背景、字体颜色设置
1、控件背景颜色每个控件和对话框本身在宣示之前会向其父对话框发送WM_CTLCOLOR消息。如果你在派生类对话框对WM_CTLCOLOR消息进行映射,就可以设定控件的颜色,以及某些控件的背景颜色和字体的颜色。HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ if((nCtlColor转载 2010-09-03 12:32:00 · 1475 阅读 · 0 评论 -
GetCurrentDirectory()和GetModuleFileName()函数的区别
GetCurrentDirectory只是返回当前进程的当前目录,而并不是进程的镜像文件(.exe)所在的目录 GetCurrentDirectory()适用于XP等系统,在WinCE上不能使用 GetModuleFileName()适用于WinCE2.0以后 GetCurrentDirectory只是获取当前的目录,当计算机重新启动后,当前的路径一般为系转载 2010-09-02 23:21:00 · 1779 阅读 · 1 评论