Windows通用对话框应用程序设计.docx
- 文档编号:28863931
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:16
- 大小:292.13KB
Windows通用对话框应用程序设计.docx
《Windows通用对话框应用程序设计.docx》由会员分享,可在线阅读,更多相关《Windows通用对话框应用程序设计.docx(16页珍藏版)》请在冰豆网上搜索。
Windows通用对话框应用程序设计
任务六对话框应用程序设计
Windows通用对话框
Windows通用对话框是由操作系统提供的任何应用程序都能够取得的对话框。
在VC++中,对这些对话框进行了封装,利用户在开发程序时能够方便的挪用这些对话框。
6.7.1利用“文件”对话框打开和保留文件
主程序名:
FileDialog
一、添加两个按钮控件,一个编辑框控件,两个静态文本控件
二、为控件关联变量
3、编辑“打开”按钮,编辑程序
voidCFileDialogDlg:
:
OnOpen()
{
XT)|*.TXT||",AfxGetMainWnd());
CStringstrPath,strText="";
if()==IDOK)
{
strPath=();
(strPath);
CFilefile(strPath,CFile:
:
modeRead);
charread[10000];
(read,10000);
for(inti=0;i<();i++)
{
strText+=read[i];
}
();
(strText);
}
}
4、编辑“保留”按钮,编辑程序
voidCFileDialogDlg:
:
OnSave()
{
XT)|*.TXT||",AfxGetMainWnd());
CStringstrPath,strText="";
charwrite[10000];
if()==IDOK)
{
strPath=();
if(4)!
=".TXT")
strPath+=".TXT";
(strPath);
CFilefile(_T(strPath),CFile:
:
modeCreate|CFile:
:
modeWrite);
(strText);
strcpy(write,strText);
(write,());
();
}
}
6.7.2利用“字体”对话框设置文本字体
主程序名:
FontDialog
一、添加一个按钮控件,一个编辑框控件
二、为控件关联变量
3、编辑文本中的文字,程序
BOOLCFontDialogDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
."menuitemtosystemmenu.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
(IDS_ABOUTBOX);
if(!
())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
Theframeworkdoesthisautomatically
6.7.3
6.7.4
."menuitemtosystemmenu.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
(IDS_ABOUTBOX);
if(!
())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
Theframeworkdoesthisautomatically
6.7.5."menuitemtosystemmenu.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
(IDS_ABOUTBOX);
if(!
())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
str[0]="弃我去者,昨日之日不可留;乱我心者,";
str[1]="今日之日多烦扰。
长空万里送秋雁,对此能够";
str[2]="酣高楼。
蓬莱文章建安骨,中间小谢又青发。
";
str[3]="具怀逸兴壮思飞,欲上青天揽明月。
抽刀断水";
str[4]="水更流,碰杯消愁愁更愁。
人一辈子活着不称意,";
str[5]="明代散发弄扁舟。
";
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
3、在OnPaint函数中获取屏幕每逻辑英寸的像素值并进行预览绘制。
voidCPrintDialogDlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=()-cxIcon+1)/2;
inty=()-cyIcon+1)/2;
//Drawtheicon
(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
CDC*pDC=GetDC();
screenx=pDC->GetDeviceCaps(LOGPIXELSX);
screeny=pDC->GetDeviceCaps(LOGPIXELSY);
DrawText(pDC,FALSE);
}
4、自概念函数DrawText
voidCPrintDialogDlg:
:
DrawText(CDC*pDC,BOOLisprinted)
{
CFontfont;
if(!
isprinted)//预览
{
ratex=1;
ratey=1;
}
else//打印
{
pDC->StartDoc("printinformation");
}
(120,"宋体",pDC);
for(inti=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事件,消息对话框背景改成白色
HBRUSHCPrintDialogDlg:
:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)
{
HBRUSHhbr=CDialog:
:
OnCtlColor(pDC,pWnd,nCtlColor);
CBrushm_brush(RGB(255,255,255));
CRectm_rect;
GetClientRect(m_rect);
pDC->FillRect(m_rect,&m_brush);
returnm_brush;
}
六、“打印”按钮单击事件程序
voidCPrintDialogDlg:
:
OnPrint()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
DWORDdwflags=PD_ALLPAGES|PD_NOPAGENUMS|PD_USEDEVMODECOPIES
|PD_SELECTION|PD_HIDEPRINTTOFILE;
CPrintDialogdlg(FALSE,dwflags,NULL);
if()==IDOK)
{
CDCdc;
());
printx=(LOGPIXELSX);
printy=(LOGPIXELSY);
ratex=(double)(printx)/screenx;
ratey=(double)(printy)/screeny;
DrawText(&dc,TRUE);
}
}
6.7.6利用“文件阅读”对话框选择文件夹
主程序名:
Browse
一、
对话框ID:
IDD_BROWSE_DIALOG
对话框标:
利用文件阅读对话框选择文件夹
按钮ID:
IDC_GETBROWSE
按钮题目:
选择文件夹
静态文本控件ID:
IDC_PATH
二、单击按钮事件:
voidCBrowseDlg:
:
OnGetbrowse()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringReturnPach;
TCHARszPath[_MAX_PATH];//保留途径变量
BROWSEINFObi;//BROWSEINFO结构变量
=NULL;//HWND句柄
=NULL;//默许值为NULL
=_T("文件阅读对话框");//对话框题目
=szPath;//选择文件夹途径
=BIF_RETURNONLYFSDIRS;//标记
=NULL;//默许值为NULL
=NULL;//回调消息
LPITEMIDLISTpItemIDList=SHBrowseForFolder(&bi);//显示文件阅读对话框
if(pItemIDList)
{
if(SHGetPathFromIDList(pItemIDList,szPath))//判定是不是取得文件夹途径
ReturnPach=szPath;
}
else
{
ReturnPach="";//文件夹途径为空
}
(ReturnPach);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 通用 对话框 应用 程序设计