6.7 Windows通用对话框

6.7 Windows通用对话框
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

{

strText += read[i];

}

file.Close();

m_FileText.SetWindowText(strText);

}

}

4、编辑“保存”按钮,编辑程序

void CFileDialogDlg::OnSave()

{

// TODO: Add your control notification handler code here

CFileDialog

dlg(FALSE,NULL,NULL,OFN_HIDEREADONL Y|OFN_OVERWRITEPROMPT, "All Files(*.TXT)|*.TXT||",AfxGetMainWnd());

CString strPath,strText="";

char write[10000];

if(dlg.DoModal() == IDOK)

{

strPath = dlg.GetPathName();

if(strPath.Right(4) != ".TXT")

strPath += ".TXT";

m_SavePath.SetWindowText(strPath);

CFile file(_T(strPath),CFile::modeCreate|CFile::modeWrite);

m_FileText.GetWindowText(strText);

strcpy(write,strText);

file.Write(write,strText.GetLength());

file.Close();

}

}

6.7.2 使用“字体”对话框设置文本字体

主程序名:FontDialog

1、添加一个按钮控件,一个编辑框控件

2、为控件关联变量

3、编辑文本中的文字,程序

BOOL CFontDialogDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

CString str = "";

str +="有志者,事竟成,破釜沉舟,百二秦关终属楚\r\n";

str +="苦心人,天不负,卧薪尝胆,三千越甲可吞吴\r\n";

m_Text.SetWindowText(str);

return TRUE; // return TRUE unless you set the focus to a control

}

4、“文字”按钮控件的程序编辑

void CFontDialogDlg::OnFont()

{

// TODO: Add your control notification handler code here

CFont* TempFont = m_Text.GetFont(); //获取编辑框当前字体

LOGFONT LogFont;

TempFont->GetLogFont(&LogFont);

CFontDialog dlg(&LogFont); //初始化字体信息

if(dlg.DoModal()==IDOK)

{

m_Font.Detach();

LOGFONT temp;

dlg.GetCurrentFont(&temp); //获取当前字体信息

m_Font.CreateFontIndirect(&temp); //直接创建字体

m_Text.SetFont(&m_Font); //设置字体

}

}

6.7.3 使用“颜色”对话框设置文本背景颜色

主程序名:ColorDialog

1、添加一个按钮控件,一个静态文本

对话框ID:IDD_COLORDIALOG_DIALOG

对话框标:使用"颜色"对话框设置文本背景颜色

按钮ID:IDC_COLOR

按钮标题:颜色

静态文本控件ID:IDC_STATIC

静态文本控件标题:红笺小字,说尽平生易。鸿雁在云鱼在水,\r\n惆怅此情难寄。斜阳独倚西楼,遥山恰对恋钩,\r\n人面不知何处,绿波依旧东流。\r\n

2、“颜色”按钮对话框的程序编写

void CColorDialogDlg::OnColor()

{

// TODO: Add your control notification handler code here

CColorDialog dlg(m_Color); //创建颜色对话框

if (dlg.DoModal()==IDOK)

{

m_Color = dlg.GetColor();//获取用户选择的颜色

Invalidate();//重绘窗口

}

}

3、添加事件,在处理对话框中添加WM_CTLCOLOR事件,在该事件的处理函数中设置静态文本控件显示文本的背景颜色。

HBRUSH CColorDialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor == CTLCOLOR_STA TIC)

{

pDC->SetBkColor(m_Color);

}

return hbr;

}

6.7.4 使用“查找/替换”对话框在文本中替换字符串

主程序名:ReplaceDialog

1、添加一个按钮控件,一个文本框控件

对话框ID:IDD_REPLACEDIALOG_DIALOG

对话框标:使用"查找/替换"对话框在文本中替换字符串

按钮ID:IDC_REPLACE

按钮标题:替换

文本框控件ID:IDC_EDIT1

2、为控件关联变量

3、在头文件中声明变量

class CReplaceDialogDlg : public CDialog

{

// Construction

public:

CReplaceDialogDlg(CWnd* pParent = NULL); // standard constructor CFindReplaceDialog* dlg; //声明"查找/替换"对话框指针

int nindex; //存储查找字符串的起始位置

int rindex; //替换字符串的大小

BOOL degree; //判断是否为第一次替换的变量

BOOL find; //判断是否进行查找的变量

4、初始化对话框时添加文本内容程序

BOOL CReplaceDialogDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

CString str="";

str += "君不见黄河之水天上来,奔流到海不复回。\r\n";

str += "君不见高堂明镜悲白发,朝如青丝暮成雪。\r\n";

str += "人生得意须尽欢,莫使金樽空对月。\r\n";

str += "天生我材必有用,千金散尽还复来。\r\n";

str += "烹羊宰牛且为乐,会须一饮三百杯。\r\n";

str += "岑夫子,丹丘生,将进酒,杯莫停。\r\n";

str += "与君歌一曲,请君为我倾耳听。\r\n";

str += "钟鼓馔玉不足贵,但愿长醉不复醒。\r\n";

str += "古来圣贤皆寂寞,惟有饮者留其名。\r\n";

str += "陈王昔时宴平乐,斗酒十千恣欢谑。\r\n";

str += "主人何为言少钱,径须沽取对君酌。\r\n";

str += "五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。";

m_Edit.SetWindowText(str);

nindex = 0;

degree = FALSE;

return TRUE; // return TRUE unless you set the focus to a control

}

5、在头文件中添加函数声明

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

afx_msg long OnFindReplace(WPARAM wParam,LPARAM lParam);

afx_msg void OnReplace();

6、在主程序中添加映射宏

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_REGISTERED_MESSAGE(WM_FINDMESSAGE, OnFindReplace )

ON_BN_CLICKED(IDC_REPLACE, OnReplace)

7、书写该程序

long CReplaceDialogDlg::OnFindReplace(WPARAM wParam, LPARAM lParam)

{

CString strText,repText; //声明字符串变量

strText = dlg->GetFindString(); //获得查找字符串

CString str; //声明字符串变量

m_Edit.GetWindowText(str); //获得编辑框中是文本

if(dlg->ReplaceCurrent()) //判断是否进行替换find = FALSE; //进行替换

else

find = TRUE; //进行查找

int len; //声明整型变量

if(dlg->ReplaceAll()) //判断是否全部替换

{

repText = dlg->GetReplaceString(); //获得替换字符串

len = repText.GetLength(); //获得替换字符串长度

str.Replace(strText,repText); //使用替换字符串替换查找字符串

m_Edit.SetWindowText(str); //将替换后的字符串显示在编辑框中}

if(find) //判断是查找还是替换

{

len = strText.GetLength(); //获得要查找字符串的长度}

else

{

CString left,right; //声明字符串变量

int num = strText.GetLength(); //获得查找字符串的长度

int strnum = str.GetLength(); //获得编辑框中文本长度

int index; //声明整型变量

int ret = str.Find(strText,0);

if(ret < 0)

return 1;

if(!degree) //判断是否为第一次替换index = str.Find(strText,nindex); //获得查找字符串在编辑框文本中的位置else if(nindex-rindex >= 0) //判断起始查找位置是否小于0 index = str.Find(strText,nindex-rindex);//获得查找字符串在编辑框文本中的位置else

{

nindex = rindex; //设置起始查找位置

return 1;

}

degree = TRUE;

left = str.Left(index); //获得替换字符串左侧的字符串

right = str.Right(strnum-index-num); //获得替换字符串右侧的字符串

repText = dlg->GetReplaceString(); //获得替换字符串

len = repText.GetLength(); //获得替换字符串长度

rindex = len;

str = left + repText + right; //组合成新的字符串

m_Edit.SetWindowText(str); //在编辑框中显示新的字符串}

int index = str.Find(strText,nindex); //获得查找字符串在编辑框文本中的位置

m_Edit.SetSel(index,index+len); //选中查找或替换的字符串

nindex = index+len; //设置起始查找位置

m_Edit.SetFocus(); //编辑框获得焦点

return 0;

}

8、书写控件按钮的代码

void CReplaceDialogDlg::OnReplace()

{

// TODO: Add your control notification handler code here

dlg = new CFindReplaceDialog;

dlg->Create(FALSE,NULL);

dlg->ShowWindow(SW_SHOW);

}

6.7.5 使用“打印”对话框进行打印

主程序名:PrintDialog

1、添加一个按钮控件

对话框ID:IDD_PRINTDIALOG_DIALOG

对话框标:使用"打印"对话框进行打印

按钮ID:IDC_PRINT

按钮标题:打印

2、对话框头文件中声明变量

class CPrintDialogDlg : public CDialog

{

// Construction

public:

void DrawText(CDC *pDC, BOOL isprinted);

CPrintDialogDlg(CWnd* pParent = NULL); // standard constructor

CString str[6];

CFont font; //字体

int screenx,screeny; //获取窗口每英寸像素数

int printx,printy; //获取打印机每英寸像素数

double ratex,ratey; //打印机与屏幕的像素比率

2、对话框初始化时设置对话框初始数组

BOOL CPrintDialogDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

str[0] = " 弃我去者,昨日之日不可留;乱我心者,";

str[1] = "今日之日多烦扰。长空万里送秋雁,对此可以";

str[2] = "酣高楼。蓬莱文章建安骨,中间小谢又青发。";

str[3] = "具怀逸兴壮思飞,欲上青天揽明月。抽刀断水";

str[4] = "水更流,举杯消愁愁更愁。人生在世不称意,";

str[5] = "明朝散发弄扁舟。";

return TRUE; // return TRUE unless you set the focus to a control

}

3、在OnPaint函数中获取屏幕每逻辑英寸的像素值并进行预览绘制。

void CPrintDialogDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

CDC* pDC = GetDC();

screenx = pDC->GetDeviceCaps(LOGPIXELSX);

screeny = pDC->GetDeviceCaps(LOGPIXELSY);

DrawText(pDC,FALSE);

}

4、自定义函数DrawText

void CPrintDialogDlg::DrawText(CDC *pDC, BOOL isprinted)

{

CFont font;

if(!isprinted) //预览

{

ratex = 1;

ratey = 1;

}

else //打印

{

pDC->StartDoc("printinformation");

}

font.CreatePointFont(120,"宋体",pDC);

for(int i=0;i<6;i++)

{

pDC->SelectObject(&font);

pDC->TextOut(int(50*ratex),int((50+i*30)*ratey),str[i]);

}

if(isprinted)

{

pDC->EndDoc();

}

}

5、添加WM_CTLCOLOR事件,消息对话框背景改为白色

HBRUSH CPrintDialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

CBrush m_brush (RGB(255,255,255));

CRect m_rect;

GetClientRect(m_rect);

pDC->FillRect(m_rect,&m_brush);

return m_brush;

}

6、“打印”按钮单击事件程序

void CPrintDialogDlg::OnPrint()

{

// TODO: Add your control notification handler code here

DWORD dwflags=PD_ALLPAGES | PD_NOPAGENUMS | PD_USEDEVMODECOPIES | PD_SELECTION | PD_HIDEPRINTTOFILE;

CPrintDialog dlg(FALSE,dwflags,NULL);

if(dlg.DoModal()==IDOK)

{

CDC dc;

dc.Attach(dlg.GetPrinterDC());

printx = dc.GetDeviceCaps(LOGPIXELSX);

printy = dc.GetDeviceCaps(LOGPIXELSY);

ratex = (double)(printx)/screenx;

ratey = (double)(printy)/screeny;

DrawText(&dc,TRUE);

}

}

6.7.6 使用“文件浏览”对话框选择文件夹

主程序名:Browse

1、

对话框ID:IDD_BROWSE_DIALOG

对话框标:使用文件浏览对话框选择文件夹

按钮ID:IDC_GETBROWSE

按钮标题:选择文件夹

静态文本控件ID:IDC_PA TH

2、单击按钮事件:

void CBrowseDlg::OnGetbrowse()

{

// TODO: Add your control notification handler code here

CString ReturnPach;

TCHAR szPath[_MAX_PATH]; //保存路径变量

BROWSEINFO bi; // BROWSEINFO结构变量bi.hwndOwner = NULL; //HWND句柄

bi.pidlRoot = NULL; //默认值为NULL

bi.lpszTitle = _T("文件浏览对话框"); //对话框标题

bi.pszDisplayName = szPath; //选择文件夹路径

bi.ulFlags = BIF_RETURNONL YFSDIRS; //标记

bi.lpfn = NULL; //默认值为NULL

bi.lParam = NULL; //回调消息

LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi); //显示文件浏览对话框

if(pItemIDList)

{

if(SHGetPathFromIDList(pItemIDList,szPath)) //判断是否获得文件夹路径ReturnPach = szPath;

}

else

{

ReturnPach = ""; //文件夹路径为空

}

m_Path.SetWindowText(ReturnPach);

}

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中这些组件是在https://www.360docs.net/doc/0810442943.html,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指出用户成功完成了操作,成功选取了文

在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

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

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)表示删除所选。

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个标签。程序运行时,将用户在驱动器列表框中所选驱动器的所有目录显示在目录列表框中,并将用户双击时所选中的目录显示在窗体下部的标签中。

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

常用中后台交互设计控件使用场景与规范总结 最近刚完成平台安畅云 2.0 的改版设计,平台模块很多,经常存在很多类似的页面和组件,若不制定统一的规范和控件,则会导致很多重复的工作,大大降低产品的设计效率; 同时,平台的一致性也得不到保障。 所以,我们视觉、交互、前端的小伙伴们针对我们踩过的坑,大家认真总结和提炼出一个 符合公司定位的设计规范,统一公司项目的前端 UI 设计,规避不必要的设计差异和实现 成本,实现设计和前端资源的效率最大化。 此设计规范主要分享了中后台常用设计组件的定义、组成、使用场景及注意事项。 字体 概述 字体是界面设计中最基本的构成元素之一,用户通过文字来理解内容和完成任务,合适的 字体将大大提升用户的阅读体验及工作效率。在安畅云项目的字体使用中,为了使页面的 视觉层次更加清晰,我们从以下三方面来使平台的字体符合易阅读和美观的要求。 合理的使用不同的字重、字号和颜色来强调界面中需要突出的信息; 尽量使用单种字体,使用多种字体会让界面看起来零散和杂乱无章; 遵循 WCAG 2.0 标准(标准详情见 https://https://www.360docs.net/doc/0810442943.html,/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_)等产生。控件通过向父窗口发送控件通知消息来表明发生了某种事件。

通用对话框与文件操作

第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, https://www.360docs.net/doc/0810442943.html,rmation) 四、通用对话框(幻灯片32~41) 如果要想生成复杂的对话框,则可以通过: ?打开文件对话框控件(OpenFileDialog) ?保存文件对话框控件(SaveFileDialog) ?字体对话框控件(FontDialog) ?颜色对话框控件(ColorDialog) 1、OpenFileDialog (1)FileName属性 该属性值为一个包括完整路径和文件名的字符串。用户在对话框文件名列表中选定或输入的文件名会保存在该属性中。如果在打开对话框之前为该属性设置了文件名,则该文件名为打开对话框时的推荐文件名。 (2)Filter属性 该属性用于设置打开文件对话框中“文件类型”列表框中的文件类型。一次可设置多种文件类型。每设置一个文件类型称为一个过滤器。设置一个过滤器的语句格式如下: 文字说明|文件名模式 (3)FilterIndex 用于设置或获取打开文件对话框中当前选定过滤器的索引,第一个过滤器的索引值为1,第二个过滤器的索引值为2 (4)Title属性 用于设置对话框标题,默认标题为“打开”。 OpenFileDialog控件最常用的方法是ShowDialog方法,常用的事件为FileOk事件。

通用对话框添加到工具箱

通用对话框添加到工具箱 工程/部件->选定部件标签->选定Microsoft CommDialog Control 6.0->确定 打开通用对话框: 通用对话框的类型Action方法 打开(Open)1ShowOpen 另存为(Save As)2ShowSave 颜色(Color)3ShowColor 字体(Font)4ShowFont 打印机(Printer)5ShowPrinter 帮助(help)6Showhelp 属性 Action:打开通用对话框。 DialogTiltle:对通用话框标题。 CancelError True:选择“取消”按钮,出现错误警告;Err.Number置为32755(cdCancel)。 False(缺省):选择“取消”按钮,没有错误警告。 1. “打开”文件对话框 属性 FileName:包含路径 FileTitle:不包含路径 Filter:例如, Documents(*.DOC)|*.DOC|Text Files(*.TXT)|*.txt|All Files|*.* FilterIndex:决定在文件类型列表框中显示第几组类型的文件。 InitDir:初始化路径

例8.1简单的文本编辑程序,当按“打开”按钮,在“打开”对话框按“取消”按钮,显示有关信息。 Open CommonDialog1.filename For Input As #1 Do While Not EOF(1) Line Input #1, inputdata txtNoteEdit.Text = txtNoteEdit.Text + inputdata + _ Chr(13) + Chr(10) Loop Close #1 2. “另存为”对话框 没有提供真正的存储文件操作,仍需要编程完成储存操作。 属性DefaultExt:缺省扩展名 例8.1中“另存为...”按钮的事件过程 3. “颜色”对话框 属性Color:返回或设置选定的颜色。 例8.1中“颜色...”按钮的事件过程 4. “字体”对话框 Flags属性:指示所显示的字体类型,必须设置。 cdlCFScreenFonts &H1 屏幕字体 cdlCFPrinterFonts &H2 打印机字体

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

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

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

面向对象技术-对话框和按钮控件

计算机学院 实验报告 实验名称对话框和按钮控件课程名称面向对象技术 姓名班级学号 日期地点 成绩教师

1.实验目的 运用对话框和按钮控件设计一个可供选择的调查问卷对话框。 2.实验内容 设计一个对话框,用于问卷调查,它针对“上网”话题提出了是个问题,每个问题都有四个选项。当回答问题后,按“确定”按钮,弹出一个消息对话框。显示用户选择的内容。 3.实验环境(软件、硬件及条件) VC++6.0 PC WIN7 4.实验方法 1)创建一个默认的基于对话框的应用Ex_Research。 2)Visual C++会自动打开对话框编辑器并显示对话框资源模版。单击对话框编辑器工具栏上的切换网络按钮,显示对话框网格,将对话框标题改为“上网问卷调查”。 3)在对话框中添加实验需要的组框控件、静态文本、静态图文控件、复选按钮和单选按钮等,并按照实验要求修改对应的名称。 4)单击工具栏的测试对话框按钮,测试一下所添加的对话框效果。5)将项目工作区切换到ClassView(类视图)页面,展开CEx_researchDig类的所有成员,双击OnInitDialog函数名就会在文档窗口中自动定位到该函数的实现代码处,在此函数添加初始化代码。 6)用MFC.ClassWizard在CEx_ResearchDlg类中添加IDOK按钮的BN_CLICKED消息映射,添加代码,使得用按“确定”按钮获取用户所作的选择内容。 7)编译并运行,出现“上网问卷调查”对话框,当回答问题后,按“确定”按钮,出现消息对话框,显示用户选择的内容。 5.实验分析 此次实验中,在4)步骤测试对话框,刚开始选择单选按钮是,两组单选按钮中只有一个单选按钮被选中,这是顺序添加的8个单选按钮全部变成一组。解决这个问题的办法是将第一组的第一个单选按钮的Group(组)属性选中。

通用对话框学习

通用对话框学习一:OpenFileDialog (2011-12-21 17:19:51) 转载▼ 分类:https://www.360docs.net/doc/0810442943.html, 标签: it 在进行WinForm程序的开发时,经常会有提示用户输入特定的信息,但是对于常见的任务,例如,打开和保存文件,可以使用预先编写好的对话框类,而不是定制的对话框。 对话框是一个在另一个窗口中显示的窗口,在继续执行程序流之前,可以让用户在对话框中输入一些数据。通用对话框常常用于从用户处获取一般性的信息,大多数应用程序都需要它,例如输入文件名,它是Windows操作系统的一部分。除了PrintPreviewDialog外,其他的对话框都派生子抽象基类CommonDialog。CommonDialog定义了一些方法和事件,他们对于所有的对话框类来说都是通用的。 通用方法: 通用的事件: abstract bool RunDialog ,因此它的继承类均需要实现这个方法。这次主要学习OpenFileDialog类的使用。 OpenFileDialog类是一个sealed类,因此只能实例化。MSDN解释“提示用户打开文件。无法继承此类。”使用此类课检查某个文件是否存在并打开该文件。ShowReadOnly属性确定是否在对话框中显示只读复选框,ReadOnlyChecked 属性指示是否选中只读复选框。 它有很多的属性,下面通过一个例子来了解一些属性的使用。 新建一个WinForm程序,有两个控件,button控件和一个textbox控件,事先在D盘建一个文本文档Test.txt,在里面任意添加内容。界面如下:

对于button的点击事件,编写如下的代码: ODF的使用 private void button1_Click(object sender, System.EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "d:\\"; openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Clear(); using(StreamReader read = new StreamReader(openFileDialog1.FileName,Encoding. Default)) { string line; while ((line=read.ReadLine())!=null) { textBox1.AppendText(line); } } } } 复制代码

对话框和按钮控件实验报告

实验(实习)报告 实验(实习)名称对话框和按钮控件日期 5.15 得分指导教师 院计算机与软件学院专业计算机科学与技术年级班次姓名学号 实验内容: 设计一个对话框,用于问卷调查,在教材【例Ex_reserch】基础上针对“上网”话题在提出一个问题:“你每天上网的平均时间”,该问题的备选答案是“<1小时”、“<2小时”、“<3小时”和“>3小时”,如图T9.1所示。当回答问题后,单击“确定”按钮,弹出一个消息对话框,显示用户选择的内容。 实验步骤: 1.创建工作文件夹 2.设计“上网问卷调查”对话框 (1)创建一个默认的基于对话框的应用Ex_Research。 (2)调整对话框的大小(宽度不变),将“确定”和“取消”按钮移至对话框的下方,参照图控件的布局,添加一个静态文本框,标题为“你每天上网的平均时间:”,保留默认的标识符。 (3)添加四个单选按钮控件,在其属性对话框中,分别将其标题设置为“<1小时”、“<2小时”、“<3小时”和“>3小时”,标识符分别设置为IDC_TIME_L1、IDC_TIMEL2、IDC_TIME_L3和IDT_TIME_M3。 (4)选中第1 个单选按钮IDC_TIME_L1的Group属性选项。 (5)添加一个静态图片控件,在其属性对话框中将其类型属性为“Frame(框架)”,颜色属性选为“Etched(蚀刻)”。 3.修改代码 (1)在CEx_ResearchDlg::OnInitDialog函数中添加下列代码: CheckRadioButton(IDC_TIME_L1、IDC_TIME_M3、IDC_TIME_L1); (2)在CEx_ReaserchDlg::OnOk函数中添加下列代码: //获得第四个问题的用户选择 Str=str+”\n你每天平均上网的时间:\n”; nID=GetCheckedRadioButton(IDC_TIME_L1、IDC_TIME_M3); GetDlgItemText(nID,strCtrl);//获得指定控件的标题文本 Str=str+strCtrl; 4.编译运行并测试 编译并运行后,显示“上网调查问卷”对话框,当回答问题后,单击“确定”按钮,出现相应的西欧系对话框,显示用户选择的内容。

第16章-通用对话框

第16章通用对话框 前面介绍了Windows窗体应用程序常见的一些操作,如自定义菜单、创建工具栏、SDI和MDI应用程序及常见控件的使用。本章将介绍Windows窗体中另一类常用的对话框。在Windows系统中,应用程序如果需要用户选择一个文件或者文件夹,通常会弹出一个对话框用于与用户交互和检索信息。简言之,对话框就是将其FormBorderStyle 枚举属性设置为FixedDialog的窗体。您可以使用Windows窗体设计器构造自己的自定义对话框。可以通过添加控件(例如Label、Textbox和Button)来自定义对话框以满足特定需要。.NET Framework提供了对话框控件来快速创建对话框。常用的控件有“打开文件”对话框和消息框等,也可修改它以适合自己的应用程序。 关键技术点学习表 16.1 消息框 当用户想知道程序运行过程中的相关信息时,可以使用消息框MessageBox来获取信息。MessageBox是一个预定义对话框,在C#中使用时,都是用MessageBox对象的Show方法显示的。 MessageBox对象是命名空间Systeml.Windows.Forms的一部分,Show是一个静态方法,不需要基于MessageBox类的对象创建事例,就可以使用方法,另外,Show方法是可以重载的,具有很多不同参数的形式。 1.其语法格式一般形式如下: 【格式】 DialogResult Dir = MessageBox.Show(text,caption,button,icon,defaultbutton,option); 【功能】弹出一个消息框,显示相关信息。 【说明】 (1)Text:设置消息对话框中的提示文本语句,必须是string类;

对话框常用控件实验报告

对话框常用控件实验报告 班级:电气工程与自动化2班 学号:06120902 姓名: 嘎日玛盖

Ⅰ内容和要求: 一,对话框常用控件实验要求: 1 控件的消息映像 2控件与关联变量的数据处理 二,对话框常用控件实验步骤: 1步骤 2效果 3执行效果截图 4问题的解决方法 三,对话框常用控件实验的内容: 1编辑框 2静态文本 3单选框 4复选框 Ⅱ实验步骤 1.新建一个工程,选择MFC AppWizard(exe)的项目类型,输入项目名:heiha,结果如图1: 选择单文檔类型。 2.新建一个菜单“正式开始工作”,在其下面建立新选项“提交档案”,设其ID为ID_MENU_TIJIAO,如图2:

钮、复选按钮和普通按钮: m_NAME、m_XINGBIE和m_AIHAO。

5.利用MFC ClassWIzard在Cfirst类中添加IDOK按钮的BN_CLICKED消息映像,并添加下列代码。 UpdateData(true); m_NAME=m_NEIRONG; UINT AID=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2); GetDlgItemText(AID,m_XINGBIE); CString str,strCtrl; UINT nCheckIDs[7]={IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4,IDC_CHEC K5,IDC_CHECK6,IDC_CHECK7}; CButton *p; for(int i=0;i<7;i++) { p=(CButton*)GetDlgItem(nCheckIDs[i]); if(p->GetCheck()){ GetDlgItemText(nCheckIDs[i],strCtrl); str=str+strCtrl; str=str+" ";} } m_AIHAO=str; UpdateData(false); 6. 利用MFC ClassWIzard在CMainFrame类中添加对应新建菜单按钮“提交档案”选项ID 的COMMEND消息映像,并添加下列代码。 Cfirst da; da.DoModal(); Ⅲ实验结果 最终执行效果图为如下:

MFC 对话框和常用教程

第五章对话框和常用控件 对话框是Windows应用程序中最重要的用户界面元素之一,是与用户交互的重要手段,在程序运行过程中,对话框可用于扑捉用户的输入信息或数据。对话框是一个特殊类型的窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中实施,一般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户进行交互。控件是在系统内部定义的用于和用户交互的基本单元。 一、对话框的使用 Visual C++提供的对话框编辑器能“可视”地进行设计、编辑,并可用 ClassWizard为对话框从CDialog基类中派生一个类,MFC的CDialog类封装了用于对话框的显示、关闭等操作的许多功能函数,例如:DoModal函数用来显示模式对话框并返回用户操作的结果。 1、模式对话框(为186附加举例页) 所谓模式对话框是指,当对话被弹出时,用户必须在对话框中进行相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。平常我们所见到的对话框大多是模式对话框。 例:模式对话框(通过菜单命令弹出) 1)建一个单文档(SDI)应用程序 2)创建对话框模板 Insert→Resource→选中Dialog→单击New 拖过一个静态文本,鼠标对准它,按右键点properties改标题为“新建模式对话框”。 3)鼠标右键对准对话框的任何位置单击,选择properties选项,设置ID为IDD_MYDIALOG 4)给对话框创建类 双击新建对话框的任何位置,单击OK,写类名为“CMyDlg”,保 证”CDialog”作为该类的基类。 5)创建菜单命令: a)打开资源编辑器的菜单项Menu b)双击IDR_MAINFRAME c)双击右边空白菜单,点开pop_up(让它是空白),在名字处写”弹出对话框(&A)”,ID 处写ID_PUPDIALOG 6)将菜单命令连接到主框架程序中,完成ID_PUPDIALOG的消息映射:View→ClassWizard→保证Class name里是CMainFrame,在ObjectIDs 里找到ID_PUPDIALOG点黑→Messages里(右边)点COMMAND建立主框架对象方法并加代码: void CMainFrame::OnPupdialog() { CMyDlg MyDlg; MyDlg.DoModal(); //DoModal()是CDialog类成员函数,通过调用该 //函数将显示对话框。 } 7)在CMainFrame.cpp文件里加: #include “MyDlg.h”// 之后运行。 2、无模式对话框(为186附加页) 非模式对话框,弹出后,可一直保留在屏幕上,用户可继续在应用中进行其它操作或启动其它应用程序,当需要使用对话框时,只需象激活一般窗口一样激活对话框即可。

常用控件中英文对照

Accordion:可折叠标签Alert Box:警告弹窗 Arrow / Line:箭头标记Breadcrumbs:面包屑导航Browser Window:浏览器窗口Button:按钮 Button Bar / Tab Bar:选项条Calendar:日历 Callout:插图编号 Bar Chart:条形图 Column Chart:柱状图 Line Chart:折线图 Pie Chart:饼图Checkbox:复选框

Checkbox Group:复选框组 Color Picker:颜色选择器 combobox / PullDown Menu / DropDown List / Select List:下拉列表 Comment / Sticky Note / To Do:电子便签 Cover Flow:苹果首创的将多首歌曲的封面以3D界面形式显示出来的方式 Data Grid / Table:数据表 Data Chooser / Data Picker:日期选择器 Field Set / Group / Container:该控件可将表单内的相关元素分组Formatting Toolbar / Rich Text Editor Toolbar:格式化工具条,富文本编辑器 Geometric Shape:几何形状 Help Button:帮助按钮 Horizontal Curly Brace:水平花括号

Horizontal Rule / Separator / Line / HR:水平分隔线Horizontal Scroll Bar:水平滚动条 Horizontal Slider:水平滑块 Horizontal splitter / Separator / Drag Bar:水平分隔器Icon:图标 Icon and Text Label:图标和文本标签 Image:图像 iOS Keyboard:iOS键盘 iOS Menu:iOS菜单 iOS Picker:iOS选择器 iPad:iPad iPhone:iPhone Label / String of Text:文本字符串 Link:链接

相关文档
最新文档