LRESULT MmHeapOnInitDialog( __in HWND hWnd, __in UINT uMsg, __in WPARAM wp, __in LPARAM lp ) { PTREELIST_OBJECT TreeList; PMM_FORM_CONTEXT Context; PDIALOG_OBJECT Object; ULONG Number; RECT Rect; HWND hWndCtrl; ULONG i; LVCOLUMN lvc = {0}; RECT CtrlRect; Object = (PDIALOG_OBJECT)SdkGetObject(hWnd); Context = SdkGetContext(Object, MM_FORM_CONTEXT); // // Create treelist control // GetClientRect(hWnd, &Rect); Rect.right = 10; Rect.bottom = 10; hWndCtrl = GetDlgItem(hWnd, IDC_TREELIST); TreeList = TreeListCreate(hWnd, TRUE, IDC_TREELIST, &Rect, hWnd, MmHeapFormatCallback, MmHeapColumnCount); // // We need explicitly bind the treelist object to its hwnd // if it's hosted in dialog as custom control. // TreeList->hWnd = hWndCtrl; SdkSetObject(hWndCtrl, TreeList); TreeListCreateControls(TreeList); for(Number = 0; Number < MmHeapColumnCount; Number += 1) { TreeListInsertColumn(TreeList, Number, MmHeapColumn[Number].Align, MmHeapColumn[Number].Width, MmHeapColumn[Number].Name ); } ASSERT(TreeList->hWnd != NULL); Context->TreeList = TreeList; // // Initialize splitbar // hWndCtrl = GetDlgItem(hWnd, IDC_SPLIT); SplitSetObject(hWndCtrl, &MmHeapSplitObject); // // Initialize listview // hWndCtrl = GetDlgItem(hWnd, IDC_LIST_BACKTRACE); ListView_SetExtendedListViewStyleEx(hWndCtrl, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); for (i = 0; i < 4; i++) { lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvc.iSubItem = i; lvc.pszText = MmHeapListColumn[i].Title; lvc.cx = MmHeapListColumn[i].Width; lvc.fmt = MmHeapListColumn[i].Align; ListView_InsertColumn(hWndCtrl, i, &lvc); } // // Position controls // GetClientRect(hWnd, &Rect); hWndCtrl = GetDlgItem(hWnd, IDC_TREELIST); CtrlRect.top = 0; CtrlRect.left = 0; CtrlRect.right = (Rect.right - Rect.left) / 2 - 2; CtrlRect.bottom = Rect.bottom; MoveWindow(hWndCtrl, CtrlRect.left, CtrlRect.top, CtrlRect.right - CtrlRect.left, CtrlRect.bottom - CtrlRect.top, TRUE); hWndCtrl = GetDlgItem(hWnd, IDC_SPLIT); CtrlRect.top = 0; CtrlRect.left = CtrlRect.right; CtrlRect.right = CtrlRect.left + 2; CtrlRect.bottom = Rect.bottom; MoveWindow(hWndCtrl, CtrlRect.left, CtrlRect.top, CtrlRect.right - CtrlRect.left, CtrlRect.bottom - CtrlRect.top, TRUE); hWndCtrl = GetDlgItem(hWnd, IDC_LIST_BACKTRACE); CtrlRect.top = 0; CtrlRect.left = CtrlRect.right; CtrlRect.right = Rect.right; CtrlRect.bottom = Rect.bottom; MoveWindow(hWndCtrl, CtrlRect.left, CtrlRect.top, CtrlRect.right - CtrlRect.left, CtrlRect.bottom - CtrlRect.top, TRUE); // // Register dialog scaler // Object->Scaler = &MmHeapScaler; DialogRegisterScaler(Object); return TRUE; }
LRESULT CpuThreadOnInitDialog( __in HWND hWnd, __in UINT uMsg, __in WPARAM wp, __in LPARAM lp ) { PDIALOG_OBJECT Object; PCPU_FORM_CONTEXT Context; HWND hWndCtrl; LVCOLUMN lvc = {0}; LVITEM lvi = {0}; ULONG i; PLISTVIEW_OBJECT ListView; RECT Rect; RECT CtrlRect; Object = (PDIALOG_OBJECT)SdkGetObject(hWnd); Context = SdkGetContext(Object, CPU_FORM_CONTEXT); Context->hBrushBack = CreateSolidBrush(RGB(255, 255, 255)); // // Create listview object wraps list control // ListView = (PLISTVIEW_OBJECT)SdkMalloc(sizeof(LISTVIEW_OBJECT)); ZeroMemory(ListView, sizeof(LISTVIEW_OBJECT)); ListView->Column = CpuThreadColumn; ListView->Count = CPU_THREAD_COLUMN_NUM; ListView->NotifyCallback = CpuThreadOnNotify; Context->ListView = ListView; // // Initialize left pane // hWndCtrl = GetDlgItem(hWnd, IDC_LIST_CPU_THREAD_THREAD); ListView_SetExtendedListViewStyleEx(hWndCtrl, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); for (i = 0; i < CPU_THREAD_COLUMN_NUM; i++) { lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvc.iSubItem = i; lvc.pszText = CpuThreadColumn[i].Title; lvc.cx = CpuThreadColumn[i].Width; lvc.fmt = CpuThreadColumn[i].Align; ListView_InsertColumn(hWndCtrl, i, &lvc); } // // Initialize splitbar // hWndCtrl = GetDlgItem(hWnd, IDC_SPLIT); SplitSetObject(hWndCtrl, &CpuThreadSplitObject); // // Initialize right pane // hWndCtrl = GetDlgItem(hWnd, IDC_LIST_CPU_THREAD_PC); ListView_SetExtendedListViewStyleEx(hWndCtrl, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); for (i = 0; i < CPU_PC_COLUMN_NUM; i++) { lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvc.iSubItem = i; lvc.pszText = CpuPcColumn[i].Title; lvc.cx = CpuPcColumn[i].Width; lvc.fmt = CpuPcColumn[i].Align; ListView_InsertColumn(hWndCtrl, i, &lvc); } // // Position controls // GetClientRect(hWnd, &Rect); hWndCtrl = GetDlgItem(hWnd, IDC_LIST_CPU_THREAD_THREAD); CtrlRect.top = 0; CtrlRect.left = 0; CtrlRect.right = 400; CtrlRect.bottom = Rect.bottom; MoveWindow(hWndCtrl, CtrlRect.left, CtrlRect.top, CtrlRect.right - CtrlRect.left, CtrlRect.bottom - CtrlRect.top, TRUE); hWndCtrl = GetDlgItem(hWnd, IDC_SPLIT); CtrlRect.top = 0; CtrlRect.left = CtrlRect.right; CtrlRect.right = CtrlRect.left + 2; CtrlRect.bottom = Rect.bottom; MoveWindow(hWndCtrl, CtrlRect.left, CtrlRect.top, CtrlRect.right - CtrlRect.left, CtrlRect.bottom - CtrlRect.top, TRUE); hWndCtrl = GetDlgItem(hWnd, IDC_LIST_CPU_THREAD_PC); CtrlRect.top = 0; CtrlRect.left = CtrlRect.right; CtrlRect.right = Rect.right; CtrlRect.bottom = Rect.bottom; MoveWindow(hWndCtrl, CtrlRect.left, CtrlRect.top, CtrlRect.right - CtrlRect.left, CtrlRect.bottom - CtrlRect.top, TRUE); // // Register dialog scaler // Object->Scaler = &CpuThreadScaler; DialogRegisterScaler(Object); return TRUE; }