Deutsch

Воспоминание Embedded ч2 27.11.2024

Сегодня, 03:51
Re: Воспоминание Embedded ч2 27.11.2024
 
uscheswoi_82 коренной житель
uscheswoi_82
в ответ uscheswoi_82 6 дней назад, 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. Вуаля!


Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение Дневник тяжелобольного инвалида
 

Перейти на