”MFC的问题

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;



 
嗨,
当U进入调速器,有一个这样的键类型的默认处理程序,同样的回车键,
这样的代码
, 这是植根于深基类,在您的CDialog类的情况,所以这里是什么ü需要做的处理这些键,
覆盖OnCancel()在您的CWin32TestAppDlg数字线划类方法,并在此函数不调用基成员。

 
同时,进一步解释了如何获取的信息的基类(CDialog),看到这行代码
BEGIN_MESSAGE_MAP(CWin32TestAppDlg,CDialog),这是什么说的是处理CWin32TestAppDlg那些处理已经确定,如果处理器没有找到然后搜索处理CDialog类中的所有邮件,并CDialog类有一个默认的实现来处理这个类型的信息和处理程序退出对话框。
你可以找到关于这一主题的更多信息,通过阅读
MFC的内部:内部的微软(三)基础类建筑
乔治谢泼德,斯科特温格

 
okies,我计算出来,它不会退出与ESC键了,谢谢...

现在我还有一个问题....

没有MFC的一些有点儿像WinAPI消息循环?地方在那里我可以继续updataing在屏幕上的一些文本按时间: - /

 
嗨,
是的,MFC的内部有一个消息循环运行,我会告诉ü如何accompolish什么ü想做的事情。

如果我理解正确ü要更新的一些基础上一段时间
, 屏幕上的文本。

解决方案:
在你的窗口,通过调用一个窗口定时器SetTimer(),这需要一个ID参数一定的识别号码以及milisec的和函数参数被调用时,设置为空,
现在使用类向导地图WM_TIMER消息在您的窗口类
, 这项职能将有一个ID参数
, 这项职能将得到每个
, 美在你指定的SetTimer()函数milisecs经过的调用。
现在乌拉圭回合结束时调用KillTimer()与身份证。

享受。

 
我认为
, 首先要解决我的问题,但这里的东西我试图做的说明

我们正在取得“自动游戏表”,其中costumer走进来,付一些钱,有一对表的顶灯和计算机的应该转机时间数额通过USB为csutomer的轻港口与一些电路我们作出。。。

现在有2种不同的方法,具有电路跟踪时间,或PC ...

我认为,U为有可能的解决办法说,但我gonna要进行这项工作,看看会发生什么

 
同时,也搞不清楚这点,u能举一个例子代码plz?

 
嗨,
我重视的一个示例程序使用的定时器,并会计算到一定数目
, 然后停止计时器,希望这可以帮助您。

 
感谢,但我仍然不工作

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="悲哀的" border="0" />

我究竟做错了什么?
很抱歉,您还没有登录查看此附件

 
C 中说:

感谢,但我仍然不工作
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="悲哀的" border="0" /> 我究竟做错了什么?
 

Welcome to EDABoard.com

Sponsor

Back
Top