消息对话框.docx
- 文档编号:15484366
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:13
- 大小:18.94KB
消息对话框.docx
《消息对话框.docx》由会员分享,可在线阅读,更多相关《消息对话框.docx(13页珍藏版)》请在冰点文库上搜索。
消息对话框
//一。
应用程序类
CDlogApptheApp;
//唯一的应用程序类CDlogApp的实例对象
BOOLCDlog:
:
InitInstance()//应用程序初始化
{
AfxEnableControcontainer();//标准初始化
CDlogdlg;//主对话框类实例对象
m_pMainWnd=&dlg;//赋给应用程序类成员
intnResponse=dlg.DoModal();//显示主对话框窗口
returnFALSE;
}
//二。
主对话框窗口类
//包含构造函数CDlogDlg,数据交换函数DoDataExchange,初始化对话框函数OnInitDialog,绘制函数OnPaint等。
CDlogDlg:
:
CDlogDlg(CWnd*pParent/*=NULL*/)//构造函数
:
CDialog(CDlogDlg:
:
IDD,pParent)
{
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
//载入对话框窗口图标
}
//动态数据交换
VoidCDlogDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
}
//初始化对话框
BOOLCDlogDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//将About菜单项添加到系统菜单
//设置对话框图标
//在此添加初始化代码
returnTRUE;
}
//系统命令消息响应函数
BOOLCDlogDlg:
:
OnSysCommand(UINTnID,LPARAMIParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,IParam);
}
}
//窗口绘制
voidCDlogDlg:
:
OnPaint()
{
If(IsIconic())//包含图标
{
CPaintDCdc(this);//CPaintDC实例
SendMessage(WM_ICONERASEBKGND,
(WPARAM)dc.GetSafeHdc(),0);//发送消息
//将图标放置在客户区中间
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
dc.DrawIcon(x,y,m_hIcon);//绘制图标
}
else//未包含图标
{
CDialog:
:
OnPaint();
}
}
HCURSORCDlogDlg:
:
OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
三。
消息对话框
IntMessageBox
(
LPCTSTRlpszText,//提示信息内容
LPCTSTRlpszCaption,//消息对话框标题
UINTnType//消息对话框的样式
);
//消息对话框样式
MB_ICONHAND、MB_ICONSTOP、MB_ICONERROR
MB_ICONEXCLAMATION、MB_ICONWARNING
MB_ICONQUESTION
MB_ICONASTERISK、MB_ICONINFORMATION
//消息对话框按钮类型
MB_OK
MB_OKCANCEL
MB_YESNO
MB_YESNOCANCEL
MB_RETRYCANCEL
MB_ABORTRETRYINGNORE
//消息对话框返回值及其含义
返回值含义
IDABORT单击Abort(放弃)按钮
IDCANCEL单击Cancel(取消)按钮
IDIGNORE单击Ignore(忽略)按钮
IDNO单击No(否)按钮
IDOK单击Ok(确定)按钮
IDRETRY单击Retry(重试)按钮
IDYES单击Yes(确定)按钮
//消息对话框的其他样式
样式参数样式说明
MB_DEFBUTTONx设置第x个按钮为默认按钮,其中x=1~4
MB_HELP添加“希望”按钮
MB_RIGHT提示信息内容右对齐
MB_SETFORGROUND消息对话框显示在桌面的最前面
MB_TOPMOST消息对话框总显示在桌面的最前面
四.公用对话框
由CCommonDialog派生而来
1.文件对话框
文件对话框(CFileDialog)可以实现Windows标准的Open(打开),SaveAs(保存)对话框。
CFileDialog类对象构造如下:
CFileDialog(
BOOLbOpenFileDialog,//文件对话框类型
LPCTSTRlpszDefExt=NULL,//默认文件扩展名
LPCTSTRlpszFileName=NULL,//文件名
DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,//文件造作标记
LPCTSTRlpszFilter=NULL,//过滤器
CWnd*pParentWnd=NULL//父窗口指针
);
CfileDialog提供了以下若干成员函数,用于获取文件信息
CStringGetPathName:
返回所选文件的完整路径。
CStringGetFileName:
返回所选文件的完整名称。
CStringGetFileExt:
返回所选文件的扩展名。
CStringGetFileTitle:
返回所选文件的标题名。
2.“字体”对话框
CFontDialog(
LPLOGFONTlplfInitial=NULL,//初始化字符字体
DWORDdwFlags=CF_EFFECTS|CF_SCREENFONTS,
//字体选择标记
CDC*pdcPrinter=NULL,//打印设备
CWnd*pParentWnd=NULL//父窗口指针
)
CFontDialog提供了以下若干成员函数,用于获取字体信息
voidGetCurrentFont:
返回当前所选的字体
CStringGetFaceName:
返回所选字体的字体名称
CStringGetStyleName:
返回所选字体的样式名称
IntGetSize:
返回所选字体的大小
COLORREFGetColor:
返回所选字体的颜色
intGetWeight:
返回所选字体的磅数
BOOLIsStrikeOut:
确定字体是否带有删除线
BOOLIsUnderLine:
确定字体是否带有下划线
BOOLIsBold:
确定字体是否为粗体
BOOLIsItalic:
确定字体是否为斜体
3.“颜色”对话框
CColorDialog(
COLORREFcleInit=0,//默认选择的颜色
DWORDdwFlags=0,//颜色选择标记
CWnd*pParentWnd=NULL//父窗口指针
);
COLORREFGetColor:
返回当前选择的颜色
COLORREF*GetSavedCustomColors:
返回所选的颜色
VoidSetCurrentColor:
设置当前的颜色
BOOLOnColorOK:
验证输入到对话框中的颜色
4.“页面设置”对话框
CpageSetupDialog(
//定制页面,设置对话框标记
DWORDdwFlags=
PSD_MARGINS|PSD_INWINININTLMEASURE,
//父窗口指针
CWnd*pParentWnd=NULL
)
CStringGetDeviceName:
返回所选打印机的设备名称
LPDEVMODEGetDevMode:
返回所选打印机的设备模式
CStringGetDriverName:
返回所选打印机的设备驱动
CStringGetPortName:
返回所选打印机的输出端口名称
CSizeGetPaperSize:
返回所选打印机的页面大小
VoidGetMargins:
返回所选打印机的边距
5.“打印”对话框
CPrintDialog(
BOOLbPrintSetupOnly,//是否带设置对话框
DWORDdwFlags=PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_NOPAGENUMS
PD_HIDEPRINTTOFILE|PD_NOSELECTION
CWnd*pParentWnd=NULL//父窗口指针
);
IntGetCopies:
返回请求的副本数
BOOLGetDefaults:
返回默认的设备
IntGetFromPage:
返回打印范围的开始页
IntGetToPage:
返回打印范围的结束页
HDCGetPrinterDC:
返回打印设备句柄
BOOLPrintAll:
确定是否打印全部文档
BOOLPrintCollate:
确定是否自动分页
BOOLPrintRange:
确定是否仅打印页面的制定范围
BOOLPrintSelection:
确定是否进打印当前选择的项目
6.“查找替换”对话框
CFindReplaceDialog(
BOOLCreate(
BOOLbFindDialogOnly,//显示“查找”或“查找替换”对话框
LPCTSTRlpszFindWhat,//指定搜索的字符串
LPCTSTRlpszReplaceWith=NULL,//指定替换字符串
DWORDdwFlags=FR_DOWN,//定制查找替换标记
CWnd*pParentWnd=NULL//父窗口指针
)
);
BOOLFindNext:
搜索下一个匹配的字符串
CFindReplaceDialog*PASCALGetNotifier:
返回当前对话框的指针
CStringGetFindString:
返回搜索的默认字符串
CStringGetReplaceString:
返回替换字符串
BOOLIsTerminating:
确定是否终止了对话框
BOOLMathCase:
确定字符串是否大小写完全匹配
BOOLMathWholeWord:
确定字符串是否整字匹配
BOOLReplaceAll:
确定是否全部替换所有搜索到的字符串
BOOLReplaceCurrent:
确定是否替换当前字符串
BOOLSearchDown:
确定是否向下搜索
五.标准消息
1.Windows消息
消息类型,从功能上大致可分为以下3种:
A.标准消息:
以WM_为前缀的消息。
除了(WM_COMMAND)。
B.命令消息:
以WM_COMMAND为消息名称,在消息中包含有命令的标识符和ID,用以区分菜单栏,工具栏,快捷键。
C.通知消息:
以WM_COMMAND为消息名称,是Windows窗口中的控件或子窗口发送给父窗口的通知消息。
2.消息处理
A.消息响应
Windows将每个事件都封装成一个称为消息的结构体MSG中,并将其传递给应用程序。
定义如下:
TypedefstructtagMSG{//MSG结构体
HWNDhwnd;//接收消息的窗口句柄
UINTmessage;//消息标记号
WPARAMwParam;//消息的WPARAM参数
LPARAMlParam;//消息的LPARAM参数
DWORDtime;//制定消息发送的时间
POINTpt;//指定光标位置
}MSG;
B.消息映射
B.1在类的定义中添加一行宏调用
ClassCDlogApp:
:
publicCwinApp
{
DECLARE_MESSAGE_MAP()//宏调用
}
B.2在类的实现中添加消息映射
BEGIN_MESSAGE_MAP(CDlogApp,CWinApp)
//消息映射表开始
ON_COMMAND(ID_APP_ABOUT,OnAppAbout)//消息映射入口
END_MESSAGE_MAP()
C.消息响应函数
C.1在类的定义中添加该消息函数的函数声明
Afx_msgvoidOnAppAbout()
{}
3.键盘消息
WM_CHAR:
放下并放开一个键,输入了一个字符
WM_KEYDOWN:
按下一个键
WM_KEYUP:
释放一个键
WM_CHAR的消息响应函数为OnChar,声明如下:
Afx_msgvoidOnChar(
UINTnChar,//按键的字符代码
UINTnRepCnt,//按键的重复次数
UINTnFlag//扫描码、先前建状态、键转换状态等
)
4.鼠标消息
WM_LBUTTONDOWN:
按下鼠标左键
WM_LBUTTONUP:
释放鼠标左键
WM_LBUTTONDBLCLK:
双击鼠标左键
WM_RBUTTONDOWN:
按下鼠标右键
WM_RBUTTONUP:
释放鼠标右键
WM_RBUTTONDBLCLK:
双击鼠标右键
WM_MOUSEMOVE:
移动鼠标
Afx_msgvoidOnLButtonDown(
UINTnFlags,//虚拟键是否被按下
CPointpoint//光标的位置(基于设备坐标系)
)
5.窗口消息
WM_CHREATE:
创建窗口,可加入初始化代码
WM_CLOSE:
关闭窗口之前
WM_DESTROY:
销毁窗口之前
WM_PAINT:
重绘窗口
WM_SIZE:
改变窗口大小
WM_MOVE:
移动窗口
Afx_msgintOnCreate(
LPCREATESTRUCTlpCreateStruct
);
Afx_msxvoidOnPaint();
Afx_msgvoidOnSize(
UINTnType//改变大小的类型
Intcx,//新窗口客户去的宽度
Intcy//新窗口客户去的高度
);
Afx_msgvoidOnMove(
Intcx,//窗口新位置的x坐标
Intcy//窗口新位置的y坐标
);
6.定时消息
WM_TIMER定时器消息函数声明
UINTSetTimer(
UINTnIDEvent,//非零的事件标识
UINTnElapse,//计时器间隔时间
Void(CALLBACKEXPORT*lpfnTimer)(HWND,UINT,UINT,DWORD)
);
Afx_msgvoidOnTimer(
UINTnIDEvent//SetTimer函数制定的事件标识
);
7.命令消息
当用户选择一个菜单命令、单击一个工具栏按钮或按下一个快捷键时,就会产生消息WM_COMMAND
BEGIN_MESSAGE_MAP(CDlogApp,CWinApp)
//消息映射表开始
ON_COMMAND(ID_APP_ABOUT,OnAppAbout)//消息映射入口
ON_COMMAND(ID_FILE_NEW,CWinApp:
:
OnFileNew)
ON_COMMAND(ID_FILE_OPEN,CWinApp:
:
OnFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp:
:
OnFilePrintSetUp)
END_MESSAGE_MAP()
可以看到,命令消息影射的一半形式如下:
ON_COMMAND(ID_XXX,OnXXX)
其中ID_XXX为该命令消息响应函数对应的菜单、工具栏按钮或快捷键标识的ID
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 消息 对话框
![提示](https://static.bingdoc.com/images/bang_tan.gif)