C
C
Guest
我想以我个人的学习
, 通过试验和错误的MFC。。。到目前为止
, 我已经想出了很多新东西,但还是有一事我不明白。。。
我用MFC应用程序向导(VC 的。NET中)开始对话为基础的项目,它生成一个确定,取消按钮代码
, 都退出程序...
这个计划还出入口Esc键被按下时,我想通了
, 如何按这两个按钮存在,但我不能找到在它退出时
, 按下Esc键的代码
代码:
/ / stdafx.h中:包括对标准的系统文件,包括文件,
/ /或项目具体包括那些经常使用的文件,
/ /但不常更改#杂注一次#ifndef VC_EXTRALEAN
#定义VC_EXTRALEAN / /排除很少使用的东西从Windows头
#endif/ /修改下面的定义,如果你有目标的平台前,下述的。
/ /请参阅MSDN上的不同平台的相应值的最新信息。
#WINVER / ifndef /允许使用特定于Windows 95和Windows NT 4或更高版本。
#定义WINVER 0x0400 / /将此更改为适当的值针对Windows 98和Windows 2000或更高。
#endif#ifndef _WIN32_WINNT / /允许使用特定于Windows NT 4或更高版本。
#定义_WIN32_WINNT 0x0400 / /将此更改为适当的值针对Windows 98和Windows 2000或更高。
#endif#/ ifndef _WIN32_WINDOWS /允许使用特定于Windows 98或更高版本。
#定义_WIN32_WINDOWS 0x0410 / /将此更改为适当的值针对Windows Me或更高版本。
#endif#ifndef _WIN32_IE / /允许使用特定的功能的IE 4.0或更高版本。
#定义_WIN32_IE 0x0400 / /将此更改为适当的值针对IE 5.0或更高版本。
#endif#定义_ATL_CSTRING_EXPLICIT_CONSTRUCTORS / / C字符串构造部分将明确/ /关闭MFC的隐藏了一些常见,经常地忽略警告消息
#定义_AFX_ALL_WARNINGS#包括<afxwin.h> / / MFC的核心和标准组件
#包括<afxext.h> / / MFC的扩展#包括<afxdtctl.h> / / MFC的用于Internet Explorer 4公共控件的支持
#ifndef _AFX_NO_AFXCMN_SUPPORT
#包括<afxcmn.h> / / MFC的Windows公共控件的支持
#endif / / _AFX_NO_AFXCMN_SUPPORT/ / Win32TestAppDlg.h:头文件
/ /#杂注一次/ / CWin32TestAppDlg对话
类CWin32TestAppDlg:公共CDialog
(
/ /建筑
市民:
CWin32TestAppDlg(cwnd的* pParent =空); / /标准构造/ /对话框数据
枚举(长途= IDD_WIN32TESTAPP_DIALOG);保护:
虚拟无效DoDataExchange(CDataExchange * pDX); / /的DDX / DDV支持/ /执行
保护:
惠康m_hIcon;/ /生成的消息映射函数
虚拟布尔OnInitDialog();
afx_msg无效OnPaint中();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
);/ / Win32TestApp.h:项目名称为应用程序的主头文件
/ /#杂注一次#ifndef __AFXWIN_H__
#错误包括'stdafx.h中'此之前,包括为PCH文件
#endif#包括“resource.h中”/ /主符号/ / CWin32TestApp:
/ /见本类实现Win32TestApp.cpp
/ /类CWin32TestApp:公众的CWinApp
(
市民:
CWin32TestApp();/ /覆盖
市民:
虚拟布尔的InitInstance();/ /执行DECLARE_MESSAGE_MAP()
);EXTERN的CWin32TestApp theApp;/ / stdafx.cpp:源文件,其中包括刚刚标准
/ / Win32TestApp.pch将是预编译头
/ / stdafx.obj将包含预编译类型信息#包括“stdafx.h中”
/ / Win32TestAppDlg.cpp:实现文件
/ /#包括“stdafx.h中”
#包括“Win32TestApp.h”
#包括“Win32TestAppDlg.h”#ifdef _DEBUG
#定义新DEBUG_NEW
#endif/ / CWin32TestAppDlg对话
CWin32TestAppDlg::CWin32TestAppDlg(cwnd的* pParent / *=空* /)
:CDialog(CWin32TestAppDlg::国际直拨电话,pParent)
(
m_hIcon = AfxGetApp() - “LoadIcon(IDR_MAINFRAME);
)无效CWin32TestAppDlg::DoDataExchange(CDataExchange * pDX)
(
CDialog::DoDataExchange(pDX);
)BEGIN_MESSAGE_MAP(CWin32TestAppDlg,CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
/ /))AFX_MSG_MAP
END_MESSAGE_MAP()/ / CWin32TestAppDlg消息处理程序布尔CWin32TestAppDlg::OnInitDialog函数()
(
CDialog::OnInitDialog函数();/ /设置此对话框的图标。框架自动执行此
/ /当应用程序的主窗口不是对话框
操作SetIcon(m_hIcon,真); / /设置大图标
操作SetIcon(m_hIcon,假); / /设置小图标/ / TODO:在此处添加额外的初始化返回TRUE; / /返回TRUE,除非您将焦点设置到控件
)/ /如果添加最小化按钮到您的对话框,您需要下面的代码
/ /来绘制该图标。为MFC应用程序使用的文档/视图模型,
/ /这是为您自动完成的框架。无效CWin32TestAppDlg::OnPaint中()
(
如果(IsIconic())
(
CPaintDC直流(本); / /用于绘制的设备上下文SendMessage消息(WM_ICONERASEBKGND,reinterpret_cast <WPARAM>(dc.GetSafeHdc()),0);/ /中心在客户端的图标矩形
廉政cxIcon = GetSystemMetrics(SM_CXICON);
廉政cyIcon = GetSystemMetrics(SM_CYICON);
CRect矩形;
GetClientRect(&矩形);
廉政X二(rect.Width() - cxIcon 1)/ 2;
廉政ý =(rect.Height() - cyIcon 1)/ 2;/ /绘制图标
dc.DrawIcon(的x,y,m_hIcon);
)
其他的
(
CDialog::OnPaint中();
)
)/ /系统调用此函数取得光标显示当用户拖动
/ /最小化窗口。
HCURSOR CWin32TestAppDlg::OnQueryDragIcon()
(
返回static_cast <HCURSOR>(m_hIcon);
)/ / Win32TestApp.cpp:定义应用程序类的行为。
/ /#包括“stdafx.h中”
#包括“Win32TestApp.h”
#包括“Win32TestAppDlg.h”#ifdef _DEBUG
#定义新DEBUG_NEW
#endif/ / CWin32TestAppBEGIN_MESSAGE_MAP(CWin32TestApp,CWinApp的)
ON_COMMAND(ID_HELP,的CWinApp::OnHelp)
END_MESSAGE_MAP()/ / CWin32TestApp建设CWin32TestApp::CWin32TestApp()
(
/ / TODO:在此处添加构造代码,
/ /将所有重要的初始化中的InitInstance
)/ /的唯一CWin32TestApp对象CWin32TestApp theApp;/ /初始化CWin32TestApp布尔CWin32TestApp::InitInstance中()
(
的CWinApp::InitInstance中();/ /标准初始化
/ /如果你不使用这些功能,并希望减少尺寸
/ /最终可执行文件,您应该删除以下
/ /初始化例程的具体不需要
/ /更改的注册表项下的设置存储
/ / TODO:在您应修改该字符串,一个适合
/ /如您的公司或组织名称
SetRegistryKey(_T(“本地应用程序向导生成的应用”));CWin32TestAppDlg数字线划图;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
如果(nResponse == IDOK)
(
/ / TODO:在此处放置代码来处理时,对话框
/ /驳回行
)
否则,如果(nResponse == IDCANCEL)
(
/ / TODO:在此处放置代码来处理时,对话框
/ /驳回取消
)/ /由于对话框已关闭,返回false,所以我们退出
/ /应用程序,而不是启动应用程序的消息泵。
返回FALSE;
)
, 通过试验和错误的MFC。。。到目前为止
, 我已经想出了很多新东西,但还是有一事我不明白。。。
我用MFC应用程序向导(VC 的。NET中)开始对话为基础的项目,它生成一个确定,取消按钮代码
, 都退出程序...
这个计划还出入口Esc键被按下时,我想通了
, 如何按这两个按钮存在,但我不能找到在它退出时
, 按下Esc键的代码
代码:
/ / stdafx.h中:包括对标准的系统文件,包括文件,
/ /或项目具体包括那些经常使用的文件,
/ /但不常更改#杂注一次#ifndef VC_EXTRALEAN
#定义VC_EXTRALEAN / /排除很少使用的东西从Windows头
#endif/ /修改下面的定义,如果你有目标的平台前,下述的。
/ /请参阅MSDN上的不同平台的相应值的最新信息。
#WINVER / ifndef /允许使用特定于Windows 95和Windows NT 4或更高版本。
#定义WINVER 0x0400 / /将此更改为适当的值针对Windows 98和Windows 2000或更高。
#endif#ifndef _WIN32_WINNT / /允许使用特定于Windows NT 4或更高版本。
#定义_WIN32_WINNT 0x0400 / /将此更改为适当的值针对Windows 98和Windows 2000或更高。
#endif#/ ifndef _WIN32_WINDOWS /允许使用特定于Windows 98或更高版本。
#定义_WIN32_WINDOWS 0x0410 / /将此更改为适当的值针对Windows Me或更高版本。
#endif#ifndef _WIN32_IE / /允许使用特定的功能的IE 4.0或更高版本。
#定义_WIN32_IE 0x0400 / /将此更改为适当的值针对IE 5.0或更高版本。
#endif#定义_ATL_CSTRING_EXPLICIT_CONSTRUCTORS / / C字符串构造部分将明确/ /关闭MFC的隐藏了一些常见,经常地忽略警告消息
#定义_AFX_ALL_WARNINGS#包括<afxwin.h> / / MFC的核心和标准组件
#包括<afxext.h> / / MFC的扩展#包括<afxdtctl.h> / / MFC的用于Internet Explorer 4公共控件的支持
#ifndef _AFX_NO_AFXCMN_SUPPORT
#包括<afxcmn.h> / / MFC的Windows公共控件的支持
#endif / / _AFX_NO_AFXCMN_SUPPORT/ / Win32TestAppDlg.h:头文件
/ /#杂注一次/ / CWin32TestAppDlg对话
类CWin32TestAppDlg:公共CDialog
(
/ /建筑
市民:
CWin32TestAppDlg(cwnd的* pParent =空); / /标准构造/ /对话框数据
枚举(长途= IDD_WIN32TESTAPP_DIALOG);保护:
虚拟无效DoDataExchange(CDataExchange * pDX); / /的DDX / DDV支持/ /执行
保护:
惠康m_hIcon;/ /生成的消息映射函数
虚拟布尔OnInitDialog();
afx_msg无效OnPaint中();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
);/ / Win32TestApp.h:项目名称为应用程序的主头文件
/ /#杂注一次#ifndef __AFXWIN_H__
#错误包括'stdafx.h中'此之前,包括为PCH文件
#endif#包括“resource.h中”/ /主符号/ / CWin32TestApp:
/ /见本类实现Win32TestApp.cpp
/ /类CWin32TestApp:公众的CWinApp
(
市民:
CWin32TestApp();/ /覆盖
市民:
虚拟布尔的InitInstance();/ /执行DECLARE_MESSAGE_MAP()
);EXTERN的CWin32TestApp theApp;/ / stdafx.cpp:源文件,其中包括刚刚标准
/ / Win32TestApp.pch将是预编译头
/ / stdafx.obj将包含预编译类型信息#包括“stdafx.h中”
/ / Win32TestAppDlg.cpp:实现文件
/ /#包括“stdafx.h中”
#包括“Win32TestApp.h”
#包括“Win32TestAppDlg.h”#ifdef _DEBUG
#定义新DEBUG_NEW
#endif/ / CWin32TestAppDlg对话
CWin32TestAppDlg::CWin32TestAppDlg(cwnd的* pParent / *=空* /)
:CDialog(CWin32TestAppDlg::国际直拨电话,pParent)
(
m_hIcon = AfxGetApp() - “LoadIcon(IDR_MAINFRAME);
)无效CWin32TestAppDlg::DoDataExchange(CDataExchange * pDX)
(
CDialog::DoDataExchange(pDX);
)BEGIN_MESSAGE_MAP(CWin32TestAppDlg,CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
/ /))AFX_MSG_MAP
END_MESSAGE_MAP()/ / CWin32TestAppDlg消息处理程序布尔CWin32TestAppDlg::OnInitDialog函数()
(
CDialog::OnInitDialog函数();/ /设置此对话框的图标。框架自动执行此
/ /当应用程序的主窗口不是对话框
操作SetIcon(m_hIcon,真); / /设置大图标
操作SetIcon(m_hIcon,假); / /设置小图标/ / TODO:在此处添加额外的初始化返回TRUE; / /返回TRUE,除非您将焦点设置到控件
)/ /如果添加最小化按钮到您的对话框,您需要下面的代码
/ /来绘制该图标。为MFC应用程序使用的文档/视图模型,
/ /这是为您自动完成的框架。无效CWin32TestAppDlg::OnPaint中()
(
如果(IsIconic())
(
CPaintDC直流(本); / /用于绘制的设备上下文SendMessage消息(WM_ICONERASEBKGND,reinterpret_cast <WPARAM>(dc.GetSafeHdc()),0);/ /中心在客户端的图标矩形
廉政cxIcon = GetSystemMetrics(SM_CXICON);
廉政cyIcon = GetSystemMetrics(SM_CYICON);
CRect矩形;
GetClientRect(&矩形);
廉政X二(rect.Width() - cxIcon 1)/ 2;
廉政ý =(rect.Height() - cyIcon 1)/ 2;/ /绘制图标
dc.DrawIcon(的x,y,m_hIcon);
)
其他的
(
CDialog::OnPaint中();
)
)/ /系统调用此函数取得光标显示当用户拖动
/ /最小化窗口。
HCURSOR CWin32TestAppDlg::OnQueryDragIcon()
(
返回static_cast <HCURSOR>(m_hIcon);
)/ / Win32TestApp.cpp:定义应用程序类的行为。
/ /#包括“stdafx.h中”
#包括“Win32TestApp.h”
#包括“Win32TestAppDlg.h”#ifdef _DEBUG
#定义新DEBUG_NEW
#endif/ / CWin32TestAppBEGIN_MESSAGE_MAP(CWin32TestApp,CWinApp的)
ON_COMMAND(ID_HELP,的CWinApp::OnHelp)
END_MESSAGE_MAP()/ / CWin32TestApp建设CWin32TestApp::CWin32TestApp()
(
/ / TODO:在此处添加构造代码,
/ /将所有重要的初始化中的InitInstance
)/ /的唯一CWin32TestApp对象CWin32TestApp theApp;/ /初始化CWin32TestApp布尔CWin32TestApp::InitInstance中()
(
的CWinApp::InitInstance中();/ /标准初始化
/ /如果你不使用这些功能,并希望减少尺寸
/ /最终可执行文件,您应该删除以下
/ /初始化例程的具体不需要
/ /更改的注册表项下的设置存储
/ / TODO:在您应修改该字符串,一个适合
/ /如您的公司或组织名称
SetRegistryKey(_T(“本地应用程序向导生成的应用”));CWin32TestAppDlg数字线划图;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
如果(nResponse == IDOK)
(
/ / TODO:在此处放置代码来处理时,对话框
/ /驳回行
)
否则,如果(nResponse == IDCANCEL)
(
/ / TODO:在此处放置代码来处理时,对话框
/ /驳回取消
)/ /由于对话框已关闭,返回false,所以我们退出
/ /应用程序,而不是启动应用程序的消息泵。
返回FALSE;
)