// CrashReportDlg.h : Çì´õ ÆÄÀÏ // #pragma once #include "afxcmn.h" #include "CCrashInfo.h" #include "MapProcess.h" #include "ProcessManager.h" #include "DumpProcess.h" #include #include #include #include "afxwin.h" #include "DlgMailSender.h" enum eSTRINGTABLE { eSTRINGTABLE_NUMBER = 0, eSTRINGTABLE_CRASHLINE, eSTRINGTABLE_CRASHMODULE, eSTRINGTABLE_CRASHADDR, eSTRINGTABLE_CRASHFUNC, eSTRINGTABLE_CRASHCOUNT, eSTRINGTABLE_CRASHPERCENT, eSTRINGTABLE_CRASHSHOW, eSTRINGTABLE_TABLEMAX, }; struct ExceptionListStruct { //user info DWORD ExceptionAddr; int versionInfo; sExceptionInfomation ExceptionInfo; int ExceptionListCount; TCHAR ExceptionshowString[256]; //´ýÇÁ ÆÄÀÏ À̸§ Á¤º¸ std::vector FindDumpMemoryList_; ExceptionListStruct() : ExceptionAddr(0), ExceptionInfo(), versionInfo(-1), ExceptionListCount(1) { FindDumpMemoryList_.clear(); memset(ExceptionshowString,0,sizeof(TCHAR)*256); } void OnInit() { ExceptionInfo.OnInit(); ExceptionAddr = 0; versionInfo = -1; ExceptionListCount = 1; FindDumpMemoryList_.clear(); memset(ExceptionshowString,0,sizeof(TCHAR)*256); } bool operator== (const DWORD rhs ) { if(ExceptionAddr == rhs) return true; return false; } }; // CCrashReportDlg ´ëÈ­ »óÀÚ class CCrashReportDlg : public CDialog { // »ý¼ºÀÔ´Ï´Ù. public: CCrashReportDlg(CWnd* pParent = NULL); // Ç¥ÁØ »ý¼ºÀÚÀÔ´Ï´Ù. // ´ëÈ­ »óÀÚ µ¥ÀÌÅÍÀÔ´Ï´Ù. enum { IDD = IDD_CRASHREPORT_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV Áö¿øÀÔ´Ï´Ù. private: CListCtrl cListCtrl_CrashInfo_; CListBox ListExceptionDmpFile_; CListBox ResultDumpListView_; CListBox CallStackList_; CDlgMailSender DialogMailSender_; std::vector ExceptionListStruct_List_; std::vector NotFindDumpMemoryList_; std::map DumpFileList_; //³»ºÎ ¼ÂÆÃ ÇÔ¼ö ÀÔ´Ï´Ù. private: bool SetListCtrlPush(const ExceptionListStruct& info,int cell); void ReleaseFileSetting(); // ±¸ÇöÀÔ´Ï´Ù. protected: HICON m_hIcon; // »ý¼ºµÈ ¸Þ½ÃÁö ¸Ê ÇÔ¼ö virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: virtual BOOL PreTranslateMessage(MSG* pMsg); afx_msg void OnLoaddir(); afx_msg void OnLoadpdb(); public: bool GetFolderPath(CString& Path); void InitListCtrl(); afx_msg void OnUpdateLoadmap(CCmdUI *pCmdUI); afx_msg void OnBnClickedButton1(); afx_msg void OnLvnColumnclickReportlist(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMRClickReportlist(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMClickReportlist(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnLbnSelchangeListresultdmp(); afx_msg void OnExportex(); afx_msg void OnSendmail(); };