Hi all,
I am having this issue that when I create a treeviewlist it causes my main dialog to crash when I close it. Here is my code:
here is my class
#define DDX_CONTROL_IMPL(x) \
class x##_ddx : public CWindowImpl<x##_ddx, x> \
{ public: DECLARE_EMPTY_MSG_MAP() };
class CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>,
public CWinDataExchange<CMainDlg>,public CCustomDraw<CMainDlg>,public CDialogResize<CMainDlg>
{
protected:
HKEY Regentry;
DWORD dwData, dwDisp;
CTreeViewCtrlExImpl UpdateList;
CButton Install;
void QueryProductTree();
public:
enum { IDD = IDD_MAINDLG };
BEGIN_MSG_MAP(CMainDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
COMMAND_ID_HANDLER(IDC_PREF, OnPreference)
COMMAND_ID_HANDLER(IDC_INSTALL, OnInstall)
END_MSG_MAP()
BEGIN_DDX_MAP(CMainDlg)
DDX_CONTROL(IDC_INSTALLTREE, UpdateList)
END_DDX_MAP()
BEGIN_UPDATE_UI_MAP(CMainDlg)
END_UPDATE_UI_MAP()
BEGIN_DLGRESIZE_MAP(CMainDlg)
DLGRESIZE_CONTROL(IDC_INSTALLTREE, DLSZ_SIZE_X|DLSZ_SIZE_Y)
END_DLGRESIZE_MAP()
LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& );
LRESULT OnCancel(WORD , WORD wID, HWND , BOOL& );
LRESULT OnPreference(WORD , WORD wID, HWND , BOOL& );
LRESULT OnInstall(WORD , WORD wID, HWND , BOOL& );
};
#endif
Then here is my main code
LRESULT CMainDlg::OnInitDialog(UINT , WPARAM , LPARAM , BOOL& )
{
CenterWindow();
HICON hIcon = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDD_MAINDLG),
IMAGE_ICON, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR);
SetIcon(hIcon, TRUE);
HICON hIconSmall = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDD_MAINDLG),
IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);
SetIcon(hIconSmall, FALSE);
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\Redmap Update Manager\\Parameters\\ManagePoint",
0, 0, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &Regentry, &dwDisp))
{
printf("Could not create the registry key.");
return 0;
}
dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE |
EVENTLOG_INFORMATION_TYPE;
Install.Attach(GetDlgItem(IDC_INSTALL));
UpdateList.Attach(GetDlgItem(IDC_INSTALLTREE));
QueryProductTree();
return TRUE;
}
LRESULT CMainDlg::OnCancel(WORD , WORD wID, HWND , BOOL& )
{
RegCloseKey(Regentry);
Regentry = NULL;
delete Regentry;
if (this->m_hWnd != NULL)
EndDialog(wID);
return 0;
}
void CMainDlg::QueryProductTree()
{
CTreeItem mPoint, Rrite;
mPoint = UpdateList.InsertItem ( _T("ManagePoint"), TVI_ROOT, TVI_LAST );
mPoint.AddTail ( _T("ManagePoint 4.3.2.58"), 0 );
mPoint.AddTail ( _T("ManagePoint 4.3.2.83"), 0 );
Rrite = UpdateList.InsertItem ( _T("Re-Rite"), TVI_ROOT, TVI_LAST );
Rrite.AddTail ( _T("Re-Rite 6.1.0.11"), 0 );
Rrite.AddTail ( _T("Re-Rite 6.1.0.23"), 0 );
return;
}
Is there something I lack? Is there something I need to close?
Thanks,
Jayjay
|