MFC Problema

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;

)

 
oi,
u quando entra CES, há um manipulador padrão para este tipo de chaves, de forma semelhante para tecla enter,
para que o código para isso é profundamente encaixados nas categorias de base, no seu caso em classe CDialog, então aqui é o que u preciso fazer para lidar com essas chaves,
substituir o OnCancel () método em sua classe CWin32TestAppDlg dlg, e nessa função não chamar o membro de base.

 
também, para explicar-lhe como a mensagem chega à classe base (CDialog), ver esta linha de código
BEGIN_MESSAGE_MAP (CWin32TestAppDlg, CDialog), o que este diz que é lidar com todas as mensagens de CWin32TestAppDlg para que manipuladores foram definidos, se um condutor não foi encontrado em seguida, procure manipuladores na classe CDialog, CDialog e classe tem uma implementação padrão para lidar com isso tipo de mensagem eo manipulador sai do diálogo.
Você pode encontrar mais informações sobre este assunto, pela leitura
MFC Internals: Dentro da Microsoft (c) Architecture Foundation Classes
por George Shepherd, Scot Wingo

 
okies, eu percebi isso, não vai sair com a tecla Esc. mais, obrigado ...

agora tenho outra pergunta ....

MFC não ter algum loop de mensagem tipo como a API do Windows?em algum lugar onde eu possa continuar a updataing algum texto na tela de acordo com o tempo: - /

 
oi,
Sim, MFC internamente tem um loop de mensagem correr, eu vou dizer como accompolish o que você deseja fazer.

Se eu entendi corretamente u quiser atualizar algum texto na tela com base em algum tempo.

Solução:
Em sua janela, iniciar um temporizador janela chamando SetTimer (), isso leva um parâmetro ID algum número de identificação e do tempo em MILISEC eo parâmetro de função a ser chamado, para definir este nulo,
agora com mensagem Visualizar assistente classe WM_TIMER na sua classe de janela e esta função tem um parâmetro ID e esta função será chamado a todos os que decorre milisecs u especificado no seu SetTimer () function.
Agora, quando terminou ur call KillTimer () com o ID.

apreciar.

 
Eu acho que ia resolver o meu problema, mas aqui está a descrição do que eu estou tentando fazer

nós estamos fazendo "mesas de jogo automático", onde o cliente entra, paga algum dinheiro, há uma luz em cima das mesas, eo computador era para ligar a luz para a quantidade de tempo que o csutomer pagos através do cabo USB porto com alguns circuitos que nós fizemos...

Agora há 2 abordagens diferentes, têm os circuitos de manter o controle de tempo, ou o PC ...

Acho que o que u disse lá em cima pode ser a solução, mas eu vou ter que trabalhar sobre ela, e ver o que acontece

 
bem, não poderia figurar para fora, pode u dar uma plz código de exemplo?

 
oi,
Anexei um exemplo de programa usando o timer, que vai contar até um determinado número e, em seguida, parar o temporizador, espero que isso ajude você.
Desculpe, mas você precisa de login para ver esta penhora

 
Obrigado, mas a minha ainda não está funcionando

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

O que estou fazendo de errado?
Desculpe, mas você precisa de login para ver esta penhora

 
C escreveu:

Obrigado, mas a minha ainda não está funcionando
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triste" border="0" /> O que estou fazendo de errado?
 

Welcome to EDABoard.com

Sponsor

Back
Top