文档库 最新最全的文档下载
当前位置:文档库 › VC++ Combo BoxCombo Box Ex控件

VC++ Combo BoxCombo Box Ex控件

VC++ Combo Box/Combo Box Ex控件

组合窗口是由一个输入框和一个列表框组成。创建一个组合窗口可以使用成员函数:BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );

其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE外,你可以针对列表控件指明专门的风格。

CBS_DROPDOWN 下拉式组合框

CBS_DROPDOWNLIST 下拉式组合框,但是输入框内不能进行输入

CBS_SIMPLE 输入框和列表框同时被显示

LBS_SORT 所有的行按照字母顺序进行排序

由于组合框内包含了列表框,所以列表框的功能都能够使用,如可以利用:

int AddString( LPCTSTR lpszItem )添加行,

int DeleteString( UINT nIndex )删除指定行,

int InsertString( int nIndex, LPCTSTR lpszItem )将行插入到指定位置。

void ResetContent( )可以删除列表框中所有行。

通过调用int GetCount( )得到当前列表框中行的数量。

如果需要得到/设置当前被选中的行的位置,可以调用int GetCurSel( )/int SetCurSel(int iIndex)。通过调用int GetLBText( int nIndex, LPTSTR lpszText )得到列表框内指定行的字符串。

此外通过调用int FindString( int nStartAfter, LPCTSTR lpszItem )可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。

int SelectString( int nStartAfter, LPCTSTR lpszItem )可以选中包含指定字符串的行。

此外输入框的功能都能够使用,如可以利用:

DWORD GetEditSel( ) /BOOL SetEditSel( int nStartChar, int nEndChar )得到或设置输入框中被选中的字符位置。

BOOL LimitText( int nMaxChars )设置输入框中可输入的最大字符数。

输入框的剪贴板功能Copy,Clear,Cut,Paste动可以使用。

最后介绍一下列表框几种常用的消息映射宏:

ON_CBN_DBLCLK 鼠标双击

ON_CBN_DROPDOWN 列表框被弹出

ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS 在输入框失去/得到输入焦点时产生

ON_CBN_SELCHANGE 列表框中选择的行发生改变

ON_CBN_EDITUPDATE 输入框中内容被更新

使用以上几种消息映射的方法为定义原型如:afx_msg void memberFxn( );的函数,并且定义形式如ON_Notification( id, memberFxn )的消息映射。如果在对话框中使用组合框,Class Wizard会自动列出相关的消息,并能自动产生消息映射代码。

VC中Combo Box控件使用大全

一、如何添加/删除Combo Box内容

1,在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。

2,在程序初始化时动态添加

如://控件内容初始化

CString strTemp;

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除现有所有内容

for(int i=1;i<=100;i++)

{

strTemp.Format("%d",i);

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);

}

3,下拉的时候添加

如:CString strTemp;

int iCount=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCount();//取得目前已经有的行数

if(iCount<1)//防止重复多次添加

{

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();

for(int i=1;i<=100;i++)

{

strTemp.Format("%d",i);

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);

}

}

4,删除

DeleteString( UINT nIndex )//删除指定行,

5,插入

InsertString( int nIndex, LPCTSTR lpszItem )//将行插入到指定位置

6,查找

FindString( int nStartAfter, LPCTSTR lpszItem )//可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。

int SelectString( int nStartAfter, LPCTSTR lpszItem )//可以选中包含指定字符串的行

二、如何控制Combo Box的下拉长度

1,首先要知道两点:一、那就是在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框。

2,二、属性里有个No integral height 钩选项,表示最大长度为设计长度,如果实际内容比设计长度多,就出现滚动条,少就以实际长度显示。

三、选择其中的某行

1,选中:

int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//当前选中的行。2,设置

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n)//设置第n行内容为显示的内容。

四、取得Combo Box框内容

1取当前内容

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);

2取其他行内容

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp);

四、获得焦点

通常要判断控件是否获得了焦点,可以用GetFocus()函数

例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判断焦点是否在编辑框

IDC_EDIT_VALUE2内。

但是combobox 的焦点不同,因为它是由edit和listbox两部分组成的

所以获得焦点要用GetParent():if

((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))

VC Combo 列表项不显示

VC的组合框控件Combo,有三种风格,DropDown,DropList和Simple,我们用的最多的是前两种,但是很多初次接触这个控件的程序员发现,无论addstring了什么列表项,都不会在组合框里显示出来,事实上,这里有一个小技巧。

首先,组合框是这个样子的:

现在,你把鼠标移动到那个下拉箭头处,单击,就会变成下面这个样子:

然后,你把鼠标移动到正下方的那个蓝色小方块那里,用鼠标拖动扩大八个小方块围成的区域,其实这个区域就是要显示的列表项的区域。

好了,重新编译你的程序,你会发现列表项已经显示出来了。

VC 中自己创建对话框方法

VC中自己创建对话框的方法 这里讲在VC中不需要打开MFC工程,通过代码直接创建一个对话框,我看这个对话框比MFC的漂亮多了,而且要写会代码不需要研究MFC就直接开发新的工程. 先打开VC++ 6.0 版本, 第一步:创建一个工程名为:Main Dialog 的Win32 Application。创建过程如下: 打开File菜单中New,选自Win32 Application,工程名为:Main Dialog,点击OK,再选自A simple Win32 application。点击Finish,再点击OK.(见图1) 第二步:创建资源脚本。再打开File菜单中New,选自File选项的Resource Script(就是资源脚本),文件名为Dialog,点击OK。

(见图2) 第三步:插入对话框。刚才建立的脚本Dialog显示为Dialog.rc,就在Dialog.rc上面点击鼠标右键Insert(插入)Resource中选自插入Dialog(对话框),点击New(新建),这样对话框插入完毕。(见图3)

第四步:添加resource.h。我们把第四步插入的对话框ID改为IDD_MAIN ,在FileView中有个Header Files的文件,上面点击右键,选择Add Files to Folder...(添加文件到目录),弹出一个工程目录窗口,中间找到resource.h,然后OK了(添加)。(见图4)

第五步:复制代码。双击Main Dialog.cpp,我们写代码的位置出现了(见图5),那里有几行代码,把它们全部删掉,下面已经准备好的代码全部复制到那里,编译,执行,您的是否成功了? #include "stdafx.h" #include "resource.h" #include BOOL WINAPI Main_Proc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam); BOOL Main_OnInitDialog(HWND hwnd,HWND hwndFocus,LPARAM lParam); void Main_OnCommand(HWND hwnd,int id,HWND hwndCtl,

VB教程:文本框(TextBox)

VB教程:文本框(TextBox) 2、文本框(TextBox) 作用:用于输入、编辑文本或用于输出、显示文本。 (1)常用属性 Text——表示用户输入的内容。 例:Label1.Caption=Text1.Text 将Text1控件接收用户输入的数据通过Label1控件显示出来。 multiline ——设置文本框能否输入和显示多行文本。 true —可输入、显示多行文本 False—限制所有的文本在一行内显示(缺省)。 scrollbars——是否需要滚动条(只有在multiline属性设置为true时)。 =0 没有。 =1 有水平。 =2 有垂直。 =3 水平、垂直都有。 注意:multiline属性和scrollbars属性只能在设计时进行设置,不能在代码中赋以新值。SelStart——表示用户选中一段文字的起始位置。第一个字符位置为0。利用SelStart属性可以实现字符串查找功能。 SelLength——表示用户选中文字的长度。 SelText——表示用户选中文字的内容。 例:0123456789 这时:SelStart=5,SelLength=4,SelText="5678" PasswordChar——设置是否在文本框中显示用户键入的字符。 如果该属性设置了某一字符,那么无论在文本框中输入什么(即无论Text属性值是什么),都只显示设置的该字符,例如,如果将PasswordChar的属性设置为字符“*”,那么文本框中的文本都以“*”显示,最终用户无法知道文本的内容,所以该属性起到了口令的作用。(2)常用方法: SetFocus——使当前控件获得输入焦点,即将光标从其他位置移动到文本框中。 焦点(focus)代表接收用户鼠标或键盘输人的能力,对象(窗体和控件)获得焦点通常称之为“聚焦”。当对象获得焦点时,可接收用户的输入。 (3)主要事件 主要事件有Change、KeyPress、LostFocu(失去焦点,即光标离开)等。 (4)例子: 例1:见教材P103。 1)控件的属性设置 控件属性设置 CommandButton (Name) Command1 Caption “查找” Height 495 Left 3000 Top 2400 Width 1335 TextBox (Name) Text1

VC对话框控件属性的修改

【作者按】本文主要针对初学者在使用对话框赋值时的一些问题而写。如果你对对话框的使用已经很熟练,请跳过本文。 【针对现象】许多初学者,常常写出这样的程序来修改对话框中某个按钮的标题: 其中m_Btn的定义为CButton m_Btn; 这段程序运行后会报错,debug一下,错误会指向一个断言语句 ASSERT(::IsWindow(m_hWnd));报告窗口指针为空。看一下m_hWnd,等于0x00000000.其实就是m_Btn这个CButton对象的句柄为空。 【原因分析】出现这种错误的原因,显然是m_Btn这个窗口对象还没有创建造成的。我们看一下CMyDialog dlg这个构造函数,看一看MSDN对CDialog构造函数的说明。其实它只是简单的创建了一个对话框实例。这里我这样理解,就是对话框是一个容器,而对话框上的各个控件是容器中包含的对象。对话框的构造函数只是构造了一个容器,而并没有创建容器中的各个对象。我想这里大家就应该明白为什么m_Btn的句柄为空了。 那对话框中的控件在什么时候被创建的呢?我个人没有仔细的研究过,但从个人使用的经验看,应该在DoModal函数和对话框的Create函数中创建的。因为使用一个模式对话框时,m_Btn.SetWindowText("MyButton")语句在OnInitDialog函数中执行没有问题。所以应该在DoModal中创建的。至于DoModal中是如何创建的,欢迎各位高手给与讲解。而对于非模式对话框,以下的程序运行没有问题: 可见控件的创建应该在Create函数中。

[解决办法]那么,如果非要实现这样的功能怎么办呢?笔者的解决办法是在对话框类中增加成员变量,比如m_sBtnTitle。数据的传递有以下三种方法: 1。增加Set函数,比如SetBtnTitle(CString str); 调用程序如下: 2。将m_sBtnTitle定义成公有类型。 那么dlg.m_sBtnTitle = "MyButton";就可以了。 3。修改或者重载一个新的构造函数,比如: 最后,在对话框类的初始化函数增加m_Btn.SetWindowText(m_sBtnTitle);即可。 还有一些网友提供的方法是定义全局变量。当然,首先肯定全局变量是可以完成此功能的。不过笔者并不赞同用全局变量的方法。对于面向对象的编程和设计来说,全局变量应该尽量少使用,因为全局变量将增加模块之间的耦合度,与面向对象的思想是有违背的。正如goto 语句,好用但尽量少用。在这里笔者并不是反对用全局变量,而是要看情况而用。笔者曾经开发过一个日本项目,粗略计算一下,全局变量不下于1000个,这样的程序的维护难度可想而知。 希望此文能够帮助初学者在VC之路上少走一些歪路,尽快融入VC开发大军。

VC++对话框添加工具栏

VC++对话框添加工具栏 1、添加工具栏资源ID为IDR_TOOLBAR 2、在对话框的类定义中加: CToolBar m_ToolBar; 3、在OnInitDialog中或其它合适的消息响应中加如下代码:(函数可查看MSDN) m_ToolBar.Create(this); //创建工具栏 m_ToolBar.LoadToolBar(IDR_TOOLBAR);//加载工具栏 //得出控件条大小. CRect rect; CRect rectNow; GetClientRect(rect); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rect Now); //放置控件条位置 CPoint ptOffset(rectNow.left-rect.left,rectNow.top-rect.top); CRect rcChild; CWnd* pwndChild=GetWindow(GW_CHILD); while (pwndChild) { pwndChild->GetWindowRect(rcChild); ScreenToClient(rcChild); rcChild.OffsetRect(ptOffset); pwndChild->MoveWindow(rcChild,FALSE); pwndChild=pwndChild->GetNextWindow(); } //调整对话框尺寸 CRect rcWindow; GetWindowRect(rcWindow); rcWindow.right+=rect.Width()-rectNow.Width(); rcWindow.bottom+=rect.Height()-rectNow.Height(); MoveWindow(rcWindow, FALSE);

第二章(1)-标准控件-一、选择题-1-文本框的属性不包括(-A-)。-A

第二章(1)标准控件 一、选择题 1. 文本框的属性不包括( A )。 A. Caption B. Text C. Name D. Top 2. 在属性窗口中设置命令按钮的Caption属性为"&End",则( A )是该命令按钮的快捷访问键。 A. Alt+E B. Ctrl+E C. Shift+E D. Ctrl+Shift+E 3. 设置命令按钮的( B )属性值为False,可以使命令按钮处于不可用状态。 A. Value B. Enabled C. Default D. Cancel 4. 下列设置中,可以使计时器Timer1停止计时的是( D )。 A. Timer1.Locked=True B. Timer1.Locked=False C. Timer1.Enabled=True D. Timer1.Enabled=False 5. 设置标签的的显示内容的属性是( C )。 A. Name B. Text C. Caption D. Top 6. 为了将复选框(名称为Check1)设置为选中状态,应该使用( A )语句。 A. Check1.Value=1 B. Check1.Value=0 C. Check1.Value=True D. Check1.Value=False 7. 单选按钮处于选中状态时,它的Value属性值是( B )。

A. False B. True C. 0 D. 1 8. 下列关于组合框的叙述中,正确的是(C )。 A. 组合框有Click事件,没有Change事件 B. 组合框有Change事件,没有Click事件 C. 组合框既有Click事件,也有Change事件 D. 组合框没有Click事件和Change事件 9. 设置( A )属性,可以使图片显示在图片框或图像框中。 A. Picture B. Image C. Icon D. DownPicture 10. 在图像控件Image1中加载图片后,为使图像控件能够自动调整大小而显示整幅图片,可以使用语句( D )。 A. Image1.AutoSize=True B. Image1.AutoSize=False C. Image1.Stretch=True D. Image1.Stretch=False 11. 在图片框控件Picture1中加载图片后,为使图片框控件能够自动调整大小而显示整幅图片,可以使用语句( A )。 A. Picture1.AutoSize=True B. Picture1.AutoSize=False C. Picture1.Stretch=True D. Picture1.Stretch=False 12. 下列不能接收焦点的控件是( B )。 A. 命令按钮 B. 标签框 C. 文本框 D. 单选按钮 13. 下列控件中( D )不能触发GetFocus和LostFocus事件。 A. 命令按钮 B. 组合框 C. 复选按钮 D. 计时器

VC++实现对话框工程中添加菜单

VC++对话框程序中添加菜单 在VC中创建一个基于对话框的MFC程序,要在其中添加菜单总共分三步: 1、首先插入一个菜单资源IDR_MENU1,然后可以编辑修改菜单; 2、然后在为对话框添加一个CMenu类型的成员变量m_Menu; 3、在OnInitDialog()中添加如下的代码: m_Menu.LoadMenu(IDR_MENU1);//载入菜单 SetMenu(&m_Menu); //显示菜单 经过这三步以后菜单就可以显示出来了。 MFC 对话框工程中添加菜单(VC++ 6.0编译器) MFC 对话框工程中添加菜单(VC++ 6.0编译器) 第一步:创建对话框资源和菜单资源. 第二步:添加菜单到对话框中 方法一: 在创建的对话框中右键,在Menu选项选择自己的菜单ID如下图

此时就可以了. 方法二: 不用方法一,直接添加代码完成上述功能. 添加代码到DialogDlg ::OnInitDialog中 CMenu *menu = new CMenu; menu ->LoadMenu(MAKEINTRESOURCE(IDR_MENU)); //IDR_MENU 菜单ID this ->SetMenu(menu); 或者 Cmenu m_menu; m_menu.LoadMenu(IDR_MENU); SetMenu(&m_menu); 此时结果如下图 最后在添加菜单到对话框类中,实现其各种功能. 下面是在上面的基础上实现的通用对话框空间的功能代码,方便以后开发使用. (1)打开文件对话框 条件: OPENFILENAME结构体初始化 GetOpenFileName函数调用

VC中图像控件的用法与总结

使用picture控件动态显示图片方法 一控件适应于图片尺寸 添加一个picture控件,修改ID为IDC-PICTURE,并添加一CBitmap m_bmp成员变量在OnInitDialog()函数中添加如下代码 if(m_bmp.m_hObject!=NULL) m_bmp.DeleteObject(); //以绝对路径加载BMP图片 HBITMAP hbmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"1.bmp",IMAGE_BITMAP, 0,0,LR_CREATEDIBSECTION | LR_LOADFROMFILE); if(hbmp==NULL) return false; //获得加载位图的文件信息 m_bmp.Attach(hbmp); DIBSECTION ds; BITMAPINFOHEADER &bminfo=ds.dsBmih;//获得位图信息图 m_bmp.GetObject(sizeof(ds),&ds); int cx=bminfo.biWidth;//获得位图宽度 int cy=bminfo.biHeight;//获得位图高度 //该段程序根据图象的宽和高,调整控件大小,让它正好显示一张图片 CRect rect; GetDlgItem(IDC_PICTRUE)->GetWindowRect(&rect);//获得控件所在矩形区域 ScreenToClient(&rect); GetDlgItem(IDC_PICTRUE)->MoveWindow(rect.left,rect.top,cx,cy,true);//调整控件大小在OnPaint()函数中添加如下代码 //三种方法获得pictrue控件DC,图象将被绘制在控件上 CPaintDC dc(GetDlgItem(IDC_PICTRUE)); //CPaintDC dc(this); //CDC dc; //dc.m_hDC=::GetDC(NULL); CRect rcclient; GetDlgItem(IDC_PICTRUE)->GetClientRect(&rcclient); CDC memdc; memdc.CreateCompatibleDC(&dc); CBitmap bitmap; bitmap.CreateCompatibleBitmap(&dc,rcclient.Width(),rcclient.Height()); memdc.SelectObject(&bitmap); CWnd::DefWindowProc(WM_PAINT,(WPARAM)memdc.m_hDC,0); CDC maskdc; maskdc.CreateCompatibleDC(&dc); CBitmap maskbitmap; maskbitmap.CreateBitmap(rcclient.Width(),rcclient.Height(),1,1,NULL); maskdc.SelectObject(&maskbitmap);

VC中对话框使用技巧集合

注:以下代码以一个名为CTest6Dlg的对话框类为例 -------------------------------------------------------------------------------- 1. 在任务栏隐藏对话框 ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); -------------------------------------------------------------------------------- 2. 使对话框为顶层窗口 SetWindowPos(&this->wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); -------------------------------------------------------------------------------- 3. 在运行时添加最大化,最小化按钮 SetWindowLong(this->m_hWnd, GWL_ST YLE, GetWindowLong(this->m_hWnd, GWL_ST YLE) | WS_MINIM IZEBOX | WS_MAXIMIZEBOX); UpdateWindow(); -------------------------------------------------------------------------------- 4. 使能对话框右上角关闭按钮 在OnInitDialog中 方法一: CMenu* menu = GetSystemMenu(FALSE); menu->Modify M enu(SC_CLOSE, MF_BYCOMMAND | M F_GRAYED ); 方法二: CMenu* menu = GetSystemMenu(FALSE); menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED); -------------------------------------------------------------------------------- 5. 当对话框一部分在屏幕外时,显示全部对话框 SendMessage(DM_REPOSITION); -------------------------------------------------------------------------------- 6. 改变鼠标外形 添加WM_SETCURSOR 消息映射函数 BOOL CTest6Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { SetCursor(AfxGetApp()->LoadStandardCursor(IDC_HELP)); return 0; } -------------------------------------------------------------------------------- 7. 改变对话框背景色和文本颜色 在CTest6App的InitInstance中添加

VC++基础控件案例图详解

一.简单MFC应用程序开发。 例1. 编写如下图的程序,若单击“复制”按钮,则把上面的编辑框中的内容复制到下面的编辑框中;若单击“结束”按钮,则退出程序的运行。 (1)工程创建 ①选择“文件|新建”命令; ②在“工程”选项卡中,选定“MFC App Wizard(exe),输入工程名称TEST,单击“确定”按钮; ③选定“D基本对话框”即创建基于对话框的应用程序,单击“完成”按钮。

(2)放置控件,先删除原有的控件,然后放置本例需要的控件,本例共涉及4个控件:2个编辑框和2个命令按钮。编辑框主要用来输入数据,也可以用来显示数据;命令按钮用来执行有关操作。

(3)设置控件的属性,控件添加后就要设置其有关的属性。 scroll和Auto VScroll,编辑框将有垂直滚动条;选定“Want Return”。

下编辑框的属性设置同上编辑框,但可不选定“Want Return”。 (4)连接变量,为控件连接变量就是为控件起一个名字。每一个控件都是一个对象,调用MFC类库中的函数都是通过对象来实现的。编辑框属于CEdit类,一个具体的编辑框就是一个CEdit类的对象,如上IDC_EDIT1和IDC_EDIT2。这些对象必须有名称才能对它们进行操作,所以要给每一个对象连接一个变量,作为对象的名称。这个变量将成为类中的一个数据成员。 现在为IDC_EDIT1连接一个变量m_e1。 ①在IDC_EDIT1编辑框中右击鼠标出现快捷菜单选择“建立类向导”,如下图所示。 ②在上图中选择“创建类向导”后,弹出如下图所示的MFC ClassWizard对话框,在“Member Variables”中,选定“IDC_EDIT1”,再选择“Add Variable”按钮。

VC++对话框中使用表格控件的方法

在对话框中使用表格控件的方法: 将该控件改成“report”类型,方法如下。 首先打开该控件的属性,将其设置为“Report”类型,如下图所示。

改完后变为如下形式,是变成了一个列表框。 下面说一下如何通过代码向控件中填加内容,主要是设置表头,然后加入内容,至少有两种方法可以进行信息的加入,下面仅介绍一种。 首先向与对话框对应的类中加入一个与ListControl控件对应的成员函数。填加方法如下:

运行“ClassWizard”定义一个类的ListCtrl控件成员,填加界面如下,其中IDC_LIST1是上面填加的表格控件的ID 。 选中“Member Variables”标签,点击“Add Variable”出现如下对话框,添加变量名,添加后,就会在与对话框对应的类中加如m_List变量,类型为CListCtrl。

在程序中加入如下代码,实现在表格中显示信息: m_List.InsertColumn(0,"Col 1",LVCFMT_LEFT,80,0); //设置列 m_List.InsertColumn(1,"Col 2",LVCFMT_LEFT,80,1); m_List.InsertColumn(2,"Col 3",LVCFMT_LEFT,80,2); m_List.InsertItem(0,"Item 1_1"); //插入行 m_List.SetItemText(0,1,"Item 1_2"); //设置该行的不同列的显示字符m_List.SetItemText(0,2,"Item 1_3"); 运行上面几行代码后的效果如下图所示。

VC6.0中控件及按钮的设置和使用资料

VC6.0中控件及按钮的设置和使用 VC学习笔记1:按钮的使能与禁止 用ClassWizard的Member Variables为按钮定义变量,如:m_Button1; 则 m_Button1.EnableWindow(true); 使按钮处于允许状态 m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示 VC学习笔记2:控件的隐藏与显示 用CWnd类的函数BOOL ShowWindow(int nCmdShow)可以隐藏或显示一个控件。 例1: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT为控件ID号 pWnd->ShowWindow( SW_HIDE ); //隐藏控件 例2: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT为控件ID号 pWnd->ShowWindow( SW_SHOW ); //显示控件 以上方法常用于动态生成控件,虽说用控件的Create函数可以动态生成控件,但这种控件很不好控制,所以用隐藏、显示方法不失为一种替代手段。 VC学习笔记3:改变控件的大小和位置 用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置。 void MoveWindow(int x,int y,int nWidth,int nHeight); void MoveWindow(LPCRECT lpRect); 第一种用法需给出控件新的坐标和宽度、高度; 第二种用法给出存放位置的CRect对象; 例: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号 pWnd->MoveWindow( CRect(0,0,100,100) ); //在窗口左上角显示一个宽100、高100的编辑控件 SetWindowPos()函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况:BOOL SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags); 第一个参数我不会用,一般设为NULL;

VC 对话框自带滚动条的使用

VC对话框自带滚动条的使用 一,使用对话框窗口自带的滚动条,在属性页面中设置即可,如下 二,OnInitDialog()函数中,添加如下滚动条初始化语句 SCROLLINFO vinfo; vinfo.cbSize =sizeof(vinfo); vinfo.fMask =SIF_ALL; vinfo.nPage =50;//滚动块自身的长短,通常有如下关系:其长度/滚动条长度(含两个箭头)=nPage/(nMax+2),//另外nPage取值-1时,滚动条会不见了。 vinfo.nMax =600;//滚动条所能滚动的最大值 vinfo.nMin=0;//滚动条所能滚动的最小值 vinfo.nTrackPos =0; SetScrollInfo(SB_VERT,&vinfo);//即使上述步骤一不做,使用此条语句也可以显示滚动条 三,添加相应的WM_VSCROLL函数

void CMy1d0Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handler code here and/or call default SCROLLINFO scrollinfo; GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); switch (nSBCode) { case SB_BOTTOM: //滑块滚动到最底部 ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMax)*10); //滚动屏幕 scrollinfo.nPos = scrollinfo.nMax; //设定滑块新位置 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); //更新滑块位置 break; case SB_TOP: //滑块滚动到最顶部 ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin)*10); scrollinfo.nPos = scrollinfo.nMin; SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); break; case SB_LINEUP: //单击上箭头 scrollinfo.nPos -= 1; if (scrollinfo.nPosscrollinfo.nMax) { scrollinfo.nPos = scrollinfo.nMax; break; } SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); ScrollWindow(0,-10); break; case SB_PAGEUP: //单击滑块上方空白区域 scrollinfo.nPos -= 5; if (scrollinfo.nPos

VC改变对话框按钮字体颜色和背景的解决方案

要想修改CButton类按钮背景颜色和文字颜色,必须利用自绘方法对按钮进行重新绘制。这可以通过定义一个以CButton为基类的新按钮类来实现。以下为具体的实现方法: 方法一: 加入一个新类,类名:CMyButton,基类:CButton。 在头文件MyButton.h 中加入以下变量和函数定义: private: int m_Style; //按钮形状(0-正常,1-当前,2-按下,3-锁定) BOOL b_InRect; //鼠标进入标志 CString m_strText; //按钮文字 COLORREF m_ForeColor; //文本颜色 COLORREF m_BackColor; //背景色 COLORREF m_LockForeColor; //锁定按钮的文字颜色 CRect m_ButRect; //按钮尺寸 CFont* p_Font; //字体 void DrawButton(CDC *pDC); //画正常的按钮 // 接口函数 public: void SetText(CString str); void SetForeColor(COLORREF color); //设置文本颜色 void SetBkColor(COLORREF color); //设置背景颜色 void SetTextFont(int FontHight,LPCTSTR FontName); //设置字体 在MyButton.cpp 的构造函数中初始化变量: CMyButton::CMyButton() { m_Style = 0; //按钮形状风格 b_InRect = false; //鼠标进入标志 m_strText = _T(""); //按钮文字(使用默认文字) m_ForeColor = RGB(0,0,0); //文字颜色(黑色) m_BackColor = RGB(243,243,243); //背景色(灰白色) m_LockForeColor = GetSysColor(COLOR_GRAYTEXT); //锁定按钮的文字颜色p_Font = NULL; //字体指针 } 用ClassWizard添加下列消息函数: PreSubclassWindow(); DrawItem(); onMouse Move(); OnLButtonDown(); OnLButtonUp(); 在各函数内加入代码: void CMyButton::PreSubclassWindow() { ModifyStyle( 0, BS_OWNERDRAW ); //设置按钮属性为自画式 CButton::PreSubclassWindow();

实验名称MFC基本控件的使用

1、实验名称:MFC基本控件的使用 2、实验目的:掌握编辑框类及其方法,熟练掌握利用编辑框类开发基于MFC的应用 程序的方法。 3、实验内容:使用MFC AppWizard创建如图一所示的基于对话窗的应用程序,实现算 术加、减、乘和除运算。 图一 4、程序实现方法: (1)使用AppWizard建立应用程序框架 ①在进入Visual C++ 6.0的第一个界面下,选择MFC AppWizard(exe),在Project name 文本输入框中输入新建的项目名称“计数器”,并设置其所在位置,单击OK按钮,如图二所示。 图二Visual C++ 6.0的第一个界面 ②在MFC AppWizard的第一步中选择基本对话,如图三所示,其余的都采用默认选项。

图三MFC AppWizard的第一步界面 这样就建立了一个基于对话框的程序,如图四所示。 图四基于对话框的界面 (2)利用资源编辑器建立对话框 在图四的Resource View选项卡中打开Dialog资源组,本程序的工程文件名为计数器,因此,系统自动产生一个名为IDD_MY_DIALOG的资源文件,双击IDD_ MY_DIALOG,在右边的窗口中显示出待编辑的对话框。根据如图一所示的样式,利用Visual C++ 6.0的控键(Controls)建立对话框。 下面以“数据1”编辑框和“+”按钮为例介绍控件的创建过程,其他编辑框和按钮的创建可参照此操作: ①在图四中Controls的“编辑框”按钮上单击鼠标左键、在如图一所示的对话框编辑窗口上的“数据1”编辑框的位置上,按下鼠标左键,并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择Properties选项,此时弹出Edit Properties 属性设置对话框,如图五所示,在该对话框中输入ID属性。

vc之控件篇

VC之控件篇 1 使用Windows标准控件 1.1 常见控件列表 Windows标准控件即普通控件,撰写此文时,笔者每天面对的Word就带了一脸的控件,当然你肯定也熟悉:字体选择下拉框、工具栏、滚动条、状态栏,如此等等。 常见的Windows标准控件在VC里就有: 图2 控件集窗口 通常这个控件集窗口在你的对话框设计界面的附近总能找到,如果找不到,在VC工具栏的任何空白处点击右键,在弹出菜单的Controls菜单项前面打上勾即可,如图所示: 图3 显示控件集窗口

你也许已经看到了,我们图1所示的FlashPlayer中有3个控件是Windows标准控件,好,我们先系统地学习一下怎么使用这3个控件。 1.2 引入控件 1. 准备对话框 对话框相当于控件的容器,我们当然要先准备一个对话框。好办,直接创建一个基于对话框的工程就是了: 图4 准备对话框Step 1 注意,在Step 2中要确认“3D Controls”和“ActiveX Controls”前面打上勾,如图所示:

图5 准备对话框Step 2 这样你的程序就支持三维控件和我们后面即将使用到的ActiveX控件了。如果去掉了勾,或者你面对的正是你师兄当年准备论文的旧的project,它好像并不支持ActiveX控件,那该怎么办呢(好多VC网友总是带着那张哭丧脸的表情问我这种问题)?没事,在主程序文件的Ini tInstance()函数头部加上以下语句即可: 查看源代码拷贝至剪贴板打印代码 1.BOOL CFlashPlayerApp::InitInstance() 2.{ 3. AfxEnableControlContainer(); 4. 5.#ifdef _AFXDLL 6. Enable3dControls(); // Call this when using MFC in a shared DLL 7.#else 8. Enable3dControlsStatic(); // Call this when linking to MFC statically 9.#endif 10. 11.//… 12.}

VC设置对话框背景

VC设置对话框背景 少将2014-11-20 VC对话框默认的灰度背景实在是不美观,填充背景图成了改善用户界面的一个很好的选择。 首先在资源视图中添加一个位图资源,如命名为IDB_BMPBK。 在对话框中添加OnEraseBkgnd()事件处理函数,用于擦除背景进行重绘。其中添加的代码如下: BOOL DialogClass::OnEraseBkgnd(CDC* pDC) { //创建内存DC CDC MemDC; //CBitmap对象 CBitmap Bitmap,*pOldBitmap; //BITMAP句柄 BITMAP bm; //加载位图 Bitmap.LoadBitmap(IDB_BMPBK); //将位图资源与句柄绑定 Bitmap.GetObject(sizeof(BITMAP),&bm); //创建与内存兼容的DC MemDC.CreateCompatibleDC(pDC); //替换原位图 pOldBitmap=(CBitmap*)(MemDC.SelectObject(&Bitmap)); //获取绘制的区域 CRect rcClient; GetClientRect(&rcClient); //绘制到客户区 pDC->BitBlt(0,0,rcClient.Width(),rcClient.Height(),&MemDC,0,0,SRCCOPY); MemDC.SelectObject(pOldBitmap); MemDC.DeleteDC(); return TRUE; } 默认生成的OnEraseBkgnd()处理函数会有调用基类的处理函数然后再返回结果,要注意把这一句直接删除,然后直接返 TRUE。

MFC控件使用详细教程

使用Windows标准控件 我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。在Visual C++中,可以使用的控件分成三类: (1) Windows标准控件 Windows标准控件由Windows操作系统提供,在Windows 95中还提供了一些新增的控件。所有这些控件对象都是可编程的,我们可以使用Visual C++提供的对话框编辑器把它们添加到对话框中。Microsoft基础类库(MFC)提供了封装这些控件的类,它们列于表6.1。 表6.1 Windows标准控件

续表6.1 前面提到过,在MFC中,类CWnd是所有窗口类的基类,很自然的,它也是所有控件类的基类。Windows标准控件在以下环境下提供: ?Windows 95 ?Windows NT 3.51及以后版本 ?Win32s 1.3 ?注意: ?Visual C++ 4.2及以后版本不再支持Win32s。 (2) ActiveX控件

ActiveX控件可用于对话框中,也可用于HTML文档中。这种控件过去被称为OLE 控件。本书将在专门的章节中来讲述关于ActiveX控件的知识。这里仅指出ActiveX控件使用了与标准控件完全不同的接口和实现方法。 (3) 其它MFC控件类 除了Windows标准控件和自己编写的或者来自于第三方软件开发商的ActiveX 控件以外,MFC还提供了另外三种控件,它们由下面的三个类进行封装: ?类CBitmapButton用于创建以位图作为标签的按钮,位图按钮最多可以包括四个位图图片,分别代表按钮的四种不同状态。 ?类CCheckListBox用于创建选择列表框,这种列表框中的每一项前面有一个复选框,以决定该项是否被选中。 ?类CDragListBox用于创建一种特殊的列表框,这种列表框允许用户移动列表项。 在本章我们仅讲述第一类控件,即Windows标准控件。所涉及的内容包括各个控件的使用及相应的技巧。 第一节使用对话框编辑器和ClassWizard 对于大多数Windows标准控件,我们一般都使用对话框编辑器来将它们添加到对话框中。 图6. 1 在ResourceView中选择对话框 IDD_DIALOGDEMO_DIALOG

VC++自定义控件的建立及使用方法

VC++自定义控件的建立及使用方法 本文来自: https://www.wendangku.net/doc/6a18899614.html, 详细来源请参考:https://www.wendangku.net/doc/6a18899614.html,/techntxt/201298191132524755545 VC++自定义控件的建立及使用方法来源:https://www.wendangku.net/doc/6a18899614.html,/ 发布日期:2012-09-08 点击次数:168 发布者IP:218.25.20.78 VC++自定义控件的使用方法 一、VC++定义自定义控件与delphi,VB有些差异。delphi,vb在file-new-other中建立。vc++在工具栏中就有 自定义控件,但必须加入控件类型。许多书籍都在类向导中建立。我这里介绍的是手动建立,其结果是一样的 。 二.建立过自定义控件类型: 2.1、把工具栏上的自定义控件放入对话框中 2.2、建立Mycontrol.h, Mycontrol.cpp文件 2.3、Mycontrol.h中的定义是 #ifndef __MYCTROLTRL_H__ #define __MYCTROLTRL_H__ #define MYWNDCLASS "mycontrol" #include class CMycontrol: public CWnd { private: public: static BOOL RegisterWndClass(); CMycontrol(); void customfun();//一个自定义方法 }; #endif 2.4 Mycontrol.cpp中的实现部分 #include "StdAfx.h" #include "mycontrol.h" CMycontrol::CMycontrol() { CMycontrol::RegisterWndClass(); } //注册控件RegisterWndClass格式是固定的不要记忆没有那个必要直接拷贝粘贴就可以。 CMycontrol::RegisterWndClass() {

相关文档