// TestMFCDlg.cpp : ±¸Çö ÆÄÀÏ // #include "stdafx.h" #include "TestMFC.h" #include "TestMFCDlg.h" #include /* #include "./CrashReporter.h" #ifdef _DEBUG #ifdef _DLL #pragma comment(lib, "./CrashReporter_d.lib") #else #pragma comment(lib, "./CrashReporter_ds.lib") #endif #else #ifdef _DLL #pragma comment(lib, "./CrashReporter_r.lib") #else #pragma comment(lib, "./CrashReporter_rs.lib") #endif #endif */ #include "../Source/CrashReporter.h" #ifdef _DEBUG #ifdef _DLL #pragma comment(lib, "../debug_dll/CrashReporter_d.lib") #else #pragma comment(lib, "../debug_static/CrashReporter_ds.lib") #endif #else #ifdef _DLL #pragma comment(lib, "../release_dll/CrashReporter_r.lib") #else #pragma comment(lib, "../release_static/CrashReporter_rs.lib") #endif #endif // CTestMFCDlg ´ëÈ­ »óÀÚ CTestMFCDlg::CTestMFCDlg(CWnd* pParent /*=NULL*/) : CDialog(CTestMFCDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CTestMFCDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, m_CListBox); } BEGIN_MESSAGE_MAP(CTestMFCDlg, CDialog) ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, &CTestMFCDlg::OnBnClickedOk) END_MESSAGE_MAP() // CTestMFCDlg ¸Þ½ÃÁö 󸮱â BOOL CTestMFCDlg::OnInitDialog() { CDialog::OnInitDialog(); // ÀÌ ´ëÈ­ »óÀÚÀÇ ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢ÀÌ ´ëÈ­ »óÀÚ°¡ ¾Æ´Ò °æ¿ì¿¡´Â // ÇÁ·¹ÀÓ¿öÅ©°¡ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù. SetIcon(m_hIcon, TRUE); // Å« ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. SetIcon(m_hIcon, FALSE); // ÀÛÀº ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù. AddOptions(); return TRUE; // Æ÷Ä¿½º¸¦ ÄÁÆ®·Ñ¿¡ ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é TRUE¸¦ ¹ÝȯÇÕ´Ï´Ù. } // ´ëÈ­ »óÀÚ¿¡ ÃÖ¼ÒÈ­ ´ÜÃ߸¦ Ãß°¡ÇÒ °æ¿ì ¾ÆÀÌÄÜÀ» ±×¸®·Á¸é // ¾Æ·¡ Äڵ尡 ÇÊ¿äÇÕ´Ï´Ù. ¹®¼­/ºä ¸ðµ¨À» »ç¿ëÇÏ´Â MFC ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °æ¿ì¿¡´Â // ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù. void CTestMFCDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // ±×¸®±â¸¦ À§ÇÑ µð¹ÙÀ̽º ÄÁÅØ½ºÆ® SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // Ŭ¶óÀÌ¾ðÆ® »ç°¢Çü¿¡¼­ ¾ÆÀÌÄÜÀ» °¡¿îµ¥¿¡ ¸ÂÃä´Ï´Ù. 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; // ¾ÆÀÌÄÜÀ» ±×¸³´Ï´Ù. dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // »ç¿ëÀÚ°¡ ÃÖ¼ÒÈ­µÈ âÀ» ²ô´Â µ¿¾È¿¡ Ä¿¼­°¡ Ç¥½ÃµÇµµ·Ï ½Ã½ºÅÛ¿¡¼­ // ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. HCURSOR CTestMFCDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void CTestMFCDlg::OnBnClickedOk() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. int nIndex = m_CListBox.GetCurSel(); int nCount = m_CListBox.GetCount(); CString strSelectedText; if ((nIndex != LB_ERR) && (nCount > 1)) { std::vector< int > a; int b[1]; int e, f = 0; char c[10]; char d[] = "this is sparta!!"; switch (nIndex + 1) { case 1: RaiseException(EXCEPTION_INT_OVERFLOW, 0, 0, NULL); break; case 2: //RaiseException(EXCEPTION_ACCESS_VIOLATION, 0, 0, NULL); break; a[2] = 3; break; case 3: //RaiseException(EXCEPTION_ARRAY_BOUNDS_EXCEEDED, 0, 0, NULL); break; b[1000] = 3; break; case 4: //RaiseException(EXCEPTION_INT_DIVIDE_BY_ZERO, 0, 0, NULL); break; e = 100 / f; break; case 5: strcpy(c, d); break; case 6: _ASSERTE(0); break; case 7: unexpected(); break; default: ::MessageBox(NULL, _T("Invalid error number"), _T("Error"), MB_OK); break; } } OnOK(); } void CTestMFCDlg::AddOptions() { int i = 0; m_CListBox.InsertString(i++, _T("EXCEPTION_INT_OVERFLOW")); m_CListBox.InsertString(i++, _T("EXCEPTION_ACCESS_VIOLATION")); m_CListBox.InsertString(i++, _T("EXCEPTION_ARRAY_BOUNDS_EXCEEDED")); m_CListBox.InsertString(i++, _T("EXCEPTION_INT_DIVIDE_BY_ZERO")); m_CListBox.InsertString(i++, _T("Buffer Overrun")); m_CListBox.InsertString(i++, _T("Assert")); m_CListBox.InsertString(i++, _T("Unexpected")); }