MFC基础控件
一、静态文本
在代码中动态创建,需要使用CStatic类的成员函数Create
virtualBOOLCreate(LPCTSTRlpszText,DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID=0xffff);
lpszText:指定要在控件中显示的文字。如果为NULL则不会显示任何文字。
dwStyle:指定静态控件的风格。静态文本框一般都是对话框或其他窗口的子窗口,而且是可见的,所以应该包含WS_CHILD 和WS_VISIBLE风格
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);}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。