Вход на сайт
Воспоминание Embedded ч2 27.11.2024
504 просмотров
Перейти к просмотру всей ветки
uscheswoi_82 коренной житель
в ответ uscheswoi_82 7 дней назад, 22:22
Продолжим. Сегодня сделает программу телефонная книга, которая записывает в файл имя, фамилию и телефон.
1. Короче интерфейс должен выглядет вот так, имя будет называться - m_firstname, фамилия - m_lastname, а номер телефона - m_phonenumber:
2. Телефонный номер должен вводить только числа, т.е. Zahl=True:
3. Меню будет пусть называться Save:
4. Вот код:
// mfc_fileDlg.cpp : Implementierungsdatei #include "stdafx.h" #include "mfc_file.h" #include "mfc_fileDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // Cmfc_fileDlg-Dialogfeld Cmfc_fileDlg::Cmfc_fileDlg(CWnd* pParent /*=NULL*/) : CDialog(Cmfc_fileDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void Cmfc_fileDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT1, m_firstname); DDX_Control(pDX, IDC_EDIT2, m_lastname); DDX_Control(pDX, IDC_EDIT3, m_phonenumber); } BEGIN_MESSAGE_MAP(Cmfc_fileDlg, CDialog) #if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP) ON_WM_SIZE() #endif //}}AFX_MSG_MAP ON_COMMAND(IDOK, &Cmfc_fileDlg::OnSave) END_MESSAGE_MAP() // Cmfc_fileDlg-Meldungshandler BOOL Cmfc_fileDlg::OnInitDialog() { CDialog::OnInitDialog(); // Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt // wenn das Hauptfenster der Anwendung kein Dialogfeld ist SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden if(!m_dlgCommandBar.Create(this) || !m_dlgCommandBar.InsertMenuBar(IDR_MAINFRAME)) { TRACE0("Fehler beim Erstellen der Befehlsleiste.\n"); return FALSE; // Fehler beim Erstellen } // TODO: Hier zusätzliche Initialisierung einfügen return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten } #if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP) void Cmfc_fileDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/) { if(AfxIsDRAEnabled()) { DRA::RelayoutDialog( AfxGetResourceHandle(), this->m_hWnd, DRA::GetDisplayMode() != DRA::Portrait ? MAKEINTRESOURCE(IDD_MFC_FILE_DIALOG_WIDE) : MAKEINTRESOURCE(IDD_MFC_FILE_DIALOG)); } } #endif void Cmfc_fileDlg::OnSave() { // TODO: Fügen Sie hier Ihren Befehlsbehandlungscode ein. struct DATABANK { wchar_t firstname[80]; wchar_t lastname[80]; wchar_t phone[15]; }; DATABANK db; CFile f(_T("databank.bin"), CFile::modeCreate|CFile::modeWrite|CFile::typeBinary); CString c; m_firstname.GetWindowTextW(c); wcscpy(db.firstname, c); m_lastname.GetWindowTextW(c); wcscpy(db.lastname, c); m_phonenumber.GetWindowTextW(c); wcscpy(db.phone, c); f.Write((void *)&db, sizeof(struct DATABANK)); f.Close(); }
5. Вуаля!
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
Дневник тяжелобольного инвалида