GridCtrl控件在单文档对话框中的使用步骤 1 在对话框中加入自定义

GridCtrl控件在单文档对话框中的使用步骤 1 在对话框中加入自定义
GridCtrl控件在单文档对话框中的使用步骤 1 在对话框中加入自定义

GridCtrl控件在单文档对话框中的使用步骤

1

在对话框中加入自定义控件(人头那个)设置CLASS为MFCGridCtrl 如图:

2把GridCtrl的源文件都加入到你的工程中(如果加入后类向导classwird不识别可保存工程关闭然后从新启动工程)

3在你加入控件的对话框类中包含#include “GridCtrl.h”(如果编译时找不到该类可以包含GridCtrl.h所在目录的完整路径名,如:”C:\xxx\xxx\xxx\ GridCtrl.h”)

4在你加入控件的对话框类中创建一个GridCtrl对象

CGridCtrl m_Grid;

5在对话框类的DoDataExchange()函数中加入

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(Ckj)

// NOTE: the ClassWizard will add DDX and DDV calls here

DDX_GridControl(pDX, IDC_GRID, m_Grid);

//}}AFX_DATA_MAP

6在对话框类的OnInitDialog ()函数初始化GridCtr对象。

比如:

BOOL Ckj::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

/* m_Grid.SetColumnCount(3); // 设定总共的列数

m_Grid.SetRowCount(1); // 设定总共的行数

m_Grid.SetFixedRowCount(1); // 设定固定行数

m_Grid.SetItemText(0,0,"属性"); // SetItemText 用来设定某行某列的具体文本数值

m_Grid.SetItemText(0,1,"标准值");

m_Grid.SetItemText(0,2,"当前值");

// 可以通过

// m_AttrGrid.SetItemState(i,0,GVIS_READONLY);

// m_AttrGrid.SetItemState(i,1,GVIS_READONLY);

/// 来设置单元格是否只读

CRect GRect;

m_Grid.GetWindowRect(&GRect); // 得到控件的宽度

m_Grid.SetColumnWidth(0,GRect.Width()/3-2); // 设定没列的宽度

m_Grid.SetColumnWidth(1,GRect.Width()/3-2);

m_Grid.SetColumnWidth(2,GRect.Width()/3-2);*/

m_Grid.SetRowCount(20); //我大概是设置该表格的最大行数

m_Grid.SetFixedRowCount(1); //我设置表的固定行数

m_Grid.SetColumnCount(5); //我设置表的列数

m_Grid.SetFixedColumnCount(1); //我设置表的固定列数

m_Grid.SetRowResize(true); //我是否可设置行的大小

// m_GridCtrl.SetComboBoxStyle(CBS_DROPDOWNLIST);

CStringArray col1,col4; //我定义一个字符串数组

col1.Add("single"); //我加入字段的值

col1.Add("double");

col4.Add("test1");

col4.Add("test2");

col4.Add("test3");

// m_Grid.AddComboColumn(1,col1); //我设置第1列为下拉式列表框

// m_Grid.AddComboColumn(4,col4); //我设置第4列为下拉式列表框

// fill rows/cols with text

for (int row = 0; row < m_Grid.GetRowCount(); row++) // 将表的内容填入表格中for (int col = 0; col < m_Grid.GetColumnCount(); col++)

{

GV_ITEM Item; //我用GV_ITEM 结构体中的值来设置单元格的内容.

Item.mask = GVIF_TEXT|GVIF_FORMAT; //我所输入信息的灰度

Item.row = row; //输入信息的行位置

Item.col = col; //输入信息的列位置

if (row < m_Grid.GetFixedRowCount()) {

Item.nFormat = DT_LEFT|DT_WORDBREAK; //输入信息的格式

// Item.szText.Format(_T("Column %d"),col); //设置表格的文本形式} else if (col < m_Grid.GetFixedColumnCount()) {

Item.nFormat = DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; // Item.szText.Format(_T("Row %d"),row);

} else {

Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;

// Item.szText.Format(_T("%d"),row*col);

}

m_Grid.SetItem(&Item); //将输入信息填入表格

}

// m_Grid.AutoSize(); //对单元表格的高度与宽度进行自动设置

CRect GRect;

m_Grid.GetWindowRect(&GRect); // 得到控件的宽度

m_Grid.SetColumnWidth(0,GRect.Width()/3-2); // 设定没列的宽度

m_Grid.SetColumnWidth(1,GRect.Width()/3-2);

m_Grid.SetColumnWidth(2,GRect.Width()/3-2);

6.7 Windows通用对话框

任务六对话框应用程序设计 6.7 Windows通用对话框 Windows通用对话框是由操作系统提供的任何应用程序都可以获得的对话框。在VC++中,对这些对话框进行了封装,使用户在开发程序时可以方便的调用这些对话框。 6.7.1 使用“文件”对话框打开和保存文件 主程序名:FileDialog 1、添加两个按钮控件,一个编辑框控件,两个静态文本控件

2、为控件关联变量 3、编辑“打开”按钮,编辑程序 void CFileDialogDlg::OnOpen() { // TODO: Add your control notification handler code here CFileDialog

dlg(TRUE,NULL,NULL,OFN_HIDEREADONL Y|OFN_OVERWRITEPROMPT, "All Files(*.TXT)|*.TXT||",AfxGetMainWnd()); CString strPath,strText=""; if(dlg.DoModal() == IDOK) { strPath = dlg.GetPathName(); m_OpenPath.SetWindowText(strPath); CFile file(strPath,CFile::modeRead); char read[10000]; file.Read(read,10000); for(int i=0;i

第六章 对话框控件

学习目标: ?掌握CommonDialog。 ?掌握文件操作相关的对话框。 ?理解打印对话框。 6.1对话框: 对话框是一种用户界面接口,用于同用户进行交互,完成一些特定的任务,简单的对话框有对用户操作进行提示的对话框,对重要操作要求用户进行决定的交互对话框等。 这类任务能被独立出来,作为通用的交互处理过程。这些能被独立出来作为通用交互过程的任务常见如下一些: (1)文件选取。 (2)保存设置。 (3)路径选取。 (4)字体选取。 (5)颜色选取。 (6)打印设置。 (7)打印预览框。 在.NET中这些组件是在monDialog的基础上发展而来。

6.1.1Common pialog: CommonDialog是.NET中对话框组件的基础,它是System.Windows.Forms命名空间下的一个抽象类,在程序中不能直接使用。 CommonDialog公开了2个方法和一个属性,即:ShowDialog()/ShowDialog(IWin32Window)方法和Reset()方法以及Tag属性。 ShowDialog是用于显示对话框。ShowDialog()有一个重载形式:ShowDialog(IWin32Window),IWin32Window在这里指一个窗口句柄,在调用中,这个参数应该被赋值成要显示的对话框的父窗体。 注意:句柄是Window中的一个常用词语,可以把它理解为一个标识符号,只是这个标识符号是一个数字。相应的窗口句柄就是窗口的标标识符。 Reset方法: 使用过程中可能改变初始值,当需要让所有的初值回到原来的状态时,调用Reset能达到目的。 Tag属性: Tag没有具体含义,它可以让用户在对话框控件中存储、维护自己的数据。这个数据由用户自己的代码解释。 对话框的返回值(ShowDialog的返回值): 对话框通过调用ShowDialog()调用后,返回一个类型为DialogResult 值,其中DialogResult.OK指出用户成功完成了操作,成功选取了文

MFC对话框向主窗体传递消息机制

对话框向主窗体传递消息,在视图中显示 现举例说明对话框向主窗体传递消息,以及主窗体响应消息的过程。我们拿单文档来说明,我们要实现下列功能:通过对话框,在文本框中输入字符串,在视图中显示刚才输入的字符串。 1、在应用程序向导中选择单个文档,然后完成。我这里的项目名称为mybook 2、在资源视图中,插入一对话框,对话框名称为dlg_wzm。 3、在刚才生成的对话框中插入一文本框,设置好相应的类和变量。为确认按钮生成响应函数。同时在mybook.cpp的BOOL CMyBookApp::InitInstance()函数中让该对话框启动,也就是加入CDlg_wzm dlg; dlg.DoModal();两行程序,当然在前面的要加入#include "dlg_wzm.h"。(详细过程略) 4、下面重点在于点击该对话框的确认按钮向主窗体发送消息。要现定义一个消息名称。

在stdafx.h文件中加入一行: #define WM_MYMESSAGE WM_USER+100 5、在CMainFrame的pulic申明中加入一变量CString wzmstr。目的是为了保存对话框中的字符串的值。在对话框的Onok()函数中: void CDlg_wzm::OnOK() { // TODO: Add extra validation here this->UpdateData(true); CMainFrame* pWnd=(CMainFrame*)AfxGetMainWnd(); //得到父窗体的指针 pWnd->wzmstr=this->m_input_edit; ASSERT(pWnd!=NULL); ::SendMessage(pWnd->GetSafeHwnd(), WM_MYMESSAGE,0,0); //发送消息 //注意WM_MYMESSAGE就是我们前面定义的消息。 //CDialog::OnOK(); } 6、下面我们看看主窗体怎么接受消息。我们要在主窗体中设置消息映射。 在mainfrm.h的protected声明中: afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); 在mainfrm.cpp文件中, BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code ! ON_WM_CREATE() ON_MESSAGE(WM_MYMESSAGE,OnMyMessage) //这里是我们加入的。 //}}AFX_MSG_MAP END_MESSAGE_MAP() 然后在mainfrm.cpp的文件最下面加入一个函数: void CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam) { CView *pView=this->GetActiveView(); //得到视图指针 if(pView)

在CFileDialog对话框中添加控件

在CFileDialog对话框中添加控件 关键字:CFileDialog扩展类,OFNHookProc 需求描述:昨天遇到一个用户需求,在CFileDialog对话框(SAVE)中加入一个Check , 一个Edit,一个Spin控件,dlg.Domodal()==IDOK返回时要同时获得Edit控件中的数据. 实现方法:如果只需要控制控件,用方法一即可,但如果需要获取数据,则只能用方法二。我最终用的就是方法二. 方法一: 首先查找MSDN关于CFileDialog扩展的实现描述,上网查到实现预览图片式的CFILEDIALOG的例子。按照其思路从CFileDialog派生了一个新的类CFileDialogEX. 在类中添加以下代码 #define WM_CHECKZOOMIN WM_USER+1856 public: BOOL bZoomIn; UINT nMul; //[1~100] //前置声明--------------- BOOL NEAR CALLBACK HandleNotify(HWND hDlg, LPOFNOTIFY pofn); UINT_PTR CALLBACK OFNHookProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); // CFileDialogEx IMPLEMENT_DYNAMIC(CFileDialogEx, CFileDialog) CFileDialogEx::CFileDialogEx(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) { //这个四个常用标识位 m_ofn.Flags |= OFN_ENABLETEMPLATE |OFN_HIDEREADONLY |OFN_EXPLORER; //OFN_EXPLORER | OFN_ENABLEHOOK

MFC对话框程序中的各组件常用方法

MFC对话框程序中的各组件常用方法: Static Text: 将ID号改成唯一的一个,如:IDC_XX,然后进一次类向导点确定产生这个ID,之后更改Caption属性: GetDlgItem(IDC_XX)->SetWindowText(L"dsgdhfgdffd"); 设置字体: CFont *pFont = new CFont; pFont->CreatePointFont(120,_T("华文行楷")); GetDlgItem(IDC_XX)->SetFont(pFont); Edit Control: 设置文本: SetDlgItemText(IDC_XX,L"iuewurebfdjf"); 获取所有输入: 建立类向导创建一个成员变量(假设是shuru1,shuru2……)类型选value,变量类型任选。 UpdateData(true); GetDlgItem(IDC_XX)->SetWindowText(shuru1); 第一句更新所有建立了变量的对话框组件,获取输入的值。第二句将前面的IDC_XX的静态文本内容改为shuru1输入的内容。 若类型选用control: 1.设置只读属性: shuru1.SetReadOnly(true); 2.判断edit中光标状态并得到选中内容(richedit同样适用) int nStart, nEnd; CString strTemp; shuru1.GetSel(nStart, nEnd); if(nStart == nEnd) { strTemp.Format(_T(" 光标在%d" ), nStart); AfxMessageBox(strTemp); } else { //得到edit选中的内容 shuru1.GetWindowText(strTemp); strTemp = strTemp.Mid(nStart,nEnd-nStart); AfxMessageBox(strTemp); } 其中nStart和nEnd分别表示光标的起始和终止位置,从0开始。strTemp.Format 方法用于格式化字符串。AfxMessageBox(strTemp)显示一个提示对话框,其内容是字符串strTemp。 strTemp = strTemp.Mid(nStart,nEnd-nStart)返回一个被截取的字符串,从nStart开始,长度为nEnd-nStart。如果nStart == nEnd说明没有选择文本。 注:SetSel(0,-1)表示全选;SetSel(-1,i)表示删除所选。

用VC++MFC做文本编辑器(单文档模式)

用VC++MFC做文本编辑器(单文档模式)(2007-7-6 17:06:00) 原来做过一个用对话框实现的文本编辑器,其实用MFC模板里面的单文档模板也可以做,甚至更加方便,适合入门级的爱好者试试,现介绍方法如下: 1,首先新建一个工程,选择MFC AppWizard(exe),定名字为:textview_1,程序类型选择单个文档,其他均默认完成。 2,在系统自动生成的CTextview_1Doc类里面增加一个控件,用于文本文档的暂时存放: class CTextview_1Doc : public CDocument { ...... public: CStringArray m_strContent; } 然后在CTextview_1Doc类的Serialize函数里面增加打开、保存文本文件的程序: void CTextview_1Doc::Serialize(CArchive& ar) { CString str; if (ar.IsStoring()) { // TODO: add storing code here int nLines = (int)m_strContent.GetSize(); for ( int i=0; i

1C#程序设计第十章课后习题答案

单选: (1).NET中的大多数控件都派生于(C)类 A.Class B.From C.Control D.Object (2)在以下控件中,可用于输入数据的是(B) bel B.TextBox C.Button D.PictureBox (3)在以下控件中,可实现多项选择的是(A) A.CheckBox B.RadioButton boBox D.NumericUpDown (4)不属于容器控件的是(C) A.GroupBox B.Panel C.MenuStrip D.TapControl (5)(B)控件组合了TextBox控件和ListBox控件的功能。 bel boBox C.ProgressBar D.PictureBox (6)让控件不可以使用的属性是以下哪一个?B A.AllowDrop B.Enabled C.Bounds D.Visible (7)让控件不可显示的属性是以下哪一个?D A.AllowDrop B.Enabled C.Bounds D.Visible (8)不能用于设置控件布局位置的属性是(C) A.Left B.Top C.Size D.Location (9)可用来设置文字颜色的属性是(B) A.BackColor B.ForeColor C.Text D.Parent (10)TextBox控件的(B)属性将输入的字符代替显示为指定的密码字符。 A.Text B.PasswordChar C.TextAlign D.Multiline (11)所有控件都一定具有的属性是(D) A.Text B.BackColor C.Items (12)当用户鼠标左键单击窗体或控件系统将触发(D)事件 A.Activated B.Load C.DoubleClick D.Click (13)用户修改了文本框中的内容时,系统将触发(A)事件。 A.xtChanged B.CheckedChanfed C.SelectedIndexChanged D.SizeChanged (14)在列表框或组合框中,当用户重新选择另一个选项时,系统将触发(C)事件。A.TextChanged B.CheckedChanged C.SelectedIndexChanged D.SizeChanged (15)有关模态对话框说法错误的是(A) A.模态对话框允许用户单击该对话框之外的区域 B.模态对话框通常没有最大化、最小化按钮 C.模态对话框使用ShowDialog方法显示 D.模态对话框不能使用鼠标改变窗体大小 (16)当复选框能够显示2种状态时,可通过它的(C)属性来设置或返回复选框的状态。 A.Enabled B.Visible C.Checked D.Text (17)要使用ListBox控件多选的情况下,可使用它的(A)属性设置为true。 A.SelectionMode B.SelectedItem C.SelectedValue D.ImeMode (18)在允许ListBox控件多选的情况下,可以使用它的(B)属性值来访问已选中的选项。 A.SelectionMode B.SelectedItem C.SelectedValue D.SelectedIndex (19)要使PictureBox中显示的图片刚好填满整个图片框,应把它的(D)属性值设为PictureBoxSizeMode.StretchImage。 A.Enabled B.Visible C.ImageLocation D.SizeMode (20)Timer控件的(A)属性用来是指定时器Tick事件发生的时间间隔

vb通用对话框

CommonDialog 控件提供一组标准的操作对话框,进行诸如打开和保存文件,设置打印选项,以及选择颜色和字体等操作。通过运行Windows 帮助引擎控件还能显示帮助。 CommonDialog 控件在Visual Basic 和Microsoft Windows 动态连接库Commdlg.dll 例程之间提供了接口。为了用该控件创建对话框,必须要求Commdlg.dll 在Microsoft Windows \System 目录下。 为了在应用程序中使用CommonDialog 控件,应将其添加到窗体上并设置属性。控件显示的对话由控件的方法决定。运行时,调用相应方法后将显示对话框或执行帮助引擎;设计时在窗体上将CommonDialog 控件显示成一个图标。此图标的大小不能改变。 CommonDialog 控件可以显示如下常用对话框: “打开” “另存为” “颜色” “字体” “打印” 注意无法指定对话框显示在什么地方。 要使用CommonDialog 控件 若未添加CommonDialog 控件,则应从“工程”菜单中选定“部件”,将控件添加到工具箱中。在标记对话的“控件”中找到并选定控件,然后单击“确定”按钮。 单击工具箱中的“CommonDialog”控件并在窗体上绘制该控件。 在窗体上绘制CommonDialog 控件时,控件将自动调整大小。象Timer 控件一样,CommonDialog 控件在运行时不可见。 运行时,请适当使用下表所列方法显示需要的对话。方法显示的对话 ShowOpen 打开 ShowSave 另存为 ShowColor 颜色 ShowFont 字体 ShowPrinter 打印 ShowHelp 调用Windo ws“帮助” 示例代码: 下例显示“打开”对话框然后在信息框中显示所选的文件名: Private Sub Command1_Click()

VS2010和MFC编程入门之2(利用MFC向导生成单文档应用程序框架)

VS2010/MFC编程入门之二(利用MFC向导生成单文档 应用程序框架) 这里给大家一个简单的例子,演示如何生成单文档应用程序框架。 解决方案与工程 在VS2010的使用介绍中已经讲了解决方案与工程的概念,这里再重提一下。每个应用程序都作为一个工程来处理,它包含了头文件、源文件和资源文件等,这些文件通过工程集中管理。在VS2010中,工程都是在解决方案管理之下的。一个解决方案可以管理多个工程,可以把解决方案理解为多个有关系或者没有关系的工程的集合。VS2010提供了一个Solution Explorer解决方案浏览器视图,可以显示当前解决方案的内容,当新建一个工程时可以选择新建一个解决方案还是加入当前解决方案。 下图左侧面板中正在显示的视图就是Solution Explorer,视图中有一个解决方案-HelloWorld,此解决方案下有一个同名的工程-HelloWorld。 在应用程序向导生成应用程序后,VS2010会在用户设置的路径下,以解决方案名为名称建立一个目录,里面存放自动生成的文件。 使用VS2010应用程序向导生成单文档应用程序框架

这里简略演示下怎样生成单文档应用程序框架,让大家先有个直观的了解,有不理解的地方可以留着以后回来再看。下面按照操作步骤一步步讲解: 1.点菜单栏File->New->Project,弹出New Project对话框,我们可以选择工程类型。 如果安装完VS2010以后第一启动时已经设置为VC++,则Installed Templates->Visual C++项会默认展开,而如果没有设置VC++,则可以展开到Installed Templates->Other Languages->Visual C++项。因为我们要生成的是MFC程序,所以在“Visual C++”下选择“MFC”,对话框中间区域会出现三个选项:MFC ActiveX Control、MFC Application和MFC DLL。MFC ActiveX Control用来生成MFC ActiveX控件程序。MFC Application用来生成MFC应用程序。MFC DLL用来生成MFC动态链接库程序。当然我们要选择MFC Application。 在对话框下部有Name、Location和Solution name三个设置项。意义如下:Name--工程名,Location--解决方案路径,Solution name--解决方案名称。这里Name 我们设为“HelloWorld”,Location设置为“桌面”的路径,Solution name默认和Name一样,当然可以修改为其他名字,这里我们不作修改,也使用“HelloWorld”。点“OK”按钮。

【精品报告】常用中后台交互设计控件使用场景与规范总结

常用中后台交互设计控件使用场景与规范总结 最近刚完成平台安畅云 2.0 的改版设计,平台模块很多,经常存在很多类似的页面和组件,若不制定统一的规范和控件,则会导致很多重复的工作,大大降低产品的设计效率; 同时,平台的一致性也得不到保障。 所以,我们视觉、交互、前端的小伙伴们针对我们踩过的坑,大家认真总结和提炼出一个 符合公司定位的设计规范,统一公司项目的前端 UI 设计,规避不必要的设计差异和实现 成本,实现设计和前端资源的效率最大化。 此设计规范主要分享了中后台常用设计组件的定义、组成、使用场景及注意事项。 字体 概述 字体是界面设计中最基本的构成元素之一,用户通过文字来理解内容和完成任务,合适的 字体将大大提升用户的阅读体验及工作效率。在安畅云项目的字体使用中,为了使页面的 视觉层次更加清晰,我们从以下三方面来使平台的字体符合易阅读和美观的要求。 合理的使用不同的字重、字号和颜色来强调界面中需要突出的信息; 尽量使用单种字体,使用多种字体会让界面看起来零散和杂乱无章; 遵循 WCAG 2.0 标准(标准详情见 https:///Translations/WCAG20- zh/#visual-audio-contrast),字体在使用时与背景颜色的对比值满足无障碍阅读的最 低标准。 字体使用建议 中文字体优先级:PingFang SC、Hiragino Sans GB 、Microsoft YaHei(平台使用字体)英文字体优先级:Helvetica Neue、Helvetica、Arial(平台使用字体)

字号使用建议 行高使用建议 行高也是影响用户阅读体验的重要因素之一,我们查阅资料得知西文的基本行高通常是字号的 1.2em 左右,而中文因为字符复杂,所以中文行高需要更大。现在公认1.5em 至1.8em 之间会有一个比较好的视觉阅读效果。 安畅云项目行高计算公式:行高值=字号 x 1.5,例如:12 号字体的行高为 18px,14 号字体的行高为 21px。

4 对话框及常用控件 (第四章 对话框和常用控件)

1.什么是对话框?它分为哪两类?这两类对话框有哪些不同? 答:对话框是一种特殊的窗口,主要功能是输出信息和接收用户的输入。对话框分为有模式对话框和无模式对话框。当一个有模式对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。而无模式对话框打开时,用户可以同时打开其他窗口对象,操作完毕后,又可用鼠标或其他方式激活该窗口。 2.什么是对话框模板、对话框资源和对话框类? 答:对话框模板是一个描述对话框的内存结构,用于添加控件及其布局。对话框资源指快捷键、对话框、菜单、字符串、工具栏按钮、图表、版本信息等。对话框类用于实现对话框功能。 3.对一个对话框编程一般经过几个步骤? 答:1. 在资源编辑器中画对话框,添加控件,设定控件位置、大小、ID和其它属性; 2. 定义对话框回调函数,添加控件的事件处理函数; 3. 注册对话框函数 4、什么是控件?根据控件的性质可以将控件分为几类? 答:在Windows中所用的按钮控件是用来实现一种开与关的输入。 常见按钮类型:按键按钮、单选按钮、复选框按钮。 5.向对话框添加一个常用控件的方法有哪些?这些方法是否使用于ActiveX控件? 答:1、先点击控件,然后在对话框上单击, 2、先点击控件,然后在对话框上点住不放,画出像要的大小。 否。 6.什么是DDV/DDX技术?如何使用这种技术? 答:DDX(对话框数据交换)机制用来初始化对话框中的数据,并向应用程序返回数据,它使得用户向对话框加载对象数据和当对话框关闭时恢复其中的数据这两个过程自动化。 DDV(对话框数据验证有效性)机制用于将数据返回成员变量之前将数据的长度和范围有效化。 7.什么是空间的通知消息?它在编程中起哪些作用? 答:控件消息由按钮(BN_)、编辑框(EN_)、组合框(CBN_)和列表框(LBN_)等产生。控件通过向父窗口发送控件通知消息来表明发生了某种事件。

VS2010MFC编程入门之十一(对话框:模态对话框及其弹出过程)

加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益。趁热打铁,鸡啄米这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎样弹出。 一.模态对话框和非模态对话框 Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。 非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。 大家对Windows系统很了解,相信这两种对话框应该都遇到过。之前的加法计算器对话框其实就是模态对话框。 二.模态对话框是怎样弹出的 毕竟加法计算器程序大部分都是MFC自动生成的,对话框怎么弹出来的大家可能还不是很清楚。鸡啄米下面简单说说它是在哪里弹出来的,再重新建一个新的对话框并弹出它,这样大家实践以后就能更灵活的使用模态对话框了。 大家打开Addition.cpp文件,可以看到CAdditionApp类有个InitInstance()函数,在M FC应用程序框架分析中提到过此函数,不过那是单文档应用程序App类中的,函数体不太相同,但都是进行App类实例的初始化工作。

InitInstance()函数的后半部分有一段代码就是定义对话框对象并弹出对话框的,鸡啄米下面给出这段代码并加以注释: 弹出对话框比较关键的一个函数,就是对话框类的DoModal()函数。CDialog::DoModa l()函数的原型为:

virtual INT_PTR DoModal(); 返回值:整数值,指定了传递给CDialog::EndDialog(该函数用于关闭对话框)的nR esult参数值。如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABOR T。 调用了它对话框就会弹出,返回值是退出对话框时所点的按钮的ID,比如,我们点了“退出”按钮,那么DoModal返回值为IDCANCEL。 三.添加一个新对话框并弹出它 鸡啄米再为加法计算器程序添加一个对话框,以在计算之前询问用户是否确定要进行计算。大家可以完整的看下对话框的添加和弹出过程。 1.根据“创建对话框模板和修改对话框属性”中所讲的方法,在Resource View中的“Di alog”上点右键选择“Insert Dialog”,创建一个新的对话框模板,修改其ID为IDD_TIP_DIA LOG,Caption改为“提示”,然后参考“为对话框添加控件”中所讲,在对话框模板上添加一个静态文本框(static text),Caption改为“您确定要进行加法计算吗?”,接下来修改OK 按钮的Caption为“确定”,Cancel按钮的Caption为“取消”,最后调整各个控件的位置和对话框的大小。最终的对话框模板如下图: 2.根据“创建对话框类和添加控件变量”中创建对话框类的方法,在对话框模板上点右键选择“Add Class...”,弹出添加类的对话框,设置“Class name”为CTipDlg,点“OK”。在S olution Explorer中可以看到生成了CTipDlg类的头文件TipDlg.h和源文件TipDlg.cpp。 3.我们要在点“计算”按钮之后弹出此提示对话框,那么就要在“计算”按钮的消息处理函数OnBnClickedAddButton()中访问提示对话框类,所以为了访问CTipDlg类,在Addition Dlg.cpp中包含CTipDlg的头文件:#include "TipDlg.h"。 4.修改OnBnClickedAddButton()的函数体,在所有代码前,构造CTipDlg类的对象tip Dlg,并通过语句tipDlg.DoModal();弹出对话框,最后判断DoModal()函数的返回值是IDO K还是IDCANCEL来确定是否继续进行计算。OnBnClickedAddButton()函数修改后如下: C++代码

vb文件菜单通用对话框

第7章第10章 一、内部文件控件 二、通用对话框 三、文件的读写操作 四、菜单编辑器

一、内部文件控件 文件系统控件用来查看和选择文件的功能,这类控件有两种: ①VB内部标准的文件控件: 驱动器列表框(DriveListBox) 目录列表框(DirListBox) 文件列表框(FileListBox) ②另一种是Windows的通用对话框控件(CommonDialog),该控件是ActiveX控件,需要加载后才能使用。

驱动器 列表框 文件列表框 目 录 列 表 框

1.驱动器列表框(DriveListBox) ①功能:用来显示当前机器上的所有盘符。 ②Drive属性:设置或显示运行时选择的驱动器。 如:Drive1.Drive = “C”或 Drive1.Drive = “C:”或 Drive1.Drive = "C:\“均正确。 ③Change事件:选择一个新的驱动器或通过程 序代码改变Drive属性的设置时,都将引发驱动器列表框的Change事件发生。

【例1】窗体中有2个标签和1个驱动器列表框。程序运行时,将用户在驱动器列表框中所选驱动器名称显示在窗体的标签中。 Private Sub Form_Load() Label2.Caption = "选中的驱动器是" & Drive1.Drive End Sub Private Sub Drive1_Change() Label2.Caption = "选中的驱动器是" & Drive1.Drive End Sub 例1

2.目录列表框(DirListBox) ①功能:以根目录开始, 显示目录的层次结构。 ②Path属性:设置当前路径,只能在程序代码中设置。格式为目录列表框名称.Path[=“路径”]如:Dir1.Path=“c:\Windows” ③Change事件:在目录框发生变化时,会触发该事件。 【例2】窗体中有1个驱动器列表框、1个目录列表框和4个标签。程序运行时,将用户在驱动器列表框中所选驱动器的所有目录显示在目录列表框中,并将用户双击时所选中的目录显示在窗体下部的标签中。

MFC简单的登录对话框

登录对话框 我们利用MFC编写一个简单的登录对话框。主窗体是单文档界面。程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来。 1、开打VC++6.0。点击文件,新建,点击工程中的MFC AppWizard(exe),在右边选择工程保存的位置,并且为工程取好名字。 2、点击确定后,选择单个文档,你可以一直点击下一步,直到完成,或者在这里直接点击完成即可,完成后界面如下。 3、点击工具栏中的“!”号试着编译运行一次,看是否有问题。如果没有问题,我们继续。点击左边的ResourceView,在Dialog上面鼠标右键单击弹出一弹出框,单击Insert Dialog。

4、在右边新增的对话框中,适当改变窗口大小,加入静态文本框和文本编辑框。 输入用户名:。然后回车

同样在下面的第二个静态文本框的属性标题改为:输入密码:。然后回车。 6、在第一个文本编辑框上右键单击,点击属性,把ID框中的IDC_EDIT1改为容易理解的名字,如:IDC_EDIT_NAME,注意前面的IDC_EDIT最好不要去掉,这样容易见名而知义。同样,对第二个文本编辑框的属性中的IDC_EDIT2改为:IDC_EDIT_PWD 7、在对话框上的任何空白的地方右键单击,点击建立类向导。

然后弹出 选择建立Create a new class,点击OK。 这是为这个对话框创建一个新的类。在Name中,为该对话框类取个名字:CDlg_login。下面的Base class以及Dialog ID不要随便改动。然后点击OK。这样新的类CDlg_login就与本对话框建立起了联系。

组态王6.5使用手册 第14章 控件(共101页 34~73页)

第十四章控件 14.2.8 超级文本显示控件 组态王提供一个超级文本显示控件,用于显示RTF格式或TXT格式的文本文件,而且也可在超级文本显示控件中输入文本字符串,然后将其保存成指定的文件,调入RTF、TXT格式的文件和保存文件通过超级文本显示控件函数来完成。 14.2.8.1 如何创建超级文本显示控件 在画面开发系统的工具箱中选择“插入控件”按钮,或选择菜单“编辑/插入控件”命令,在弹出的如图14.2所示的“创建控件”对话框中,在种类列表中选择“超级文本显示”,在右侧的内容中选择“显示框”图标,单击对话框上的“创建”按钮,或直接双击“显示框”图标,关闭对话框。此时鼠标变成小“十” 字形,在画面上需要插入控件的地方按下鼠标左键,拖动鼠标,画面上出现一个矩形框,表示创建后控件界面的大小。松开鼠标左键,控件在画面上显示出来。 如图14.32所示。控件周围有带箭头的小矩形框,鼠标挪到小矩形框上,鼠标箭头变为方向箭头时,按下鼠标左键并拖动,可以改变控件的大小。当鼠标在控件上变为双“十”字型时,按下鼠标左键并拖动,可以改变控件的位置。

图14.32 创建后的超级文本显示框控件 14.2.8.2 如何定义超级文本显示控件的属性 控件创建完成后,需要定义空间的属性。用鼠标双击控件,弹出超级文本显示框控件属性对话框,如图14.33所示。 图14.33 超级文本显示框控件属性对话框 超级文本显示框控件属性: ◆控件名称:定义控件的名称,一个显示框控件对应一个控件名称, 而且是唯一的,不能重复命名,控件的命名应该符合组态王的命名 规则。如“Richtxt1”。 ◆访问权限:定义控件的安全级别——访问权限,范围为1~999。定

通用对话框与文件操作

第10讲通用对话框与文件操作 教学目标 1.掌握文本文件的读取与写入操作 2.掌握通用对话框的使用 重点、难点: 1.通用对话框的使用;(重) 2.数据的读写。(难) 提纲: 1.复习与作业点评 2.文件的读、写操作 3.消息框的使用MessageBox 4.通用对话框的使用OpenFileDialog、SaveFileDialog、FontDialog、ColorDialog 5.小结 6.作业 一、复习与作业点评 二、文件的读、写操作(幻灯片18~26) (一)流 流(Stream)是字节序列,对于流的操作是按照流中字节的先后顺序来进行的。提供一种向存储器写入数据和从存储器读取数据的方法。在读写文件时,不是直接操作文件,而是通过文件流的某些方法来实现文件的读写。流就好像是在计算机的输入/输出之间建立的一条通道,数据好像在这其中“流”动一样。 文件是静态的,流是动态的。要想访问文件,就要建立流对象(Stream)。 (二)读取文件 要从文本文件中读取数据,首先要使用System.IO.StreamReader类建立一个StreamReader对象:Dim 对象名称As New System.IO.StreamReader(路径和文件名,编码方式) 其次用StreamReader对象读取数据常用的方法来读取数据。 读取内容=对象名称.读取方法 StreamReader对象的常用的读取方法有: Read()方法:读取当前流中的下一个字符或下一组字符。 Readline()方法:从当前流中读取一行数据,并将数据作为字符串返回。

ReadtoEnd()方法:由文件当前位置开始读取数据,直到文件结束。 最后需调用close方法关闭StreamReader对象。 对象名称.Close 在文本框1中输入想要打开的文本文件路径及名称,单击“读出”命令按钮,在文本框2中显示文件内容。 (三)写入文件 要向文本文件中写入数据,首先建立写对象: Dim 对象名称As New System.IO.StreamWriter(路径和文件名,写入方式,编码方式) 对象名称.Write(要写入的数据)——写的方法 或:对象名称.WriteLine(要写入的数据) 对象名称.Close ——将写对象关闭 【例】读写文件(幻灯片25) 三、MessageBox消息框(幻灯片26~29) 消息框是预先设计好的预定义对话框,常用来在程序设计中输出简单的消息。可以通过Messagebox类的show方法来实现,语法格式如下: Messagebox.show(Prompt [,Title] [,Buttons] [,Icon]) 如:MessageBox.Show("请输入运算符号!", "消息框", MessageBoxButtons.OKCancel, rmation) 四、通用对话框(幻灯片32~41) 如果要想生成复杂的对话框,则可以通过: ?打开文件对话框控件(OpenFileDialog) ?保存文件对话框控件(SaveFileDialog) ?字体对话框控件(FontDialog) ?颜色对话框控件(ColorDialog) 1、OpenFileDialog (1)FileName属性 该属性值为一个包括完整路径和文件名的字符串。用户在对话框文件名列表中选定或输入的文件名会保存在该属性中。如果在打开对话框之前为该属性设置了文件名,则该文件名为打开对话框时的推荐文件名。 (2)Filter属性 该属性用于设置打开文件对话框中“文件类型”列表框中的文件类型。一次可设置多种文件类型。每设置一个文件类型称为一个过滤器。设置一个过滤器的语句格式如下: 文字说明|文件名模式 (3)FilterIndex 用于设置或获取打开文件对话框中当前选定过滤器的索引,第一个过滤器的索引值为1,第二个过滤器的索引值为2 (4)Title属性 用于设置对话框标题,默认标题为“打开”。 OpenFileDialog控件最常用的方法是ShowDialog方法,常用的事件为FileOk事件。

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

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

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

相关文档
最新文档