MFC Masalah

C

C

Guest
Aku sedang mencoba mempelajari mfc pada saya sendiri melalui trial and error...Sejauh ini aku tahu banyak barang-barang, tapi masih ada 1 hal yang saya tidak mengerti...

Saya menggunakan MFC Application Wizard (VC . NET) untuk memulai sebuah dialog berbasis proyek, itu menghasilkan kode untuk OK, dan tombol Cancel yang kedua keluar program ...

Program ini juga keluar ketika tombol Esc ditekan, aku tahu bagaimana ia ada dengan menekan dua tombol, tapi aku tidak bisa menemukan kode untuk tempat keluar bila ditekan tombol Esc

Kode:

/ / Stdafx.h: include file untuk sistem standar termasuk file,

/ / Atau proyek meliputi spesifik file yang sering digunakan,

/ / Tapi jarang berubah# Pragma sekali# ifndef VC_EXTRALEAN

# define VC_EXTRALEAN / / Pengecualian jarang-digunakan barang dari Windows header

# endif/ / Ubah mendefinisikan berikut jika Anda harus menargetkan sebuah platform sebelum yang ditentukan di bawah ini.

/ / Lihat MSDN untuk info terbaru pada nilai-nilai untuk berbagai platform.

# ifndef WINVER / / Allow penggunaan fitur khusus untuk Windows 95 dan Windows NT 4 atau nanti.

# define WINVER 0x0400 / / Ubah ini untuk nilai yang sesuai untuk menargetkan Windows 98 dan Windows 2000 atau nanti.

# endif# ifndef _WIN32_WINNT / / Allow penggunaan fitur khusus untuk Windows NT 4 atau nanti.

# define _WIN32_WINNT 0x0400 / / Ubah ini untuk nilai yang sesuai untuk menargetkan Windows 98 dan Windows 2000 atau nanti.

# endif# ifndef _WIN32_WINDOWS / / Allow penggunaan fitur khusus untuk Windows 98 atau kemudian.

# define _WIN32_WINDOWS 0x0410 / / Ubah ini untuk nilai yang sesuai untuk menargetkan Windows Me atau lambat.

# endif# ifndef _WIN32_IE / / Allow penggunaan fitur spesifik ke IE 4.0 atau nanti.

# define _WIN32_IE 0x0400 / / Ubah ini untuk nilai yang sesuai untuk menargetkan IE 5.0 atau nanti.

# endif# define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS / / beberapa konstruktor akan CString eksplisit/ / Akan menonaktifkan MFC bersembunyi dari beberapa umum dan seringkali diabaikan dengan aman pesan peringatan

# define _AFX_ALL_WARNINGS# include <afxwin.h> / / MFC inti dan komponen standar

# include <afxext.h> / / MFC extensions# include <afxdtctl.h> / / MFC dukungan untuk Internet Explorer 4 Common Controls

# ifndef _AFX_NO_AFXCMN_SUPPORT

# include <afxcmn.h> / / MFC dukungan untuk Windows Common Controls

# endif / / _AFX_NO_AFXCMN_SUPPORT/ / Win32TestAppDlg.h: header file

/# Pragma sekali/ / CWin32TestAppDlg dialog

kelas CWin32TestAppDlg: CDialog publik

(

/ / Konstruksi

publik:

CWin32TestAppDlg (cwnd * pParent = NULL); / / standard constructor/ / Dialog Data

enum (IDD = IDD_WIN32TESTAPP_DIALOG);dilindungi:

virtual void DoDataExchange (CDataExchange * PDX); / / DDX / DDV dukungan/ / Pelaksanaan

dilindungi:

HICON m_hIcon;/ / Generated message fungsi peta

virtual bool OnInitDialog ();

afx_msg void OnPaint ();

afx_msg HCURSOR OnQueryDragIcon ();

DECLARE_MESSAGE_MAP ()

);/ / Win32TestApp.h: file header utama untuk aplikasi PROJECT_NAME

/# Pragma sekali# ifndef __AFXWIN_H__

# kesalahan termasuk 'stdafx.h' sebelum termasuk file ini untuk PCH

# endif# include "resource.h" / / main simbol-simbol/ / CWin32TestApp:

/ / Lihat Win32TestApp.cpp untuk pelaksanaan kelas ini

/kelas CWin32TestApp: CWinApp publik

(

publik:

CWin32TestApp ();/ / Menggantikan

publik:

virtual bool InitInstance ();/ / PelaksanaanDECLARE_MESSAGE_MAP ()

);extern CWin32TestApp theApp;/ / Stdafx.cpp: berkas sumber yang mencakup standar hanya mencakup

/ / Win32TestApp.pch akan menjadi pre-compiled header

/ / Stdafx.obj akan berisi pre-compiled informasi jenis# include "stdafx.h"
/ / Win32TestAppDlg.cpp: implementasi file

/# include "stdafx.h"

# include "Win32TestApp.h"

# include "Win32TestAppDlg.h"# ifdef _DEBUG

# define baru DEBUG_NEW

# endif/ / CWin32TestAppDlg dialog
CWin32TestAppDlg:: CWin32TestAppDlg (cwnd * pParent / *= NULL * /)

: CDialog (CWin32TestAppDlg:: IDD, pParent)

(

m_hIcon = AfxGetApp () -> LoadIcon (IDR_MAINFRAME);

)void CWin32TestAppDlg:: DoDataExchange (CDataExchange * PDX)

(

CDialog:: DoDataExchange (PDX);

)BEGIN_MESSAGE_MAP (CWin32TestAppDlg, CDialog)

ON_WM_PAINT ()

ON_WM_QUERYDRAGICON ()

/ /)) AFX_MSG_MAP

END_MESSAGE_MAP ()/ / Pesan CWin32TestAppDlg penanganBOOL CWin32TestAppDlg:: OnInitDialog ()

(

CDialog:: OnInitDialog ();/ / Set ikon untuk dialog ini. Kerangka melakukan hal ini secara otomatis

/ / Saat aplikasi jendela utama bukanlah dialog

SetIcon (m_hIcon, TRUE); / / Set ikon besar

SetIcon (m_hIcon, FALSE); / / Set ikon kecil/ / TODO: Tambahkan extra initialization di sinireturn TRUE; / / return TRUE kecuali jika Anda mengatur fokus ke kontrol

)/ / Jika anda menambahkan sebuah tombol untuk meminimalkan dialog Anda, Anda akan memerlukan kode di bawah ini

/ / Untuk menggambar ikon. Untuk aplikasi MFC menggunakan dokumen / view model,

/ / Ini dilakukan secara otomatis untuk Anda oleh kerangka.void CWin32TestAppDlg:: OnPaint ()

(

if (IsIconic ())

(

Dc CPaintDC (ini); / / perangkat konteks untuk lukisanSendMessage (WM_ICONERASEBKGND, reinterpret_cast <WPARAM> (dc.GetSafeHdc ()), 0);/ / Center ikon di klien persegi panjang

int cxIcon = GetSystemMetrics (SM_CXICON);

int cyIcon = GetSystemMetrics (SM_CYICON);

CRect rect;

GetClientRect (& rect);

int x = (rect.Width () - cxIcon 1) / 2;

int y = (rect.Height () - cyIcon 1) / 2;/ / Menggambar ikon

dc.DrawIcon (x, y, m_hIcon);

)

lain

(

CDialog:: OnPaint ();

)

)/ / Sistem panggilan fungsi ini untuk mendapatkan kursor untuk menampilkan sementara pengguna menyeret

/ / Jendela yang diminimalkan.

HCURSOR CWin32TestAppDlg:: OnQueryDragIcon ()

(

kembali static_cast <HCURSOR> (m_hIcon);

)/ / Win32TestApp.cpp: Tetapkan perilaku kelas untuk aplikasi.

/# include "stdafx.h"

# include "Win32TestApp.h"

# include "Win32TestAppDlg.h"# ifdef _DEBUG

# define baru DEBUG_NEW

# endif/ / CWin32TestAppBEGIN_MESSAGE_MAP (CWin32TestApp, CWinApp)

ON_COMMAND (ID_HELP, CWinApp:: OnHelp)

END_MESSAGE_MAP ()/ / CWin32TestApp konstruksiCWin32TestApp:: CWin32TestApp ()

(

/ / TODO: tambahkan kode konstruksi di sini,

/ / Masukkan semua inisialisasi signifikan dalam InitInstance

)/ / Satu-satunya objek CWin32TestAppCWin32TestApp theApp;/ / CWin32TestApp initializationBOOL CWin32TestApp:: InitInstance ()

(

CWinApp:: InitInstance ();/ / Standard initialization

/ / Jika Anda tidak menggunakan fitur ini dan ingin mengurangi ukuran

/ / Dari eksekusi akhir Anda, Anda harus menghapus dari berikut

/ / Inisialisasi spesifik rutinitas Anda tidak perlu

/ / Mengubah kunci registri di mana pengaturan kami disimpan

/ / TODO: Anda harus memodifikasi string ini menjadi sesuatu yang sesuai

/ / Seperti nama perusahaan atau organisasi Anda

SetRegistryKey (_t ( "Lokal AppWizard-Generated Aplikasi"));CWin32TestAppDlg dlg;

m_pMainWnd = &dlg;

INT_PTR nResponse = dlg.DoModal ();

if (nResponse == IDOK)

(

/ / TODO: Place code di sini untuk menangani saat dialog

/ / Diberhentikan dengan OK

)

else if (nResponse == IDCANCEL)

(

/ / TODO: Place code di sini untuk menangani saat dialog

/ / Diberhentikan dengan Batal

)/ / Karena dialog telah ditutup, return sehingga kita keluar dari

/ / Aplikasi, bukan memulai pesan aplikasi pompa.

return FALSE;

)

 
hai,
ketika u memasukkan ESC, ada handler default untuk jenis kunci, juga untuk tombol enter,
sehingga kode ini tertanam jauh di dalam kelas dasar, dalam kasus Anda di CDialog kelas, jadi di sini adalah apa yang u harus dilakukan untuk menangani kunci ini,
menimpa OnCancel () metode CWin32TestAppDlg dlg di kelas, dan dalam fungsi ini tidak menyebut dasar anggota.

 
juga, untuk lebih menjelaskan kepada Anda bagaimana pesan sampai ke kelas dasar (CDialog), melihat baris kode ini
BEGIN_MESSAGE_MAP (CWin32TestAppDlg, CDialog), apa kata ini adalah menangani semua pesan dalam penangan CWin32TestAppDlg yang telah ditetapkan, jika penangan belum ditemukan kemudian mencari CDialog penangan di kelas, dan kelas CDialog implementasi yang standar untuk menangani hal ini jenis pesan dan penangan keluar dialog.
Anda dapat menemukan lebih banyak informasi tentang topik ini, dengan membaca
MFC internals: Inside Microsoft (c) Yayasan Kelas Arsitektur
oleh George Shepherd, Scot Wingo

 
okies, saya pikir itu keluar, tidak akan keluar dengan tombol Esc lagi, terima kasih ...

sekarang aku punya pertanyaan lain ....

tidak MFC memiliki beberapa pesan kinda loop seperti WinAPI?suatu tempat di mana aku bisa terus updataing beberapa teks pada layar sesuai dengan waktu: - /

 
hai,
Ya, MFC memiliki pesan internal loop berjalan, saya akan kirim u bagaimana u accompolish apa yang ingin lakukan.

if i u memahami benar ingin memperbarui beberapa teks pada layar didasarkan pada beberapa waktu.

solusi:
Pada jendela Anda, mulailah sebuah jendela timer dengan menelepon SetTimer (), ini memerlukan sebuah ID parameter beberapa nomor untuk identifikasi dan waktu pada milisec dan parameter fungsi dipanggil, diatur ini null,
sekarang menggunakan wizard kelas WM_TIMER peta pesan dalam jendela kelas dan fungsi ini akan memiliki ID parameter dan fungsi ini akan dipanggil di setiap milisecs u berlalu yang ditentukan dalam SetTimer Anda () function.
sekarang ketika panggilan selesai ur KillTimer () dengan ID.

menikmati.

 
i think yang akan memecahkan masalah saya, tapi inilah gambaran apa yang saya coba lakukan

kami sudah membuat "permainan otomatis tabel", di mana pelanggan berjalan masuk, membayar sejumlah uang, ada cahaya di atas meja, dan komputer seharusnya untuk mengaktifkan lampu untuk jumlah waktu yang csutomer dibayar melalui USB pelabuhan dengan beberapa rangkaian yang kami buat...

sekarang ada 2 pendekatan yang berbeda, memiliki sirkuit melacak waktu, atau pc ...

i think u apa yang dikatakan di atas sana mungkin menjadi solusi, tapi aku akan harus bekerja di atasnya, dan lihat apa yang terjadi

 
baik, tidak bisa mengetahuinya, bisa u memberikan kode contoh plz?

 
hai,
i have attached contoh program menggunakan timer, yang akan menghitung sampai jumlah tertentu dan kemudian menghentikan timer tersebut, harap ini akan membantu Anda.
Maaf, tapi Anda harus login untuk melihat lampiran

 
terima kasih, tapi saya masih tidak berfungsi

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

am i lakukan apa yang salah?
Maaf, tapi Anda harus login untuk melihat lampiran

 
C wrote:

terima kasih, tapi saya masih tidak berfungsi
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Sedih" border="0" /> am i lakukan apa yang salah?
 

Welcome to EDABoard.com

Sponsor

Back
Top