<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=165.194.25.101</id>
	<title>ZeroWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=165.194.25.101"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php/Special:Contributions/165.194.25.101"/>
	<updated>2026-05-15T18:13:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EB%AA%A9%EC%9A%94%EC%9D%BC/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C/MFC/%EC%84%9C%EB%AF%BC%EA%B4%80&amp;diff=46363</id>
		<title>데블스캠프2009/목요일/연습문제/MFC/서민관</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EB%AA%A9%EC%9A%94%EC%9D%BC/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C/MFC/%EC%84%9C%EB%AF%BC%EA%B4%80&amp;diff=46363"/>
		<updated>2009-06-25T17:07:04Z</updated>

		<summary type="html">&lt;p&gt;165.194.25.101: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 데블스캠프2009/목요일/연습문제/MFC/서민관 =&lt;br /&gt;
&lt;br /&gt;
 // testMFCDlg.cpp : implementation file&lt;br /&gt;
 //&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFC.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFCDlg.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #ifdef _DEBUG&lt;br /&gt;
 #define new DEBUG_NEW&lt;br /&gt;
 #undef THIS_FILE&lt;br /&gt;
 static char THIS_FILE[] = __FILE__;&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CAboutDlg dialog used for App About&lt;br /&gt;
 &lt;br /&gt;
 double temp, res, sign;&lt;br /&gt;
 &lt;br /&gt;
 class CAboutDlg : public CDialog&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
 	CAboutDlg();&lt;br /&gt;
 	&lt;br /&gt;
 	// Dialog Data&lt;br /&gt;
 	//{{AFX_DATA(CAboutDlg)&lt;br /&gt;
 	enum { IDD = IDD_ABOUTBOX };&lt;br /&gt;
 	//}}AFX_DATA&lt;br /&gt;
 	&lt;br /&gt;
 	// ClassWizard generated virtual function overrides&lt;br /&gt;
 	//{{AFX_VIRTUAL(CAboutDlg)&lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support&lt;br /&gt;
 	//}}AFX_VIRTUAL&lt;br /&gt;
 	&lt;br /&gt;
 	// Implementation&lt;br /&gt;
 protected:&lt;br /&gt;
 	//{{AFX_MSG(CAboutDlg)&lt;br /&gt;
 	//}}AFX_MSG&lt;br /&gt;
 	DECLARE_MESSAGE_MAP()&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CAboutDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)&lt;br /&gt;
 //{{AFX_MSG_MAP(CAboutDlg)&lt;br /&gt;
 // No message handlers&lt;br /&gt;
 //}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFCDlg dialog&lt;br /&gt;
 &lt;br /&gt;
 CTestMFCDlg::CTestMFCDlg(CWnd* pParent /*=NULL*/)&lt;br /&gt;
 : CDialog(CTestMFCDlg::IDD, pParent)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CTestMFCDlg)&lt;br /&gt;
 	m_number = 0.0;&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32&lt;br /&gt;
 	m_hIcon = AfxGetApp()-&amp;amp;gt;LoadIcon(IDR_MAINFRAME);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CTestMFCDlg)&lt;br /&gt;
 	DDX_Control(pDX, IDC_BUTTON1, m_1);&lt;br /&gt;
 	DDX_Text(pDX, IDC_EDIT2, m_number);&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CTestMFCDlg, CDialog)&lt;br /&gt;
 //{{AFX_MSG_MAP(CTestMFCDlg)&lt;br /&gt;
 ON_WM_SYSCOMMAND()&lt;br /&gt;
 ON_WM_PAINT()&lt;br /&gt;
 ON_WM_QUERYDRAGICON()&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON1, OnButton1)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON2, OnButton2)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON3, OnButton3)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON4, OnButton4)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON6, OnButton6)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON7, OnButton7)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON11, OnButton11)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON12, OnButton12)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON13, OnButton13)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON5, OnButton5)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON8, OnButton8)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON14, OnButton14)&lt;br /&gt;
 //}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFCDlg message handlers&lt;br /&gt;
 &lt;br /&gt;
 BOOL CTestMFCDlg::OnInitDialog()&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::OnInitDialog();&lt;br /&gt;
 	&lt;br /&gt;
 	// Add &amp;quot;About...&amp;quot; menu item to system menu.&lt;br /&gt;
 	&lt;br /&gt;
 	// IDM_ABOUTBOX must be in the system command range.&lt;br /&gt;
 	ASSERT((IDM_ABOUTBOX &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX);&lt;br /&gt;
 	ASSERT(IDM_ABOUTBOX &amp;amp;lt; 0xF000);&lt;br /&gt;
 	&lt;br /&gt;
 	CMenu* pSysMenu = GetSystemMenu(FALSE);&lt;br /&gt;
 	if (pSysMenu != NULL)&lt;br /&gt;
 	{&lt;br /&gt;
 		CString strAboutMenu;&lt;br /&gt;
 		strAboutMenu.LoadString(IDS_ABOUTBOX);&lt;br /&gt;
 		if (!strAboutMenu.IsEmpty())&lt;br /&gt;
 		{&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_SEPARATOR);&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	// Set the icon for this dialog.  The framework does this automatically&lt;br /&gt;
 	//  when the application&#039;s main window is not a dialog&lt;br /&gt;
 	SetIcon(m_hIcon, TRUE);			// Set big icon&lt;br /&gt;
 	SetIcon(m_hIcon, FALSE);		// Set small icon&lt;br /&gt;
 	&lt;br /&gt;
 	// TODO: Add extra initialization here&lt;br /&gt;
 	&lt;br /&gt;
 	return TRUE;  // return TRUE  unless you set the focus to a control&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnSysCommand(UINT nID, LPARAM lParam)&lt;br /&gt;
 {&lt;br /&gt;
 	if ((nID &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX)&lt;br /&gt;
 	{&lt;br /&gt;
 		CAboutDlg dlgAbout;&lt;br /&gt;
 		dlgAbout.DoModal();&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnSysCommand(nID, lParam);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // If you add a minimize button to your dialog, you will need the code below&lt;br /&gt;
 //  to draw the icon.  For MFC applications using the document/view model,&lt;br /&gt;
 //  this is automatically done for you by the framework.&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnPaint() &lt;br /&gt;
 {&lt;br /&gt;
 	if (IsIconic())&lt;br /&gt;
 	{&lt;br /&gt;
 		CPaintDC dc(this); // device context for painting&lt;br /&gt;
 		&lt;br /&gt;
 		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);&lt;br /&gt;
 		&lt;br /&gt;
 		// Center icon in client rectangle&lt;br /&gt;
 		int cxIcon = GetSystemMetrics(SM_CXICON);&lt;br /&gt;
 		int cyIcon = GetSystemMetrics(SM_CYICON);&lt;br /&gt;
 		CRect rect;&lt;br /&gt;
 		GetClientRect(&amp;amp;amp;rect);&lt;br /&gt;
 		int x = (rect.Width() - cxIcon + 1) / 2;&lt;br /&gt;
 		int y = (rect.Height() - cyIcon + 1) / 2;&lt;br /&gt;
 		&lt;br /&gt;
 		// Draw the icon&lt;br /&gt;
 		dc.DrawIcon(x, y, m_hIcon);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnPaint();&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // The system calls this to obtain the cursor to display while the user drags&lt;br /&gt;
 //  the minimized window.&lt;br /&gt;
 HCURSOR CTestMFCDlg::OnQueryDragIcon()&lt;br /&gt;
 {&lt;br /&gt;
 	return (HCURSOR) m_hIcon;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton1() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 1;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton2() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 2;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton3() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 3;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton4() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 4;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton6() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 5;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton7() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 6;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton11() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 7;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton12() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 8;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton13() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 9;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton5() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	temp = m_number;&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 	sign = 0;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton8() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	temp = m_number;&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 	sign = 1;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton14() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	if (sign == 0)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_number = temp + m_number;&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (sign == 1)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_number = temp - m_number;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 뭔가 찜찜한 계산기. 구조상 *와 / 연산이 불가능하다... 또한 추가 함수를 만들지 않아서 버튼 구조를 똑같은 것을 9번 반복&lt;br /&gt;
&lt;br /&gt;
 // testMFC2Dlg.cpp : implementation file&lt;br /&gt;
 //&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFC2.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFC2Dlg.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #ifdef _DEBUG&lt;br /&gt;
 #define new DEBUG_NEW&lt;br /&gt;
 #undef THIS_FILE&lt;br /&gt;
 static char THIS_FILE[] = __FILE__;&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CAboutDlg dialog used for App About&lt;br /&gt;
 &lt;br /&gt;
 class CAboutDlg : public CDialog&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
 	CAboutDlg();&lt;br /&gt;
 &lt;br /&gt;
 // Dialog Data&lt;br /&gt;
 	//{{AFX_DATA(CAboutDlg)&lt;br /&gt;
 	enum { IDD = IDD_ABOUTBOX };&lt;br /&gt;
 	//}}AFX_DATA&lt;br /&gt;
 &lt;br /&gt;
 	// ClassWizard generated virtual function overrides&lt;br /&gt;
 	//{{AFX_VIRTUAL(CAboutDlg)&lt;br /&gt;
 	protected:&lt;br /&gt;
 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support&lt;br /&gt;
 	//}}AFX_VIRTUAL&lt;br /&gt;
 &lt;br /&gt;
 // Implementation&lt;br /&gt;
 protected:&lt;br /&gt;
 	//{{AFX_MSG(CAboutDlg)&lt;br /&gt;
 	//}}AFX_MSG&lt;br /&gt;
 	DECLARE_MESSAGE_MAP()&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CAboutDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)&lt;br /&gt;
 	//{{AFX_MSG_MAP(CAboutDlg)&lt;br /&gt;
 		// No message handlers&lt;br /&gt;
 	//}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFC2Dlg dialog&lt;br /&gt;
 &lt;br /&gt;
 CTestMFC2Dlg::CTestMFC2Dlg(CWnd* pParent /*=NULL*/)&lt;br /&gt;
 	: CDialog(CTestMFC2Dlg::IDD, pParent)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CTestMFC2Dlg)&lt;br /&gt;
 		// NOTE: the ClassWizard will add member initialization here&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32&lt;br /&gt;
 	m_hIcon = AfxGetApp()-&amp;amp;gt;LoadIcon(IDR_MAINFRAME);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFC2Dlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CTestMFC2Dlg)&lt;br /&gt;
 		// NOTE: the ClassWizard will add DDX and DDV calls here&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CTestMFC2Dlg, CDialog)&lt;br /&gt;
 	//{{AFX_MSG_MAP(CTestMFC2Dlg)&lt;br /&gt;
 	ON_WM_SYSCOMMAND()&lt;br /&gt;
 	ON_WM_PAINT()&lt;br /&gt;
 	ON_WM_QUERYDRAGICON()&lt;br /&gt;
 	ON_WM_KEYUP()&lt;br /&gt;
 	ON_WM_KEYDOWN()&lt;br /&gt;
 	//}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFC2Dlg message handlers&lt;br /&gt;
 &lt;br /&gt;
 BOOL CTestMFC2Dlg::OnInitDialog()&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::OnInitDialog();&lt;br /&gt;
 &lt;br /&gt;
 	// Add &amp;quot;About...&amp;quot; menu item to system menu.&lt;br /&gt;
 &lt;br /&gt;
 	// IDM_ABOUTBOX must be in the system command range.&lt;br /&gt;
 	ASSERT((IDM_ABOUTBOX &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX);&lt;br /&gt;
 	ASSERT(IDM_ABOUTBOX &amp;amp;lt; 0xF000);&lt;br /&gt;
 &lt;br /&gt;
 	CMenu* pSysMenu = GetSystemMenu(FALSE);&lt;br /&gt;
 	if (pSysMenu != NULL)&lt;br /&gt;
 	{&lt;br /&gt;
 		CString strAboutMenu;&lt;br /&gt;
 		strAboutMenu.LoadString(IDS_ABOUTBOX);&lt;br /&gt;
 		if (!strAboutMenu.IsEmpty())&lt;br /&gt;
 		{&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_SEPARATOR);&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	// Set the icon for this dialog.  The framework does this automatically&lt;br /&gt;
 	//  when the application&#039;s main window is not a dialog&lt;br /&gt;
 	SetIcon(m_hIcon, TRUE);			// Set big icon&lt;br /&gt;
 	SetIcon(m_hIcon, FALSE);		// Set small icon&lt;br /&gt;
 	&lt;br /&gt;
 	// TODO: Add extra initialization here&lt;br /&gt;
 	m_midi.Open();&lt;br /&gt;
 	m_midi.Out(0xC0, 6, 128);&lt;br /&gt;
 	&lt;br /&gt;
 	return TRUE;  // return TRUE  unless you set the focus to a control&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFC2Dlg::OnSysCommand(UINT nID, LPARAM lParam)&lt;br /&gt;
 {&lt;br /&gt;
 	if ((nID &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX)&lt;br /&gt;
 	{&lt;br /&gt;
 		CAboutDlg dlgAbout;&lt;br /&gt;
 		dlgAbout.DoModal();&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnSysCommand(nID, lParam);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // If you add a minimize button to your dialog, you will need the code below&lt;br /&gt;
 //  to draw the icon.  For MFC applications using the document/view model,&lt;br /&gt;
 //  this is automatically done for you by the framework.&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFC2Dlg::OnPaint() &lt;br /&gt;
 {&lt;br /&gt;
 	if (IsIconic())&lt;br /&gt;
 	{&lt;br /&gt;
 		CPaintDC dc(this); // device context for painting&lt;br /&gt;
 &lt;br /&gt;
 		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);&lt;br /&gt;
 &lt;br /&gt;
 		// Center icon in client rectangle&lt;br /&gt;
 		int cxIcon = GetSystemMetrics(SM_CXICON);&lt;br /&gt;
 		int cyIcon = GetSystemMetrics(SM_CYICON);&lt;br /&gt;
 		CRect rect;&lt;br /&gt;
 		GetClientRect(&amp;amp;amp;rect);&lt;br /&gt;
 		int x = (rect.Width() - cxIcon + 1) / 2;&lt;br /&gt;
 		int y = (rect.Height() - cyIcon + 1) / 2;&lt;br /&gt;
 &lt;br /&gt;
 		// Draw the icon&lt;br /&gt;
 		dc.DrawIcon(x, y, m_hIcon);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnPaint();&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // The system calls this to obtain the cursor to display while the user drags&lt;br /&gt;
 //  the minimized window.&lt;br /&gt;
 HCURSOR CTestMFC2Dlg::OnQueryDragIcon()&lt;br /&gt;
 {&lt;br /&gt;
 	return (HCURSOR) m_hIcon;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFC2Dlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) &lt;br /&gt;
 {&lt;br /&gt;
 	if (&#039;A&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 72, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;W&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 73, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;S&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 74, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;D&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 75, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;F&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 76, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;T&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 77, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;G&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 78, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;H&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 79, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;J&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 80, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;I&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 81, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;K&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 82, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;L&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 83, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;:&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 84, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;{&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 85, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;\&amp;quot;&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 86, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (&#039;}&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x90, 87, 0x7F);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	else if (&#039;M&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		CWnd* pWnd = FindWindow(NULL, &amp;quot;새 텍스트 문서.txt - 메모장&amp;quot;);&lt;br /&gt;
 		pWnd-&amp;amp;gt;SendMessage(WM_CLOSE);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	CDialog::OnKeyUp(nChar, nRepCnt, nFlags);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFC2Dlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) &lt;br /&gt;
 {&lt;br /&gt;
 	if (&#039;A&#039; == nChar)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_midi.Out(0x80, 72, 0);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 키보드 입력으로 midi 소리가 나게 만드는 소스. 같은 폴더에 MidiOut.cpp와 MidiOut.h가 있어야만 작동한다.&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>165.194.25.101</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EB%AA%A9%EC%9A%94%EC%9D%BC/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C/MFC/%EC%84%9C%EB%AF%BC%EA%B4%80&amp;diff=46362</id>
		<title>데블스캠프2009/목요일/연습문제/MFC/서민관</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EB%AA%A9%EC%9A%94%EC%9D%BC/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C/MFC/%EC%84%9C%EB%AF%BC%EA%B4%80&amp;diff=46362"/>
		<updated>2009-06-25T16:19:28Z</updated>

		<summary type="html">&lt;p&gt;165.194.25.101: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 데블스캠프2009/목요일/연습문제/MFC/서민관 =&lt;br /&gt;
&lt;br /&gt;
 // testMFCDlg.cpp : implementation file&lt;br /&gt;
 //&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFC.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFCDlg.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #ifdef _DEBUG&lt;br /&gt;
 #define new DEBUG_NEW&lt;br /&gt;
 #undef THIS_FILE&lt;br /&gt;
 static char THIS_FILE[] = __FILE__;&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CAboutDlg dialog used for App About&lt;br /&gt;
 &lt;br /&gt;
 double temp, res, sign;&lt;br /&gt;
 &lt;br /&gt;
 class CAboutDlg : public CDialog&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
 	CAboutDlg();&lt;br /&gt;
 	&lt;br /&gt;
 	// Dialog Data&lt;br /&gt;
 	//{{AFX_DATA(CAboutDlg)&lt;br /&gt;
 	enum { IDD = IDD_ABOUTBOX };&lt;br /&gt;
 	//}}AFX_DATA&lt;br /&gt;
 	&lt;br /&gt;
 	// ClassWizard generated virtual function overrides&lt;br /&gt;
 	//{{AFX_VIRTUAL(CAboutDlg)&lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support&lt;br /&gt;
 	//}}AFX_VIRTUAL&lt;br /&gt;
 	&lt;br /&gt;
 	// Implementation&lt;br /&gt;
 protected:&lt;br /&gt;
 	//{{AFX_MSG(CAboutDlg)&lt;br /&gt;
 	//}}AFX_MSG&lt;br /&gt;
 	DECLARE_MESSAGE_MAP()&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CAboutDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)&lt;br /&gt;
 //{{AFX_MSG_MAP(CAboutDlg)&lt;br /&gt;
 // No message handlers&lt;br /&gt;
 //}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFCDlg dialog&lt;br /&gt;
 &lt;br /&gt;
 CTestMFCDlg::CTestMFCDlg(CWnd* pParent /*=NULL*/)&lt;br /&gt;
 : CDialog(CTestMFCDlg::IDD, pParent)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CTestMFCDlg)&lt;br /&gt;
 	m_number = 0.0;&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32&lt;br /&gt;
 	m_hIcon = AfxGetApp()-&amp;amp;gt;LoadIcon(IDR_MAINFRAME);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CTestMFCDlg)&lt;br /&gt;
 	DDX_Control(pDX, IDC_BUTTON1, m_1);&lt;br /&gt;
 	DDX_Text(pDX, IDC_EDIT2, m_number);&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CTestMFCDlg, CDialog)&lt;br /&gt;
 //{{AFX_MSG_MAP(CTestMFCDlg)&lt;br /&gt;
 ON_WM_SYSCOMMAND()&lt;br /&gt;
 ON_WM_PAINT()&lt;br /&gt;
 ON_WM_QUERYDRAGICON()&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON1, OnButton1)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON2, OnButton2)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON3, OnButton3)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON4, OnButton4)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON6, OnButton6)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON7, OnButton7)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON11, OnButton11)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON12, OnButton12)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON13, OnButton13)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON5, OnButton5)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON8, OnButton8)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON14, OnButton14)&lt;br /&gt;
 //}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFCDlg message handlers&lt;br /&gt;
 &lt;br /&gt;
 BOOL CTestMFCDlg::OnInitDialog()&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::OnInitDialog();&lt;br /&gt;
 	&lt;br /&gt;
 	// Add &amp;quot;About...&amp;quot; menu item to system menu.&lt;br /&gt;
 	&lt;br /&gt;
 	// IDM_ABOUTBOX must be in the system command range.&lt;br /&gt;
 	ASSERT((IDM_ABOUTBOX &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX);&lt;br /&gt;
 	ASSERT(IDM_ABOUTBOX &amp;amp;lt; 0xF000);&lt;br /&gt;
 	&lt;br /&gt;
 	CMenu* pSysMenu = GetSystemMenu(FALSE);&lt;br /&gt;
 	if (pSysMenu != NULL)&lt;br /&gt;
 	{&lt;br /&gt;
 		CString strAboutMenu;&lt;br /&gt;
 		strAboutMenu.LoadString(IDS_ABOUTBOX);&lt;br /&gt;
 		if (!strAboutMenu.IsEmpty())&lt;br /&gt;
 		{&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_SEPARATOR);&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	// Set the icon for this dialog.  The framework does this automatically&lt;br /&gt;
 	//  when the application&#039;s main window is not a dialog&lt;br /&gt;
 	SetIcon(m_hIcon, TRUE);			// Set big icon&lt;br /&gt;
 	SetIcon(m_hIcon, FALSE);		// Set small icon&lt;br /&gt;
 	&lt;br /&gt;
 	// TODO: Add extra initialization here&lt;br /&gt;
 	&lt;br /&gt;
 	return TRUE;  // return TRUE  unless you set the focus to a control&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnSysCommand(UINT nID, LPARAM lParam)&lt;br /&gt;
 {&lt;br /&gt;
 	if ((nID &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX)&lt;br /&gt;
 	{&lt;br /&gt;
 		CAboutDlg dlgAbout;&lt;br /&gt;
 		dlgAbout.DoModal();&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnSysCommand(nID, lParam);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // If you add a minimize button to your dialog, you will need the code below&lt;br /&gt;
 //  to draw the icon.  For MFC applications using the document/view model,&lt;br /&gt;
 //  this is automatically done for you by the framework.&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnPaint() &lt;br /&gt;
 {&lt;br /&gt;
 	if (IsIconic())&lt;br /&gt;
 	{&lt;br /&gt;
 		CPaintDC dc(this); // device context for painting&lt;br /&gt;
 		&lt;br /&gt;
 		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);&lt;br /&gt;
 		&lt;br /&gt;
 		// Center icon in client rectangle&lt;br /&gt;
 		int cxIcon = GetSystemMetrics(SM_CXICON);&lt;br /&gt;
 		int cyIcon = GetSystemMetrics(SM_CYICON);&lt;br /&gt;
 		CRect rect;&lt;br /&gt;
 		GetClientRect(&amp;amp;amp;rect);&lt;br /&gt;
 		int x = (rect.Width() - cxIcon + 1) / 2;&lt;br /&gt;
 		int y = (rect.Height() - cyIcon + 1) / 2;&lt;br /&gt;
 		&lt;br /&gt;
 		// Draw the icon&lt;br /&gt;
 		dc.DrawIcon(x, y, m_hIcon);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnPaint();&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // The system calls this to obtain the cursor to display while the user drags&lt;br /&gt;
 //  the minimized window.&lt;br /&gt;
 HCURSOR CTestMFCDlg::OnQueryDragIcon()&lt;br /&gt;
 {&lt;br /&gt;
 	return (HCURSOR) m_hIcon;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton1() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 1;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton2() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 2;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton3() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 3;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton4() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 4;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton6() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 5;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton7() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 6;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton11() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 7;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton12() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 8;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton13() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 9;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton5() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	temp = m_number;&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 	sign = 0;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton8() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	temp = m_number;&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 	sign = 1;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton14() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	if (sign == 0)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_number = temp + m_number;&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (sign == 1)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_number = temp - m_number;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 뭔가 찜찜한 계산기. 구조상 *와 / 연산이 불가능하다... 또한 추가 함수를 만들지 않아서 버튼 구조를 똑같은 것을 9번 반복&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>165.194.25.101</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EB%AA%A9%EC%9A%94%EC%9D%BC/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C/MFC/%EC%84%9C%EB%AF%BC%EA%B4%80&amp;diff=46361</id>
		<title>데블스캠프2009/목요일/연습문제/MFC/서민관</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EB%AA%A9%EC%9A%94%EC%9D%BC/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C/MFC/%EC%84%9C%EB%AF%BC%EA%B4%80&amp;diff=46361"/>
		<updated>2009-06-25T16:16:15Z</updated>

		<summary type="html">&lt;p&gt;165.194.25.101: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 데블스캠프2009/목요일/연습문제/MFC/서민관 =&lt;br /&gt;
&lt;br /&gt;
 // testMFCDlg.cpp : implementation file&lt;br /&gt;
 //&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFC.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFCDlg.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #ifdef _DEBUG&lt;br /&gt;
 #define new DEBUG_NEW&lt;br /&gt;
 #undef THIS_FILE&lt;br /&gt;
 static char THIS_FILE[] = __FILE__;&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CAboutDlg dialog used for App About&lt;br /&gt;
 &lt;br /&gt;
 double temp, res, sign;&lt;br /&gt;
 &lt;br /&gt;
 class CAboutDlg : public CDialog&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
 	CAboutDlg();&lt;br /&gt;
 	&lt;br /&gt;
 	// Dialog Data&lt;br /&gt;
 	//{{AFX_DATA(CAboutDlg)&lt;br /&gt;
 	enum { IDD = IDD_ABOUTBOX };&lt;br /&gt;
 	//}}AFX_DATA&lt;br /&gt;
 	&lt;br /&gt;
 	// ClassWizard generated virtual function overrides&lt;br /&gt;
 	//{{AFX_VIRTUAL(CAboutDlg)&lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support&lt;br /&gt;
 	//}}AFX_VIRTUAL&lt;br /&gt;
 	&lt;br /&gt;
 	// Implementation&lt;br /&gt;
 protected:&lt;br /&gt;
 	//{{AFX_MSG(CAboutDlg)&lt;br /&gt;
 	//}}AFX_MSG&lt;br /&gt;
 	DECLARE_MESSAGE_MAP()&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CAboutDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)&lt;br /&gt;
 //{{AFX_MSG_MAP(CAboutDlg)&lt;br /&gt;
 // No message handlers&lt;br /&gt;
 //}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFCDlg dialog&lt;br /&gt;
 &lt;br /&gt;
 CTestMFCDlg::CTestMFCDlg(CWnd* pParent /*=NULL*/)&lt;br /&gt;
 : CDialog(CTestMFCDlg::IDD, pParent)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CTestMFCDlg)&lt;br /&gt;
 	m_number = 0.0;&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32&lt;br /&gt;
 	m_hIcon = AfxGetApp()-&amp;amp;gt;LoadIcon(IDR_MAINFRAME);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CTestMFCDlg)&lt;br /&gt;
 	DDX_Control(pDX, IDC_BUTTON1, m_1);&lt;br /&gt;
 	DDX_Text(pDX, IDC_EDIT2, m_number);&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CTestMFCDlg, CDialog)&lt;br /&gt;
 //{{AFX_MSG_MAP(CTestMFCDlg)&lt;br /&gt;
 ON_WM_SYSCOMMAND()&lt;br /&gt;
 ON_WM_PAINT()&lt;br /&gt;
 ON_WM_QUERYDRAGICON()&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON1, OnButton1)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON2, OnButton2)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON3, OnButton3)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON4, OnButton4)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON6, OnButton6)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON7, OnButton7)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON11, OnButton11)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON12, OnButton12)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON13, OnButton13)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON5, OnButton5)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON8, OnButton8)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON14, OnButton14)&lt;br /&gt;
 //}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFCDlg message handlers&lt;br /&gt;
 &lt;br /&gt;
 BOOL CTestMFCDlg::OnInitDialog()&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::OnInitDialog();&lt;br /&gt;
 	&lt;br /&gt;
 	// Add &amp;quot;About...&amp;quot; menu item to system menu.&lt;br /&gt;
 	&lt;br /&gt;
 	// IDM_ABOUTBOX must be in the system command range.&lt;br /&gt;
 	ASSERT((IDM_ABOUTBOX &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX);&lt;br /&gt;
 	ASSERT(IDM_ABOUTBOX &amp;amp;lt; 0xF000);&lt;br /&gt;
 	&lt;br /&gt;
 	CMenu* pSysMenu = GetSystemMenu(FALSE);&lt;br /&gt;
 	if (pSysMenu != NULL)&lt;br /&gt;
 	{&lt;br /&gt;
 		CString strAboutMenu;&lt;br /&gt;
 		strAboutMenu.LoadString(IDS_ABOUTBOX);&lt;br /&gt;
 		if (!strAboutMenu.IsEmpty())&lt;br /&gt;
 		{&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_SEPARATOR);&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	// Set the icon for this dialog.  The framework does this automatically&lt;br /&gt;
 	//  when the application&#039;s main window is not a dialog&lt;br /&gt;
 	SetIcon(m_hIcon, TRUE);			// Set big icon&lt;br /&gt;
 	SetIcon(m_hIcon, FALSE);		// Set small icon&lt;br /&gt;
 	&lt;br /&gt;
 	// TODO: Add extra initialization here&lt;br /&gt;
 	&lt;br /&gt;
 	return TRUE;  // return TRUE  unless you set the focus to a control&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnSysCommand(UINT nID, LPARAM lParam)&lt;br /&gt;
 {&lt;br /&gt;
 	if ((nID &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX)&lt;br /&gt;
 	{&lt;br /&gt;
 		CAboutDlg dlgAbout;&lt;br /&gt;
 		dlgAbout.DoModal();&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnSysCommand(nID, lParam);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // If you add a minimize button to your dialog, you will need the code below&lt;br /&gt;
 //  to draw the icon.  For MFC applications using the document/view model,&lt;br /&gt;
 //  this is automatically done for you by the framework.&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnPaint() &lt;br /&gt;
 {&lt;br /&gt;
 	if (IsIconic())&lt;br /&gt;
 	{&lt;br /&gt;
 		CPaintDC dc(this); // device context for painting&lt;br /&gt;
 		&lt;br /&gt;
 		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);&lt;br /&gt;
 		&lt;br /&gt;
 		// Center icon in client rectangle&lt;br /&gt;
 		int cxIcon = GetSystemMetrics(SM_CXICON);&lt;br /&gt;
 		int cyIcon = GetSystemMetrics(SM_CYICON);&lt;br /&gt;
 		CRect rect;&lt;br /&gt;
 		GetClientRect(&amp;amp;amp;rect);&lt;br /&gt;
 		int x = (rect.Width() - cxIcon + 1) / 2;&lt;br /&gt;
 		int y = (rect.Height() - cyIcon + 1) / 2;&lt;br /&gt;
 		&lt;br /&gt;
 		// Draw the icon&lt;br /&gt;
 		dc.DrawIcon(x, y, m_hIcon);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnPaint();&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // The system calls this to obtain the cursor to display while the user drags&lt;br /&gt;
 //  the minimized window.&lt;br /&gt;
 HCURSOR CTestMFCDlg::OnQueryDragIcon()&lt;br /&gt;
 {&lt;br /&gt;
 	return (HCURSOR) m_hIcon;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton1() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 1;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton2() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 2;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton3() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 3;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton4() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 4;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton6() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 5;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton7() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 6;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton11() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 7;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton12() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 8;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton13() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 9;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton5() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	temp = m_number;&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 	sign = 0;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton8() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	temp = m_number;&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 	sign = 1;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton14() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	if (sign == 0)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_number = temp + m_number;&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (sign == 1)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_number = temp - m_number;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 뭔가 찜찜한 계산기. 구조상 *와 / 연산이 불가능하다... 또한 귀찮음으로 인해 버튼 구조를 똑같은 것을 9번 반복&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>165.194.25.101</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EB%AA%A9%EC%9A%94%EC%9D%BC/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C/MFC/%EC%84%9C%EB%AF%BC%EA%B4%80&amp;diff=46360</id>
		<title>데블스캠프2009/목요일/연습문제/MFC/서민관</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EB%AA%A9%EC%9A%94%EC%9D%BC/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C/MFC/%EC%84%9C%EB%AF%BC%EA%B4%80&amp;diff=46360"/>
		<updated>2009-06-25T16:15:35Z</updated>

		<summary type="html">&lt;p&gt;165.194.25.101: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 데블스캠프2009/목요일/연습문제/MFC/서민관 =&lt;br /&gt;
&lt;br /&gt;
 // testMFCDlg.cpp : implementation file&lt;br /&gt;
 //&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFC.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;testMFCDlg.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #ifdef _DEBUG&lt;br /&gt;
 #define new DEBUG_NEW&lt;br /&gt;
 #undef THIS_FILE&lt;br /&gt;
 static char THIS_FILE[] = __FILE__;&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CAboutDlg dialog used for App About&lt;br /&gt;
 &lt;br /&gt;
 double temp, res, sign;&lt;br /&gt;
 &lt;br /&gt;
 class CAboutDlg : public CDialog&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
 	CAboutDlg();&lt;br /&gt;
 	&lt;br /&gt;
 	// Dialog Data&lt;br /&gt;
 	//{{AFX_DATA(CAboutDlg)&lt;br /&gt;
 	enum { IDD = IDD_ABOUTBOX };&lt;br /&gt;
 	//}}AFX_DATA&lt;br /&gt;
 	&lt;br /&gt;
 	// ClassWizard generated virtual function overrides&lt;br /&gt;
 	//{{AFX_VIRTUAL(CAboutDlg)&lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support&lt;br /&gt;
 	//}}AFX_VIRTUAL&lt;br /&gt;
 	&lt;br /&gt;
 	// Implementation&lt;br /&gt;
 protected:&lt;br /&gt;
 	//{{AFX_MSG(CAboutDlg)&lt;br /&gt;
 	//}}AFX_MSG&lt;br /&gt;
 	DECLARE_MESSAGE_MAP()&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CAboutDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CAboutDlg)&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)&lt;br /&gt;
 //{{AFX_MSG_MAP(CAboutDlg)&lt;br /&gt;
 // No message handlers&lt;br /&gt;
 //}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFCDlg dialog&lt;br /&gt;
 &lt;br /&gt;
 CTestMFCDlg::CTestMFCDlg(CWnd* pParent /*=NULL*/)&lt;br /&gt;
 : CDialog(CTestMFCDlg::IDD, pParent)&lt;br /&gt;
 {&lt;br /&gt;
 	//{{AFX_DATA_INIT(CTestMFCDlg)&lt;br /&gt;
 	m_number = 0.0;&lt;br /&gt;
 	//}}AFX_DATA_INIT&lt;br /&gt;
 	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32&lt;br /&gt;
 	m_hIcon = AfxGetApp()-&amp;amp;gt;LoadIcon(IDR_MAINFRAME);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::DoDataExchange(CDataExchange* pDX)&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::DoDataExchange(pDX);&lt;br /&gt;
 	//{{AFX_DATA_MAP(CTestMFCDlg)&lt;br /&gt;
 	DDX_Control(pDX, IDC_BUTTON1, m_1);&lt;br /&gt;
 	DDX_Text(pDX, IDC_EDIT2, m_number);&lt;br /&gt;
 	//}}AFX_DATA_MAP&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 BEGIN_MESSAGE_MAP(CTestMFCDlg, CDialog)&lt;br /&gt;
 //{{AFX_MSG_MAP(CTestMFCDlg)&lt;br /&gt;
 ON_WM_SYSCOMMAND()&lt;br /&gt;
 ON_WM_PAINT()&lt;br /&gt;
 ON_WM_QUERYDRAGICON()&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON1, OnButton1)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON2, OnButton2)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON3, OnButton3)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON4, OnButton4)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON6, OnButton6)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON7, OnButton7)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON11, OnButton11)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON12, OnButton12)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON13, OnButton13)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON5, OnButton5)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON8, OnButton8)&lt;br /&gt;
 ON_BN_CLICKED(IDC_BUTTON14, OnButton14)&lt;br /&gt;
 //}}AFX_MSG_MAP&lt;br /&gt;
 END_MESSAGE_MAP()&lt;br /&gt;
 &lt;br /&gt;
 /////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 // CTestMFCDlg message handlers&lt;br /&gt;
 &lt;br /&gt;
 BOOL CTestMFCDlg::OnInitDialog()&lt;br /&gt;
 {&lt;br /&gt;
 	CDialog::OnInitDialog();&lt;br /&gt;
 	&lt;br /&gt;
 	// Add &amp;quot;About...&amp;quot; menu item to system menu.&lt;br /&gt;
 	&lt;br /&gt;
 	// IDM_ABOUTBOX must be in the system command range.&lt;br /&gt;
 	ASSERT((IDM_ABOUTBOX &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX);&lt;br /&gt;
 	ASSERT(IDM_ABOUTBOX &amp;amp;lt; 0xF000);&lt;br /&gt;
 	&lt;br /&gt;
 	CMenu* pSysMenu = GetSystemMenu(FALSE);&lt;br /&gt;
 	if (pSysMenu != NULL)&lt;br /&gt;
 	{&lt;br /&gt;
 		CString strAboutMenu;&lt;br /&gt;
 		strAboutMenu.LoadString(IDS_ABOUTBOX);&lt;br /&gt;
 		if (!strAboutMenu.IsEmpty())&lt;br /&gt;
 		{&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_SEPARATOR);&lt;br /&gt;
 			pSysMenu-&amp;amp;gt;AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	// Set the icon for this dialog.  The framework does this automatically&lt;br /&gt;
 	//  when the application&#039;s main window is not a dialog&lt;br /&gt;
 	SetIcon(m_hIcon, TRUE);			// Set big icon&lt;br /&gt;
 	SetIcon(m_hIcon, FALSE);		// Set small icon&lt;br /&gt;
 	&lt;br /&gt;
 	// TODO: Add extra initialization here&lt;br /&gt;
 	&lt;br /&gt;
 	return TRUE;  // return TRUE  unless you set the focus to a control&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnSysCommand(UINT nID, LPARAM lParam)&lt;br /&gt;
 {&lt;br /&gt;
 	if ((nID &amp;amp;amp; 0xFFF0) == IDM_ABOUTBOX)&lt;br /&gt;
 	{&lt;br /&gt;
 		CAboutDlg dlgAbout;&lt;br /&gt;
 		dlgAbout.DoModal();&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnSysCommand(nID, lParam);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // If you add a minimize button to your dialog, you will need the code below&lt;br /&gt;
 //  to draw the icon.  For MFC applications using the document/view model,&lt;br /&gt;
 //  this is automatically done for you by the framework.&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnPaint() &lt;br /&gt;
 {&lt;br /&gt;
 	if (IsIconic())&lt;br /&gt;
 	{&lt;br /&gt;
 		CPaintDC dc(this); // device context for painting&lt;br /&gt;
 		&lt;br /&gt;
 		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);&lt;br /&gt;
 		&lt;br /&gt;
 		// Center icon in client rectangle&lt;br /&gt;
 		int cxIcon = GetSystemMetrics(SM_CXICON);&lt;br /&gt;
 		int cyIcon = GetSystemMetrics(SM_CYICON);&lt;br /&gt;
 		CRect rect;&lt;br /&gt;
 		GetClientRect(&amp;amp;amp;rect);&lt;br /&gt;
 		int x = (rect.Width() - cxIcon + 1) / 2;&lt;br /&gt;
 		int y = (rect.Height() - cyIcon + 1) / 2;&lt;br /&gt;
 		&lt;br /&gt;
 		// Draw the icon&lt;br /&gt;
 		dc.DrawIcon(x, y, m_hIcon);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		CDialog::OnPaint();&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // The system calls this to obtain the cursor to display while the user drags&lt;br /&gt;
 //  the minimized window.&lt;br /&gt;
 HCURSOR CTestMFCDlg::OnQueryDragIcon()&lt;br /&gt;
 {&lt;br /&gt;
 	return (HCURSOR) m_hIcon;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton1() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 1;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton2() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 2;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton3() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 3;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton4() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 4;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton6() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 5;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton7() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 6;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton11() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 7;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton12() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 8;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton13() &lt;br /&gt;
 {&lt;br /&gt;
 	//UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = m_number * 10 + 9;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton5() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	temp = m_number;&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);	&lt;br /&gt;
 	&lt;br /&gt;
 	sign = 0;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton8() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	temp = m_number;&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 	sign = 1;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void CTestMFCDlg::OnButton14() &lt;br /&gt;
 {&lt;br /&gt;
 	UpdateData(TRUE);&lt;br /&gt;
 	&lt;br /&gt;
 	if (sign == 0)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_number = temp + m_number;&lt;br /&gt;
 	}&lt;br /&gt;
 	else if (sign == 1)&lt;br /&gt;
 	{&lt;br /&gt;
 		m_number = temp - m_number;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	UpdateData(FALSE);&lt;br /&gt;
 	&lt;br /&gt;
 	m_number = 0;&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 뭔가 찜찜한 계산기. 구조상 *와 / 연산이 불가능하다...&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>165.194.25.101</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EC%9B%94%EC%9A%94%EC%9D%BC%ED%9B%84%EA%B8%B0&amp;diff=46483</id>
		<title>데블스캠프2009/월요일후기</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842009/%EC%9B%94%EC%9A%94%EC%9D%BC%ED%9B%84%EA%B8%B0&amp;diff=46483"/>
		<updated>2009-06-22T06:50:10Z</updated>

		<summary type="html">&lt;p&gt;165.194.25.101: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 데블스캠프2009/월요일후기 =&lt;br /&gt;
&lt;br /&gt;
* 수업별로 이름을 적고 후기를 써주시면 됩니다^^&lt;br /&gt;
&lt;br /&gt;
== HTML/CSS - 이승한 ==&lt;br /&gt;
* [[송지원]] - HTML, CSS라고 해서 단순히 웹 프로그래밍 언어인 태그들만을 생각했었는데 웹 표준의 개념과 기존 웹의 문제점에 대해 지적했다. 표준 웹은 두리뭉실하게만 알았던 개념이었는데 더 확실히 배울 수 있었던거 같다. 다만 도입부에서 기존 웹의 문제점과 웹 표준에 대해 설명하는 과정에서 말이 좀 어려웠던것 같다;;&lt;br /&gt;
* [[송정규]] - 제가 자주가는 페이지를 제 입맛대로 만들 수 있을것 같아 재미있었어요. 그리고 지금 당장 집에가서 웹브라우저 업데이트 고고씽 해야 겠어요 ㅋ&lt;br /&gt;
== Scratch - 송지원 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== svn &amp;amp; 코드레이스 - 김홍기 ==&lt;br /&gt;
&lt;br /&gt;
== 다음날 데블스캠프를 위한 피드백~ 강화할 점, 개선할 점 ==&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>165.194.25.101</name></author>
	</entry>
</feed>