C
C
Guest
Eu estou tentando aprender mfc em meu próprio através de tentativa e erro...Até agora eu descobri muitas das coisas, mas ainda há 1 coisa que eu não entendo...
Eu usei o MFC Application (VC . NET) para iniciar um projeto de diálogo com base, ele gera um código para OK, botão Cancelar, e que quer sair do programa ...
O programa também será encerrado quando a tecla Esc é pressionado, eu descobri como ele existe, pressionando os dois botões, mas não consigo encontrar o código para onde ele sai quando a tecla Esc é pressionado
Código:
/ / Stdafx.h: include file para o sistema de arquivos padrão incluem,
/ / Ou projeto específico incluir arquivos que são usados com freqüência,
/ / Mas são alterados com pouca freqüência# pragma once# ifndef VC_EXTRALEAN
# define VC_EXTRALEAN / Excluir material raramente usado em cabeçalhos Windows
# endif/ / Modify a seguir define se você tiver que atingir uma plataforma antes de os especificados abaixo.
/ / Consulte o MSDN para obter as últimas informações sobre os valores correspondentes para diferentes plataformas.
# ifndef WINVER / / Permitir o uso de recursos específicos para Windows 95 e Windows NT 4 ou posterior.
# define WINVER 0x0400 / / Altere para o valor apropriado para destino do Windows 98 e Windows 2000 ou posterior.
# endif# ifndef _WIN32_WINNT / / Permitir o uso de recursos específicos para Windows NT 4 ou posterior.
# define _WIN32_WINNT 0x0400 / / Altere para o valor apropriado para destino do Windows 98 e Windows 2000 ou posterior.
# endif# ifndef _WIN32_WINDOWS / / Permitir o uso de recursos específicos para o Windows 98 ou posterior.
# define _WIN32_WINDOWS 0x0410 / / Altere para o valor apropriado para direcionar o Windows Me ou mais tarde.
# endif# ifndef _WIN32_IE / / Permitir o uso de recursos específicos para o IE 4.0 ou posterior.
# define _WIN32_IE 0x0400 / / Altere para o valor apropriado para direcionar IE 5.0 ou posterior.
# endif# define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS / / alguns construtores CString será explícita/ / Desliga escondendo do MFC de alguns comum e muitas vezes ignorada mensagens de aviso
# define _AFX_ALL_WARNINGS# include <afxwin.h> / / MFC core e componentes padrão
# include <afxext.h> / / extensões MFC# include <afxdtctl.h> / / MFC suporte para o Internet Explorer 4 controles comuns
# ifndef _AFX_NO_AFXCMN_SUPPORT
# include <afxcmn.h> / / MFC suporte para o Windows comum Controls
# endif / / _AFX_NO_AFXCMN_SUPPORT/ / Win32TestAppDlg.h: arquivo de cabeçalho
/ /# pragma once/ / Dialog CWin32TestAppDlg
CWin32TestAppDlg classe: public CDialog
(
/ / Construção
público:
CWin32TestAppDlg (CWnd * pParent = NULL); / construtor / standard/ / Dialog Data
enum (IDD = IDD_WIN32TESTAPP_DIALOG);protected:
DoDataExchange virtual void (* CDataExchange pDX); / / suporte DDX / DDV/ / Execução
protected:
M_hIcon HICON;/ / Generated message map functions
virtual BOOL OnInitDialog ();
afx_msg OnPaint ();
afx_msg HCURSOR OnQueryDragIcon ();
DECLARE_MESSAGE_MAP ()
);/ / Win32TestApp.h: arquivo de cabeçalho principal para o aplicativo PROJECT_NAME
/ /# pragma once# ifndef __AFXWIN_H__
# erro incluem 'stdafx.h' antes de incluir este arquivo para PCH
# endif# include "resource.h" / / principais símbolos/ / CWin32TestApp:
/ / Ver Win32TestApp.cpp para a execução desta classe
/ /CWin32TestApp classe: public CWinApp
(
público:
CWin32TestApp ();/ / Overrides
público:
virtual BOOL InitInstance ();/ / ExecuçãoDECLARE_MESSAGE_MAP ()
);theApp CWin32TestApp extern;/ / Stdafx.cpp: arquivo fonte que inclui apenas o padrão inclui
/ / Win32TestApp.pch será o cabeçalho pré-compilado
/ / Stdafx.obj conterá os pré-compilados tipo de informação# include "stdafx.h"
/ / Win32TestAppDlg.cpp: arquivo de implementação
/ /# include "stdafx.h"
# include "Win32TestApp.h"
# include "Win32TestAppDlg.h"# ifdef _DEBUG
# define new DEBUG_NEW
# endif/ / Dialog CWin32TestAppDlg
CWin32TestAppDlg:: CWin32TestAppDlg (CWnd pParent * / *= NULL * /)
: CDialog (CWin32TestAppDlg:: IDD, pParent)
(
m_hIcon AfxGetApp = () -> LoadIcon (IDR_MAINFRAME);
)CWin32TestAppDlg nulos:: DoDataExchange (CDataExchange * pDX)
(
CDialog:: DoDataExchange (PDX);
)BEGIN_MESSAGE_MAP (CWin32TestAppDlg, CDialog)
ON_WM_PAINT ()
ON_WM_QUERYDRAGICON ()
/ /)) AFX_MSG_MAP
END_MESSAGE_MAP ()/ / CWin32TestAppDlg manipuladores de mensagemBOOL CWin32TestAppDlg:: OnInitDialog ()
(
CDialog:: OnInitDialog ();/ / Definir o ícone para esse diálogo. O quadro faz isso automaticamente
/ / Quando a janela principal do aplicativo não é um diálogo
SetIcon (m_hIcon, TRUE); / / Set ícone grande
SetIcon (m_hIcon, FALSE); / / Set small icon/ / TODO: Add extra initialization herereturn TRUE; / / return TRUE a menos que você definir o foco para um controle
)/ / Se você adicionar um botão para minimizar o seu diálogo, você vai precisar do código abaixo
/ / Desenhar o ícone. Para aplicações MFC usando o documento / modelo de vista,
/ / Isto é feito automaticamente para você pelo quadro.CWin32TestAppDlg nulos:: OnPaint ()
(
if (IsIconic ())
(
CPaintDC dc (this); / contexto de dispositivo de / para a pinturaSendMessage (WM_ICONERASEBKGND, <WPARAM> reinterpret_cast (dc.GetSafeHdc ()), 0);/ / Center ícone no cliente retângulo
cxIcon int = GetSystemMetrics (SM_CXICON);
cyIcon int = GetSystemMetrics (SM_CYICON);
CRect rect;
GetClientRect (& rect);
int x = rect.Width (() - cxIcon 1) / 2;
y = rect.Height (() - cyIcon 1) / 2;/ / Draw the icon
dc.DrawIcon (x, y, m_hIcon);
)
diferente
(
CDialog:: OnPaint ();
)
)/ / O sistema chama essa função para obter o cursor exibido quando o usuário arrasta
/ / A janela minimizada.
HCURSOR CWin32TestAppDlg:: OnQueryDragIcon ()
(
return static_cast <HCURSOR> (m_hIcon);
)/ / Win32TestApp.cpp: Define os comportamentos de classe para a aplicação.
/ /# include "stdafx.h"
# include "Win32TestApp.h"
# include "Win32TestAppDlg.h"# ifdef _DEBUG
# define new DEBUG_NEW
# endif/ / CWin32TestAppBEGIN_MESSAGE_MAP (CWin32TestApp, CWinApp)
ON_COMMAND (ID_HELP, CWinApp:: OnHelp)
END_MESSAGE_MAP ()/ / Construção CWin32TestAppCWin32TestApp:: CWin32TestApp ()
(
/ / TODO: adicionar código de construção aqui,
/ / Coloque todos inicialização significativa na InitInstance
)/ / O primeiro e único objeto CWin32TestAppTheApp CWin32TestApp;/ / Inicialização CWin32TestAppBOOL CWin32TestApp:: InitInstance ()
(
CWinApp:: InitInstance ();/ / Standard initialization
/ / Se você não está usando esses recursos e deseja reduzir o tamanho
/ / Do seu executável final, você deve remover a partir do seguinte
/ / As rotinas de inicialização específicas que você não precisa
/ / Alterar a chave de registo em que os nossos definições são armazenadas
/ / TODO: Você deve modificar esta seqüência de caracteres para ser algo apropriado
/ / Como o nome da sua empresa ou organização
SetRegistryKey (_T ( "Local AppWizard-Generated Applications"));Dlg CWin32TestAppDlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal ();
if (nResponse == IDOK)
(
/ / TODO: Place code here to handle quando o diálogo é
/ / Despedida com OK
)
else if (nResponse == IDCANCEL)
(
/ / TODO: Place code here to handle quando o diálogo é
/ / Despedida com Cancelar
)/ / Como o diálogo foi fechada, FALSE retorno para que possamos sair do
/ / Aplicativo, em vez de começar a bomba do aplicativo de mensagens.
return FALSE;
)
Eu usei o MFC Application (VC . NET) para iniciar um projeto de diálogo com base, ele gera um código para OK, botão Cancelar, e que quer sair do programa ...
O programa também será encerrado quando a tecla Esc é pressionado, eu descobri como ele existe, pressionando os dois botões, mas não consigo encontrar o código para onde ele sai quando a tecla Esc é pressionado
Código:
/ / Stdafx.h: include file para o sistema de arquivos padrão incluem,
/ / Ou projeto específico incluir arquivos que são usados com freqüência,
/ / Mas são alterados com pouca freqüência# pragma once# ifndef VC_EXTRALEAN
# define VC_EXTRALEAN / Excluir material raramente usado em cabeçalhos Windows
# endif/ / Modify a seguir define se você tiver que atingir uma plataforma antes de os especificados abaixo.
/ / Consulte o MSDN para obter as últimas informações sobre os valores correspondentes para diferentes plataformas.
# ifndef WINVER / / Permitir o uso de recursos específicos para Windows 95 e Windows NT 4 ou posterior.
# define WINVER 0x0400 / / Altere para o valor apropriado para destino do Windows 98 e Windows 2000 ou posterior.
# endif# ifndef _WIN32_WINNT / / Permitir o uso de recursos específicos para Windows NT 4 ou posterior.
# define _WIN32_WINNT 0x0400 / / Altere para o valor apropriado para destino do Windows 98 e Windows 2000 ou posterior.
# endif# ifndef _WIN32_WINDOWS / / Permitir o uso de recursos específicos para o Windows 98 ou posterior.
# define _WIN32_WINDOWS 0x0410 / / Altere para o valor apropriado para direcionar o Windows Me ou mais tarde.
# endif# ifndef _WIN32_IE / / Permitir o uso de recursos específicos para o IE 4.0 ou posterior.
# define _WIN32_IE 0x0400 / / Altere para o valor apropriado para direcionar IE 5.0 ou posterior.
# endif# define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS / / alguns construtores CString será explícita/ / Desliga escondendo do MFC de alguns comum e muitas vezes ignorada mensagens de aviso
# define _AFX_ALL_WARNINGS# include <afxwin.h> / / MFC core e componentes padrão
# include <afxext.h> / / extensões MFC# include <afxdtctl.h> / / MFC suporte para o Internet Explorer 4 controles comuns
# ifndef _AFX_NO_AFXCMN_SUPPORT
# include <afxcmn.h> / / MFC suporte para o Windows comum Controls
# endif / / _AFX_NO_AFXCMN_SUPPORT/ / Win32TestAppDlg.h: arquivo de cabeçalho
/ /# pragma once/ / Dialog CWin32TestAppDlg
CWin32TestAppDlg classe: public CDialog
(
/ / Construção
público:
CWin32TestAppDlg (CWnd * pParent = NULL); / construtor / standard/ / Dialog Data
enum (IDD = IDD_WIN32TESTAPP_DIALOG);protected:
DoDataExchange virtual void (* CDataExchange pDX); / / suporte DDX / DDV/ / Execução
protected:
M_hIcon HICON;/ / Generated message map functions
virtual BOOL OnInitDialog ();
afx_msg OnPaint ();
afx_msg HCURSOR OnQueryDragIcon ();
DECLARE_MESSAGE_MAP ()
);/ / Win32TestApp.h: arquivo de cabeçalho principal para o aplicativo PROJECT_NAME
/ /# pragma once# ifndef __AFXWIN_H__
# erro incluem 'stdafx.h' antes de incluir este arquivo para PCH
# endif# include "resource.h" / / principais símbolos/ / CWin32TestApp:
/ / Ver Win32TestApp.cpp para a execução desta classe
/ /CWin32TestApp classe: public CWinApp
(
público:
CWin32TestApp ();/ / Overrides
público:
virtual BOOL InitInstance ();/ / ExecuçãoDECLARE_MESSAGE_MAP ()
);theApp CWin32TestApp extern;/ / Stdafx.cpp: arquivo fonte que inclui apenas o padrão inclui
/ / Win32TestApp.pch será o cabeçalho pré-compilado
/ / Stdafx.obj conterá os pré-compilados tipo de informação# include "stdafx.h"
/ / Win32TestAppDlg.cpp: arquivo de implementação
/ /# include "stdafx.h"
# include "Win32TestApp.h"
# include "Win32TestAppDlg.h"# ifdef _DEBUG
# define new DEBUG_NEW
# endif/ / Dialog CWin32TestAppDlg
CWin32TestAppDlg:: CWin32TestAppDlg (CWnd pParent * / *= NULL * /)
: CDialog (CWin32TestAppDlg:: IDD, pParent)
(
m_hIcon AfxGetApp = () -> LoadIcon (IDR_MAINFRAME);
)CWin32TestAppDlg nulos:: DoDataExchange (CDataExchange * pDX)
(
CDialog:: DoDataExchange (PDX);
)BEGIN_MESSAGE_MAP (CWin32TestAppDlg, CDialog)
ON_WM_PAINT ()
ON_WM_QUERYDRAGICON ()
/ /)) AFX_MSG_MAP
END_MESSAGE_MAP ()/ / CWin32TestAppDlg manipuladores de mensagemBOOL CWin32TestAppDlg:: OnInitDialog ()
(
CDialog:: OnInitDialog ();/ / Definir o ícone para esse diálogo. O quadro faz isso automaticamente
/ / Quando a janela principal do aplicativo não é um diálogo
SetIcon (m_hIcon, TRUE); / / Set ícone grande
SetIcon (m_hIcon, FALSE); / / Set small icon/ / TODO: Add extra initialization herereturn TRUE; / / return TRUE a menos que você definir o foco para um controle
)/ / Se você adicionar um botão para minimizar o seu diálogo, você vai precisar do código abaixo
/ / Desenhar o ícone. Para aplicações MFC usando o documento / modelo de vista,
/ / Isto é feito automaticamente para você pelo quadro.CWin32TestAppDlg nulos:: OnPaint ()
(
if (IsIconic ())
(
CPaintDC dc (this); / contexto de dispositivo de / para a pinturaSendMessage (WM_ICONERASEBKGND, <WPARAM> reinterpret_cast (dc.GetSafeHdc ()), 0);/ / Center ícone no cliente retângulo
cxIcon int = GetSystemMetrics (SM_CXICON);
cyIcon int = GetSystemMetrics (SM_CYICON);
CRect rect;
GetClientRect (& rect);
int x = rect.Width (() - cxIcon 1) / 2;
y = rect.Height (() - cyIcon 1) / 2;/ / Draw the icon
dc.DrawIcon (x, y, m_hIcon);
)
diferente
(
CDialog:: OnPaint ();
)
)/ / O sistema chama essa função para obter o cursor exibido quando o usuário arrasta
/ / A janela minimizada.
HCURSOR CWin32TestAppDlg:: OnQueryDragIcon ()
(
return static_cast <HCURSOR> (m_hIcon);
)/ / Win32TestApp.cpp: Define os comportamentos de classe para a aplicação.
/ /# include "stdafx.h"
# include "Win32TestApp.h"
# include "Win32TestAppDlg.h"# ifdef _DEBUG
# define new DEBUG_NEW
# endif/ / CWin32TestAppBEGIN_MESSAGE_MAP (CWin32TestApp, CWinApp)
ON_COMMAND (ID_HELP, CWinApp:: OnHelp)
END_MESSAGE_MAP ()/ / Construção CWin32TestAppCWin32TestApp:: CWin32TestApp ()
(
/ / TODO: adicionar código de construção aqui,
/ / Coloque todos inicialização significativa na InitInstance
)/ / O primeiro e único objeto CWin32TestAppTheApp CWin32TestApp;/ / Inicialização CWin32TestAppBOOL CWin32TestApp:: InitInstance ()
(
CWinApp:: InitInstance ();/ / Standard initialization
/ / Se você não está usando esses recursos e deseja reduzir o tamanho
/ / Do seu executável final, você deve remover a partir do seguinte
/ / As rotinas de inicialização específicas que você não precisa
/ / Alterar a chave de registo em que os nossos definições são armazenadas
/ / TODO: Você deve modificar esta seqüência de caracteres para ser algo apropriado
/ / Como o nome da sua empresa ou organização
SetRegistryKey (_T ( "Local AppWizard-Generated Applications"));Dlg CWin32TestAppDlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal ();
if (nResponse == IDOK)
(
/ / TODO: Place code here to handle quando o diálogo é
/ / Despedida com OK
)
else if (nResponse == IDCANCEL)
(
/ / TODO: Place code here to handle quando o diálogo é
/ / Despedida com Cancelar
)/ / Como o diálogo foi fechada, FALSE retorno para que possamos sair do
/ / Aplicativo, em vez de começar a bomba do aplicativo de mensagens.
return FALSE;
)