文档库 最新最全的文档下载
当前位置:文档库 › VC 对话框自带滚动条的使用

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

VC 对话框自带滚动条的使用
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.nPos

{

scrollinfo.nPos = scrollinfo.nMin;

break;

}

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

ScrollWindow(0,10);

break;

case SB_LINEDOWN: //单击下箭头

scrollinfo.nPos += 1;

if (scrollinfo.nPos>scrollinfo.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

{

scrollinfo.nPos = scrollinfo.nMin;

break;

}

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

ScrollWindow(0,10*5);

break;

case SB_PAGEDOWN: //单击滑块下方空白区域

scrollinfo.nPos += 5;

if (scrollinfo.nPos>scrollinfo.nMax)

{

scrollinfo.nPos = scrollinfo.nMax;

break;

}

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

ScrollWindow(0,-10*5);

break;

case SB_ENDSCROLL: //鼠标离开滑块,结束滑块拖动// MessageBox("SB_ENDSCROLL");

break;

case SB_THUMBPOSITION:

// ScrollWindow(0,(scrollinfo.nPos-nPos)*10);

// scrollinfo.nPos = nPos;

// SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

break;

case SB_THUMBTRACK: //拖动滑块

ScrollWindow(0,(scrollinfo.nPos-nPos)*10);

scrollinfo.nPos = nPos;

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

break;

}

CDialog::OnVScroll(nSBCode, nPos, pScrollBar);

}

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,

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

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中对话框使用技巧集合

注:以下代码以一个名为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++对话框中使用表格控件的方法

在对话框中使用表格控件的方法: 将该控件改成“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"); 运行上面几行代码后的效果如下图所示。

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

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。

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

VC++自定义控件的建立及使用方法 本文来自: https://www.wendangku.net/doc/ea10162131.html, 详细来源请参考:https://www.wendangku.net/doc/ea10162131.html,/techntxt/201298191132524755545 VC++自定义控件的建立及使用方法来源:https://www.wendangku.net/doc/ea10162131.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() {

菜单与对话框

菜单与对话框 一、选择题 1.下列不能打开菜单编辑器的操作是_____。 A) 按Ctrl+E B) 单击工具栏中的“菜单编辑器”按钮 C) 执行“工具”菜单中的“菜单编辑器”命令 D) 按Shift+Alt+M 2.以下说法正确的是_____。 A) 任何时候都可以使用标准工具栏的“菜单编辑器“按钮打开菜单编辑器 B) 任何时候都可以使用“工具“菜单下的”菜单编辑器“命令打开菜单编辑器 C) 只有当某个窗体为当前活动窗体时,才能打开菜单编辑器 D) 只有当某个代码窗口为当前活动窗体时,才能打开菜单编辑器 3.假定有一个菜单项,名为MenuItem,为了在运行时该菜单项失效(变灰),应使用的语句为_____。 A) MenuItem.Enabled=False B) MenuItem.Enabled=True C) MenuItem.Visible=True D) MenuItem.Visible=False 4. 在下列关于菜单的说法中,错误的是_____。 A) 每一个菜单项都是一个控件,与其他控件一样都有自己的属性和事件 B) 除了Click事件之外,菜单项还能响应其他的如 DblClick等事件过程 C) 菜单项的快捷键不可以任意设置 D) 在程序执行时,如果菜单项的Enabled属性为False,则该菜单项变成灰色,不能 被用户选择 5. 以下叙述中错误的是_____。 A) 在同一窗体的菜单项中,不允许出现标题相同的菜单项 B) 在菜单的标题栏中,“&”所引导的字母指明了访问该菜单项的访问键 C) 程序运行过程中,可以重新设置菜单的Visible属性 D) 弹出式菜单也在菜单编辑器中定义 6. 如果要在程序中显示一个弹出式菜单,那么要调用Visual Basic中提供的方法_____。 A)Print B)Move C)Refresh D)PopupMenu 7. 假设在菜单编辑器中定义了一个菜单项,名为Menu1。为了在运行时隐藏该菜单项,应使用的语句是_____。 A) Menu1.Enabled=True B) Menu1.Enabled=False C) Menu1.Visible=True D) Menu1.Visible=False 8.如果要向工具箱中加入控件和部件,可以利用“工程”的菜单中的_____命令。 A) 引用 B) 部件 C) 工程属性 D) 添加窗体 https://www.wendangku.net/doc/ea10162131.html,monDialog控件可以显示_____对话框。 A)4种 B)5种 C)6种 D)7种 10. 以下叙述中错误的是_____。 A) 在程序运行时,通用对话框控件是不可见的 B) 在同一个程序中,用不同的方法(如ShowOpen或ShowSave等)打开的通用对话框具有不同的作用 C) 调用通用对话框控件的ShowOpen方法,可以直接打开在该通用对话框中指定的文件

菜单与对话框

菜单与对话框 (总分:34.00,做题时间:90分钟) 一、{{B}}选择题{{/B}}(总题数:13,分数:26.00) 1.如果设置了通用对话框的以下属性:DefaultExt="doc" FileName="c:/file1.txt",Filter= "应用程序|*.exe”,则显示“打开”对话框式,在“文件类型”下拉列表中的默认文件类型是 ______ 。 (分数:2.00) A.应用程序(*.ex √ B.*.doc C.*.txt D.不确定 解析: 2.以下叙述中错误的是______ 。 (分数:2.00) A.在同一窗体的菜单项中,不允许出现Name 属性相同的菜单项√ B.在菜单的标题栏中,“&”所引导的字母指明了访问该菜单项的访问键 C.程序运行过程中,可以重新设置菜单的Visible 属性 D.同一个窗体中的所有弹出式菜单都在同一个菜单编辑器中定义 解析: 3.假定已经在菜单编辑器中建立了窗体的弹出式菜单,其顶级菜单的名称为a1,其“可见”属性为False,则程序运行后,可以同时响应鼠标左键单击和右键单击的事件过程是 ______ 。 (分数:2.00) A.Private Sub Form_ MouseDown (Button As Integer, _ Shift As Integer, X As Single, Y As Singl If Button = 1 And Button = 2 Then PopupMenu al End If End Sub B.Private Sub Form_ MouseDown (Button As Integer, _ Shift As Integer, X As Single, Y As Singl PopupMenu a1 End Sub √ C.Private Sub Form_ MouseDown (Button As Integer, _ Shift As Integer, X As Single, Y As Singl If Button = 1 Then PopupMenu a 1 End If End Sub D.Private Sub Form_ MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Singl If Button = 2 Then PopupMenu a 1 End If End Sub 解析: 4.在窗体上画一个通用对话框,其名称为CommonDialog1,然后画一个名为Command1的命令按钮,并编写如下事件过程: Private Sub Command1_ Click() CommonDialog1. Flags= cd10FNHideReadOnly CommonDialog1. Filter= "All Files (*.*) |*.*|Text File" & _ "(*.txt) |*.txt | Batch Files (*.bat)| *.bat" CommonDialog1. FilterIndex = 2 CommonDialog1. ShowOpen MsgBox CommonDialog1. FileName End Sub程序运行后,单击命令按钮,将显示一个“打开”对话框,此时在“文件类型”框中显示的是______ 。 (分数:2.00) A.All Files (*.*) B.Text Files(*.tx √ C.Batch Files (*.ba D.不确定 解析: 5.如果要在菜单中添加一个分隔线,则应将其Caption 属性设置为______ 。 (分数:2.00) A.= B.* C.&

从零开始学VC系列教程 二.对话框及常用控件实验

从零开始学VC系列教程二. 对话框及常用控件实验 恭喜你,进入VC学习的第二节了.这一节是人机交互的基础.所谓人机交互,说通俗点就是与机器对话.然而我们现在的技术还不能像科幻片里一样与机器人直接说话就行了.所以,我们的操作意图还得通过文本输入,命令按钮等等来实现. 本节内容:学会对话框调用及一些常用控件的使用方法. 学习目的:学习人机交互,为软件开发提供界面基础. 1.新建工程.参考第一节的方法新建一个工程,名字为Eg02完成后如下图 细心的朋友一定会发现.新建的工程里还有一个对话框,ID名是IDD_ABOUTBOX这个是做什么用的呢?我们用到的软件都会有一个版权声明.通过第一章的学习,大家应该知道怎么观看这个IDD_ABOUTBOX对话框了吧.没错!双击IDD_ABOUTBOX就可以了.我们会看到如下的一个对话框 这就是我们这个程序的关于对话框,一般用于版权声明及版本号标识.大家看到的这个对话框里有两个静态文本框和一个图像框(Picture),静态文本框我们在前一节已经介绍过了.大家可以修改一下版权所有这一行,填什么都可以,签个大名也行.完成以后你一定想看看效果,这个对话框怎么打开呢?其实VC已经为我们做好了.先按F7编译,然后按F5运行.大家可以看到

程序运行了. 单击应用程序图标,就会出现一个菜单,选最后一个[关于Eg02],关于对话框就弹出来了. 当然,这是系统为我们做好的.自己怎么在程序中调用这个对话框呢?为了演示,首先参考第一节的内容添加一个按钮,然后把按钮的ID改为IDC_BTN_ABOUTME,把标题,也就是Caption 改为[关于].最终效果如下 下面我们为按钮添加代码.相信大家一定还记得怎么进入代码吧..对了,双击[关于]按钮,在弹出的对话框中点[确定]就可以了.为了让大家更好的理解下面的操作,我们先要解释一下关于对话框的类.VC向导会为关于对话框建立一个类,大家看看下面的图

VC环境下在对话框中动态生成视图的方法

VC环境下在对话框中动态生成视图的方法 吴超 摘要阐述利用VC++进行软件开发中,如何在对话框中动态生成自定义视图的一种方法,并给出了具体实现步骤和代码。关键词动态生成视图 The method of creating dynamical view in dialog under VC environment Wu Chao Abstract Illustrating one method of creating custom dynamical view in dialog during VC++ software development work, and giving concrete steps and codes. Abstract Dynamic create View 0引言 在VC++开发的C/S软件中,对话框是Windows应用程序中最重要的用户界面元素之一。对话框中,数据一般只能显示在编辑框、列表框或树形控件等自带控件中,如需在对话框中将众多数据用自绘的曲线图或柱形图来显示,特别是通过对话框控件来控制和管理视图,以达到对数据有效处理和显示目的,就必须通过在对话框中动态生成自定义视图来实现。本文介绍了一种在对话框中增加视图的有效方法,通过了相关测试并给出应用实例。 1实现技术方法 对话框(Dialog) 实际上是一个窗口, 在MFC中对话框的 功能被封装在 CDialog类中,是 CWnd类的派生类, 而CView或其子类 CScrollView也派生 自CWnd类,如图1。 因此,在对话框中添 加视图,不能通过类 的继承或派生来简单实现,需要手工添加相关代码,涉及到下列技术方法,具体有四个步骤。 1.1添加CMyAddView 1.1.1 添加新类 Insert一个视图类CMyAddView,使其从CScrollView派生,当视图设置范围超过窗口大小时,会自动生成滚动条。 1.1.2 定义资源和变量 在视图类定义中加入视图资源定义“enum { IDD = IDD_SCROLL_VIEW};”和被使用的对话框指针“CMyAddViewDlg *pViewDlg;”语句。 在MyAddView.h 文件中引用“class CMyAddViewDlg;”,并在Resource.h文件中,添加资源定义代码“#define IDD_SCROLL_VIEW 107”,并将OnInitialUpdate函数变为公有函数。 1.1.3 为pViewDlg赋值 在CMyAddView的OnInitialUpdate函数中,为视图的父对话框指针赋值,增加“pViewDlg = (CMyAddViewDlg *) GetParentOwner();”。 1.2在对话框中加入指针变量 1.2.1 增加视图指针变量 在CMyAddViewDlg对话框中添加指向视图的指针变量“CMyAddView* m_pWnd;”。 1.2.2 添加AddView函数 BOOL CMyAddViewDlg::AddView(LPCTSTR lpszLabel, CRuntimeClass *pViewClass) { TRY { m_pWnd = (CMyAddView *)pViewClass->CreateObject(); if (m_pWnd == NULL) { AfxThrowMemoryException(); } } CATCH_ALL(e) { return FALSE; } END_CATCH_ALL DWORD dwStyle = AFX_WS_DEFAULT_VIEW; // 以下代码定义视图在对话框中的位置,数值以改变视图边框在对话框中的相对位置 CRect rect; 图1 类的继承关系

如何在VC++中两个对话框相互传递信息

如何在VC++中两个对话框相互传递信息 (2010-12-11 17:40:12) 在VC++中,打开对话框一般是用DoModal()函数调用模态对话框,但是模态对话框只能在对弹出的当前子窗口进行操作,而不能对父窗口进行操作,也无法传递数据到父窗口中,根据笔者的研究发现,采用非模态对话框的模式可以很好的解决这一问题。 在VS2008中新建一个就有MFC应用程序的Project项目,在弹出的MFC 应用程序向导中选择“基于对话框”,取消“使用Unicode库”,单击完成。在“资源视图”里面添加一个对话框,默认ID为IDD_DIALOG1。 双击IDD_DIALOG1对话框,在弹出的MFC类向导中,类名填写CSonDialog,基类选择CDialog,单击完成。这样我们就将新建的IDD_DIALOG1关联上一个基于CDialog的类了。 在父窗口上添加一个按钮,双击,便可进入这个按钮的消息响应函数。在最上面包含CSonDialog的头文件#include “SonDialog.h”。如果在消息响应函数中写入如下代码: CSonDialog SonWnd; SonWnd.DoModal(); 运行之后按下父窗口上的按钮,可以发现弹出了IDD_DIALOG1,但是只能在IDD_DIALOG1上操作,无法操作父窗口。如果想要在弹出子窗口后还可以操作父窗口的话,需要采用非模态对话框的模式弹出子窗口。 MFC在CDialog类中有一个Create(UINT nIDTemplate, CWnd *pParentWnd = 0),这个函数可以创建一个Dialog,其中参数nIDTemplate为需要创建的Dialog 的ID。同时还有一个函数ShowWindow(int nCmdShow),用来显示创建的这个Dialog。在消息响应函数中写入如下代码: CSonDialog SonWnd; SonWnd.Create(IDD_DIALOG1); SonWnd.ShowWindow(SW_SHOW); 运行之后按下父窗口上的按钮发现窗口闪了一下,然后就消失了。这是因为对象SonWnd是一个局部对象,在运行完SonWnd.ShowWindow(SW_SHOW)这条语句之后便退出了消息响应函数,因此SonWnd对象也就被销毁了。如果想要退出消息响应函数之后窗口依然存在,则需要将SonWnd定义为一个全局变量。因此在ProjectDlg.h中添加一个CSonDialog SonWnd的定义,同时由于VC++在

Visual C++(VC)中“选择文件夹”对话框的程序的编写

Visual C++(VC)中“选择文件夹”对话框的程序的编写 2010-04-1001:07A.M. 在实际的MFC编程当中,常常需要弹出对话框选择文件、选择目录等操作,对于选择文件,用CFileDialog就可以很简单的解决,而对于选择目录,则稍稍需要多一些步骤,需要自己创建Dialog。首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加如下代码。 void CDialog::OnButtonBrowser() { //TODO:Add your control notification handler code here UpdateData(TRUE); char szDir[MAX_PATH]; BROWSEINFO bi; ITEMIDLIST*pidl; bi.hwndOwner=this->m_hWnd;//指定父窗口,在对话框显示期间,父窗口将被禁用 bi.pidlRoot=NULL;//如果指定NULL,就以“桌面”为根 bi.pszDisplayName=szDir; bi.lpszTitle="请选择目录";//这一行将显示在对话框的顶端 bi.ulFlags=BIF_STATUSTEXT|BIF_USENEWUI|BIF_RETURNONLYFSDIRS; bi.lpfn=NULL; bi.lParam=0; bi.iImage=0; pidl=SHBrowseForFolder(&bi); if(pidl==NULL)return; if(!SHGetPathFromIDList(pidl,szDir))return; else m_strPath=szDir; UpdateData(FALSE); } 当程序启动起来的时候,点击按钮,就会弹出如下的选择目录的对话框

VC-6.0-下MFC基于对话框-绘制图形

VC-6.0-下MFC基于对话框-绘制图形

附录表 一、具体步骤: 1、选择菜单栏的“新建”,选择MFC项目名为DrawGraphics,并设置为基于对话框的项目,如图-1、图-2所示; 图-1

图-2 2、按下键盘上的Ctrl+W键,调出类向导,选择“Add Class”,并点击“New”添加一个颜色按钮类CColorButton,继承自CButton类,如图-3所示:

图-3 3、在CColorButton中添加如下成员变量: COLORREF color; //按钮颜色 CPoint arrays[4]; //按钮顶点坐标 BOOL IsShow; //是 否显示按钮 BOOL IsPressed; //按 钮是否被按下

4、右击CColorButton类,选择Add Virtul function ,重写其DraItem函数,如图-4,图-5所示: 图-4 图-5

5、为其Drawitem函数中添加如下代码: CRect rect; GetClientRect(rect); CDC dc; dc.Attach(lpDrawItemStruct->hDC); arrays[0]=CPoint(rect.left,rect.top); arrays[1]=CPoint(rect.right,rect.top); arrays[2]=CPoint(rect.right,rect.bottom); arrays[3]=CPoint(rect.left,rect.bottom); //设置背景透明 dc.SetBkMode(TRANSPARENT); if (IsShow) { //创建一个位图画刷 CBrush brush(color); dc.SelectObject(&brush); CPen pen(PS_NULL,1,color); dc.SelectObject(&pen);

相关文档
相关文档 最新文档