一、静态文本

在代码中动态创建,需要使用CStatic类的成员函数Create

virtualBOOLCreate(LPCTSTRlpszText,DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID=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=newCStatic();cs->Create("helloworld",WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(50,80,150,150),this);


二、编辑框 Edit Control

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

virtualBOOLCreate(DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID);

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);

HBITMAPhBitmap;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);

jUINT GetState( ) const;

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

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


四、图片控件

1动态加载图片

type选择Bitmap

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



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

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