• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > MFC程序设计常用技巧汇总

MFC程序设计常用技巧汇总

作者:惟愿莲心不染尘 字体:[增加 减小] 来源:互联网 时间:2017-05-28

惟愿莲心不染尘 通过本文主要向大家介绍了mfc挂卖易物点技巧,mfc理财技巧,mfc调试技巧,mfc技巧,mfc平台操作汇总等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例总结了MFC程序设计常用技巧。分享给大家供大家参考。具体如下:

1.属性页的添加:

创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch;最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码:
//使选项卡的按钮在下面
if(m_tabsheet.m_hWnd)
m_tabsheet.ShowWindow(SW_MAXIMIZE);//显示选项卡
//加入标签,标签名由各个子对话框的标题栏决定
m_tabsheet.AddPage(&m_skatch);
//用Create来创建一个属性页
m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE, WS_EX_CONTROLPARENT);
RECT rect;
m_tabsheet.GetWindowRect(&rect);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
//调整属性页的大小和位置
m_tabsheet.SetWindowPos(NULL, 225, 225, width-82, height,SWP_NOACTIVATE);</div>
属性页的添加完成。如果要添加多个属性页,则只需要增加多个对象,如下:
m_tabsheet.AddPage(&m_skatch2);
. . . . . .</div>

2.List Control中标题栏(Column)的添加:

创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report、Align项里选择Top、Sort项里选择None.

然后在该List所在对话框的类(头文件)里创建ClistCtrl的一个对象m_list然后在.cpp文件的OnInitDialog()之类的函数里实现如下代码:
strname[0]="Screen Name";
strname[1]="Form ID";
strname[2]="Category Path";
for(int i=0;i<3;i++)
{
m_List.InsertColumn(i,strname[i],LVCFMT_LEFT,130);
}</div>

在这之前也要将List Control的ID与ClistCtrl的对象m_list在DoDataExchange(CDataExchange* pDX)函数里绑定,如下:

DDX_Control(pDX, IDC_LIST, m_List);

3.ToolBar和StatusBar中控件的添加:

方法⑴.只能在ToolBar里创建控件:首先,在ToolBar中创建一个Button,其ID为ID_TOOL_COMBO(我们要将创建的控件放在该Button的位置上).

其次,新创建一个类CMainToolBar,要从CToolBar继承(创建过程大概如下:选择工程/增加到工程/新的类;也可以选择工程的根,然后点击右键,选择新的类;或者CTL+W,选择增加类/新的类 --- 然后在class type里选择Generic Class,在Name栏里输入新类的名字,Base class里输入CToolBar),创建成功后在该类里创建要增加的控件的对象,如:
CStatic m_wndCategory, m_wndCategoryPath;
CButton m_wndOpenButton;
Cedit m_wndEdit;</div>
然后在构造函数里初始化如:
m_wndCategory.m_hWnd = NULL;
m_wndCategoryPath.m_hWnd = NULL;
m_wndOpenButton.m_hWnd = NULL;
m_wndEdit.m_hWnd = NULL;</div>
接着在CMainframe的头文件里创建CMainToolBar的一个对象m_wndToolBar,最后在.cpp文件的OnCreate函数的最后实现如下:
CRect rect;  // 可定义在头文件当中
// ComboBox
{
//找到指定的工具项
while(m_wndToolBar.GetItemID(index)!=ID_TOOL_COMBO)
index++;
//设置指定工具项的宽度并获取新的区域 120是宽度
m_wndToolBar.SetButtonInfo(index, ID_TOOL_COMBO, TBBS_SEPARATOR, 120);
m_wndToolBar.GetItemRect(index, &rect);
//设置位置
rect.top+=1;
rect.bottom += 200;
// 创建并显示控件
if(!m_wndToolBar.m_wndMyCombo.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL|
CBS_DROPDOWNLIST | CBS_HASSTRINGS , rect, &m_wndToolBar, ID_TOOL_COMBO))
{ 
TRACE0("Failed to create combo-box\n");
return FALSE;
}
m_wndToolBar.m_wndMyCombo.ShowWindow(SW_SHOW);
//填充内容
m_wndToolBar.m_wndMyCombo.AddString("25%");
m_wndToolBar.m_wndMyCombo.AddString("50%");
m_wndToolBar.m_wndMyCombo.AddString("75%");
//选择默认项
m_wndToolBar.m_wndMyCombo.SetCurSel(0);
//获取到内容并MSGBOX显示出来
CString strContent;
m_wndToolBar.m_wndMyCombo.GetWindowText(strContent);
index = 0;
}</div>
其他控件都类似创建(只需要注意一下各自的Create函数的参数即可)。

方法⑵.这种方法创建不太容易控制:直接在CMainframe的头文件中创建要增加的控件的对象,如CButton的对象m_wndAboutButton,然后创建CToolBar或者CstatusBar的对象,如:CstatusBar的对象_wndStatusBar;再增加几个函数如下:

Protected:
virtual void RecalcLayout(BOOL bNotify = TRUE);
afx_msg void CMainFrame::OnViewStatusBar();
接着在.cpp文件中将StatusBar的ID和OnViewStatusBar 函数绑定在一起,如下所示:
  // {{AFX_MSG_MAP(CMainFrame)
  ON_COMMAND(ID_VIEW_STATUS_BAR, OnViewStatusBar)
  ON_WM_CREATE()
  // }}AFX_MSG_MAP
END_MESSAGE_MAP()</div>
然后Create函数的最后(返回值之前)实现如下代码:

VERIFY(m_wndAboutButton.Create(_T("MyAbout"),
  WS_VISIBLE,rc,this,ID_APP_ABOUT));
// TODO: Remove this if you don't want tool tips or a resizeable toolbar
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);</div>

再在RecalcLayout函数里实现:
if (m_wndStatusBar.m_hWnd)
{
m_wndStatusBar.GetWindowRect(&rc);
ScreenToClient(&rc);
rc.right -= 50;
m_wndStatusBar.SetWindowPos(NULL,rc.left,rc.top,rc.Width(),rc.Height(),
SWP_NOZORDER);
rc.left = rc.right;
rc.right += 50;
m_wndAboutButton.SetWindowPos(NULL,rc.left,rc.top,rc.Width(),rc.Height(),
SWP_NOZORDER);
}</div>
最后在OnViewStatusBar()里实现:
m_wndAboutButton.SetWindowPos(NULL, 0, 0, 0, 0,
SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|
(bShow

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MFC程序设计常用技巧汇总

相关文章

  • 2017-05-28Linux下g++编译与使用静态库和动态库的方法
  • 2017-08-30C++ 多线程 小记
  • 2017-05-28C++ 学习之旅 Windows程序内部运行原理
  • 2017-08-17c计算闰年
  • 2017-05-28详解C++11中的右值引用与移动语义
  • 2017-05-28探讨C语言的那些小秘密之断言
  • 2017-05-28标准C++类string的Copy-On-Write技术
  • 2017-05-28C++中构造函数重载
  • 2017-05-28C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
  • 2017-05-28详解C++设计模式编程中对访问者模式的运用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 基于一个简单定长内存池的实现方法详解
    • C++在成员函数中使用STL的find_if函数实例
    • C/C++产生随机数函数简单介绍
    • sigsetjmp的用法总结
    • C语言 二叉树的链式存储实例
    • 数据在内存中的存储(二进制形式存储)
    • c++加法高精度算法的简单实现
    • C语言中进制知识汇总
    • C++多继承同名隐藏实例详细介绍
    • C++实现简单的图书管理系统

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有