MFC基础控件

一、静态文本

  1. 在代码中动态创建,需要使用CStatic类的成员函数Create
virtual BOOL Create(
   LPCTSTR lpszText,
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID = 0xffff 
);

lpszText:指定要在控件中显示的文字。如果为NULL则不会显示任何文字。

dwStyle:指定静态控件的风格。静态文本框一般都是对话框或其他窗口的子窗口,而且是可见的,所以应该包含WS_CHILD 和WS_VISIBLE风格

SS_BITMAP 一个位图将显示在静态控件中,Create函数的lpszText参数字符串是资源文件中定义的位图名。此风格忽略宽度和高度参数,静态控件自动调整它的尺寸来适应位图
SS_BLACKFRAME 指定一个具有与窗口边界同色的框,默认为黑色
SS_BLACKRECT 指定一个具有与窗口边界同色的实矩形,默认为黑色
SS_CENTER 使显示的正文居中对齐,正文可以换行
SS_GRAYFRAME 指定一个具有与屏幕背景同色的边框
SS_GRAYRECT 指定一个具有与屏幕背景同色的实矩形
SS_ICON 使控件显示一个在资源中定义的图标,图标的名字由Create 函数的lpszText 参数指定,图标自动调整它的尺寸
SS_LEFT 左对齐正文,正文能回绕
SS_LEFTNOWORDWRAP 左对齐正文,正文不能回绕
SS_NOTIFY 使控件能向父窗口发送鼠标事件消息
SS_RIGHT 右对齐正文,可以回绕
SS_SIMPLE 使静态正文在运行时不能被改变并使正文显示在单行中
SS_WHITEFRAME 指定一个具有与窗口背景同色的框,默认为白色
SS_WHITERECT 指定一个具有与窗口背景同色的实心矩形,默认为白色

rect:指定静态控件的位置和大小,它可以是RECT结构体类型,也可以是CRect类的对象。

pParentWnd:指定静态控件的父窗口,通常是一个CDialog对象,不能是NULL。

nID:指定静态控件的ID。

cs = new CStatic();
cs->Create("hello world",
WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(50,80, 150, 150),
this);

二、编辑框 Edit Control

1.与静态文本框的创建类似,除了可以在对话框模板上拖进一个编辑框,然后关联一个变量或通过API函数使用,也可以在程序中动态创建编辑框,即调用CEdit类的成员函数Create。Create成员函数的原型如下

virtual BOOL Create(
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID 
);

2. dwStyle:指定编辑框的风格。可以是MSDN中“edit styles”包含风格的任意组合。下面是“edit styles”的所有风格说明。

ES_AUTOHSCROLL:当用户在行尾键入一个字符时,正文将自动向右滚动10 个字符,当用户按回车键时,正文总是滚向左边
       ES_AUTOVSCROLL: 当用户在最后一个可见行按回车键时,正文向上滚动一页
       ES_CENTER: 在多行编辑框中使正文居中
       ES_LEFT :左对齐正文
       ES_LOWERCASE: 把用户输入的字母统统转换成小写字母
       ES_MULTILINE:指定一个多行编辑器。若多行编辑器不指定ES_AUTOHSCROLL 风格,则会自动换行,若不指定ES_AUTOVSCROLL,则多行编辑器会在窗口中正文装满时
发出警告声响
       ES_NOHIDESEL:默认时,当编辑框失去输入焦点后会隐藏所选的正文,当获得输入焦点时又显示出来。设置该风格可禁止这种默认行为
       ES_NUMBER :编辑框中只允许输入数字
       ES_OEMCONVERT:使编辑框中的正文可以在ANSI 字符集和OEM 字符集之间相互转换。这在编辑框中包含文件名时是很有用的
       ES_PASSWORD: 使所有键入的字符都用“*”来显示
       ES_READONLY: 将编辑框设置成只读的
       ES_RIGHT :右对齐正文
       ES_UPPERCASE: 把用户输入的字母统统转换成大写字母
       ES_WANTRETURN:使多行编辑器接收回车键输入并换行。如果不指定该风格,按回车键会选择默认的命令按钮,这往往会导致对话框的关闭

除了上面的风格外,编辑款一般还会设置WS_CHILD、WS_VISIBLE、WS_BORDER等窗口风格。另外,编辑框可以是多行的,也就是在编辑框中显示多行文字,这就需要设置ES_MULTILINE风格,如果想要多行编辑框支持回车键,则还要设置ES_WANTRETURN。

对于在对话框模板中创建的编辑框,它的属性中包含了上述的风格,例如,Multiline属性对应的就是ES_MULTILINE风格,Want Return属性对应ES_WANTRETURN风格。

三、Cbutton 单选框 复选框

1.CButton类的Create成员可动态创建Button

2.常用方法

a设置显示的位图

HBITMAP SetBitmap(HBITMAP hBitmap);

HBITMAP hBitmap;
hBitmap=(HBITMAP)::LoadImage(::AfxGetInstanceHandle(),_T("aaa.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
CButton *btn = (CButton*)GetDlgItem(IDC_BUTTON1);
btn->SetBitmap(hBitmap);

b  获取之前由SetBitmap函数设置的按钮位图的句柄。

HBITMAP GetBitmap( ) const;

c 设置按钮的风格。参数nStyle指定按钮的风格,bRedraw指定按钮是否重绘,为TRUE则重绘,否则不重绘,默认为重绘

void SetButtonStyle(UINT nStyle,BOOL bRedraw = TRUE);

d   获取按钮控件的风格。

UINT GetButtonStyle( ) const;

e设置按钮的选择状态。参数nCheck为0表示未选中状态,1表示选中状态,2表示不确定状态(仅用于复选框)。

void SetCheck(int nCheck);

f  获取按钮的选择状态。返回值的意义同SetCheck函数的nCheck参数。

int GetCheck( ) const;

g 设置要显示到按钮上的光标图。参数hCursor指定了光标的句柄。返回值为按钮原来光标的句柄。

HCURSOR SetCursor(HCURSOR hCursor);

h  获取之前由SetCursor设置的光标的句柄。

HCURSOR GetCursor( );

i 设置按钮的高亮状态。参数bHighlight指定按钮是否高亮显示,非0则高亮显示,否则取消高亮显示状态。

void SetState(BOOL bHighlight);

j UINT GetState( ) const;

获取按钮控件的选择状态、高亮状态和焦点状态。我们可以通过将返回值与各个掩码相与来获得各种状态值,掩码与对应的相与结果说明如下:

掩码0x0003:用来获取单选按钮或复选框的状态。相与结果为0表示未选中,1表示被选中,2表示不确定状态(仅用于复选框)。
       掩码0x0004:用来判断按钮是否是高亮显示。相与结果为非0值表示按钮是高亮显示的。当单击按钮并按住鼠标左键时,按钮会呈高亮显示。
       掩码0x0008:相与结果为非零值表示按钮拥有输入焦点。

四、图片控件

1动态加载图片

type选择Bitmap

    // TODO: Add your control notification handler code here   
    CBitmap bitmap;  // CBitmap对象,用于加载位图   
    HBITMAP hBmp;    // 保存CBitmap加载的位图的句柄   
   
    bitmap.LoadBitmap(IDB_BITMAP1);  // 将位图IDB_BITMAP1加载到bitmap   
    hBmp = (HBITMAP)bitmap.GetSafeHandle();  // 获取bitmap加载位图的句柄   
    m_jzmPicture.SetBitmap(hBmp);    // 设置图片控件m_jzmPicture的位图图片为IDB_BITMAP1

五、右键菜单 实现鼠标右键消息处理

void CtestDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
    CMenu menu;       // 菜单(包含主菜单栏和子菜单)   
    CMenu *pSubMenu;  // 右键菜单 
    menu.LoadMenu(IDR_MENU1);
    pSubMenu = menu.GetSubMenu(0); 
    ClientToScreen(&point);
    // 弹出右键菜单,菜单左侧与point.x坐标值对齐   
    pSubMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this); 
}

原文地址:http://blog.51cto.com/12158490/2091148

时间: 2024-08-26 00:03:04

MFC基础控件的相关文章

【Android开发学习笔记】【第四课】基础控件的学习

通过一个简单的例子来学习下面几种控件: 1.TextView:简单的文本显示控件 2.EditText:可以编辑的文本框 3.Button:按钮 4.Menu:这里指的是系统的Menu 5.Toast:消息提示控件,类似于MFc的tip(不知道理解的对不对) 顺便用到上一次学习的多个Activity之间传递数据的技术,来做一个小的计算乘法的case 步骤: (1)主Activity 和显示结果的 Activity 都采用线性布局,下面是布局文件的源代码: <LinearLayout xmlns:

HTML 基础控件介绍

HTML 基础控件介绍 主要介绍 input.select.textarea.label.fieldset.ul.ol.li等标签 目录 1. <input>标签:主要用于收集用户信息,可根据不同的type属性值,拥有多种形式. 2. <select>标签:可创建单选或多选菜单,类似于winform的combox或listbox. 3. <textarea>标签:多行文本区域. 4. <label>标签:相当于一个展示文本框. 5. <fieldset

0821基础控件(UILabel常用属性)

一.UILabel常用属性1--实例化和设置文字 // 实例化UILabel并指定其边框 UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0.0, 210.0, 320.0, 40.0)]; // 设置label显示的文本 [label setText:@"Hello World"]; // 设置字体和字体大小 [label setFont:[UIFont fontWithName:@"Helvetica-B

0821基础控件(UIButton常用属性)

一.可以通过代码的方式创建UIButton 1.通用实例化对象方法: UIButton *button = [[UIButton alloc] initWithFrame:rect]; 2.快速实例化对象方法: UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 提示: 在OC开发中,实例化任何类型的非自定义对象,都请首先尝试一下是否存在快速定义方法.如果存在快速定义方法,就尽量不要使用init之类的方法实例

Delphi一共封装(超类化)了8种Windows基础控件和17种复杂控件

超类化源码: procedure TWinControl.CreateSubClass(var Params: TCreateParams; ControlClassName: PChar); const {CS_OWNDC标志,属于此窗口类的窗口实例都有自己的DC(称为私有DC) } {CS_CLASSDC标志,所有属于该类的窗口实例共享相同的DC(称为类DC).类DC有一些私有DC的优点,而更加节约内存} {CS_PARENTDC标志,属于这个类的窗口都使用它的父窗口的句柄.和CS_CLAS

iOS基础控件UINavigationController中的传值

iOS基础控件UINavigationController中的传值,代理传值,正向传值,反向传值 #import <UIKit/UIKit.h> //声明一个协议 @protocol SendValue<NSObject> //定义一个方法 - (void)sendBtnTitle:(NSString *)title; @end @interface FirstViewController : UIViewController // 定义代理 @property (nonatomi

MFC各种控件的常见操作(逐步添加中......)

由于经常切换系统或界面框架进行编程,难免有时会忘记之前的编程函数等等.所有在此自己做一个备份,以防止重新充电带来的痛苦! 1.CButton 1.1 在VC中编程实现按钮的启用(enable)和禁用(disable) 1.1.1 方式1:在对控件添加变量以后 m_btnQuit.EnableWindow(FALSE); //禁用按钮 m_btnQuit.EnableWindow(TRUE); //启用按钮 m_btnQuit.EnableWindow(FALSE); //禁用按钮 m_btnQu

Cocos2d-JS studio基础控件的使用

在studio里把几个基础控件往场景文件一拖,然后导出json格式的资源文件 逻辑代码如下: 1 var HelloWorldLayer = cc.Layer.extend({ 2 sprite:null, 3 value : 90, 4 // self : this, 5 ctor:function () { 6 ////////////////////////////// 7 // 1. super init first 8 this._super(); 9 10 /////////////

Python Tkinter基础控件入门实例

分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get() print 'btn Click and Entry value is %s' % evalue def btn_click_bind