| 364 | } |
| 365 | |
| 366 | LRESULT CWindowsView::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { |
| 367 | // ��������һ��ı��С |
| 368 | m_Splitter.SetSplitterExtendedStyle(SPLIT_FLATBAR | SPLIT_PROPORTIONAL); |
| 369 | m_Splitter.Create(m_hWnd, rcDefault, nullptr, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_CLIENTEDGE); |
| 370 | |
| 371 | m_List.Create(m_Splitter, rcDefault, nullptr, WS_CHILD | WS_VISIBLE | |
| 372 | WS_CLIPCHILDREN |WS_CLIPSIBLINGS | |
| 373 | LVS_REPORT | LVS_OWNERDATA | LVS_SINGLESEL | LVS_SHAREIMAGELISTS); |
| 374 | m_Tree.Create(m_Splitter, rcDefault, nullptr, WS_CHILD | WS_VISIBLE |
| 375 | | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | TVS_SHOWSELALWAYS, WS_EX_CLIENTEDGE, IDC_WINDOW_TREE); |
| 376 | |
| 377 | |
| 378 | |
| 379 | m_List.SetExtendedListViewStyle(LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_INFOTIP); |
| 380 | m_Tree.SetExtendedStyle(TVS_EX_DOUBLEBUFFER, TVS_EX_DOUBLEBUFFER); |
| 381 | |
| 382 | if (s_Images == nullptr) { |
| 383 | s_Images.Create(16, 16, ILC_COLOR32, 32, 32); |
| 384 | s_Images.AddIcon(AtlLoadIconImage(IDI_WINDOW, 0, 16, 16)); |
| 385 | } |
| 386 | m_Tree.SetImageList(s_Images, TVSIL_NORMAL); |
| 387 | m_List.SetImageList(s_Images, LVSIL_SMALL); |
| 388 | |
| 389 | m_Splitter.SetSplitterPanes(m_Tree, m_List); |
| 390 | // ���÷ָ�����λ�� |
| 391 | m_Splitter.SetSplitterPosPct(35); |
| 392 | |
| 393 | auto cm = GetColumnManager(m_List); |
| 394 | |
| 395 | struct { |
| 396 | PCWSTR text; |
| 397 | DataItemType type; |
| 398 | int width; |
| 399 | int format = LVCFMT_LEFT; |
| 400 | ColumnFlags flags = ColumnFlags::Visible; |
| 401 | }columns[] = { |
| 402 | { L"Class Name", DataItemType::ClassName, 140 }, |
| 403 | { L"Handle", DataItemType::Handle, 80, LVCFMT_RIGHT }, |
| 404 | { L"Text", DataItemType::Text, 150 }, |
| 405 | { L"Style", DataItemType::Style, 80, LVCFMT_RIGHT }, |
| 406 | { L"Ex Style", DataItemType::ExtendedStyle, 80, LVCFMT_RIGHT }, |
| 407 | { L"PID", DataItemType::ProcessId, 70, LVCFMT_RIGHT }, |
| 408 | { L"Process Name", DataItemType::ProcessName, 120 }, |
| 409 | { L"TID", DataItemType::ThreadId, 70, LVCFMT_RIGHT }, |
| 410 | { L"Rectangle", DataItemType::Rectangle, 170, LVCFMT_LEFT, ColumnFlags::None }, |
| 411 | { L"Parent HWND", DataItemType::ParentWindow, 100, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 412 | { L"Owner HWND", DataItemType::OwnerWindow, 100, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 413 | { L"Next HWND", DataItemType::NextWindow, 100, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 414 | { L"Previous HWND", DataItemType::PrevWindow, 100, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 415 | { L"First Child HWND", DataItemType::FirstChildWindow, 100, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 416 | { L"WndProc", DataItemType::WindowProc, 100, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 417 | { L"User Data", DataItemType::UserData, 100, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 418 | { L"ID", DataItemType::ID, 80, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 419 | { L"Class Atom", DataItemType::ClassAtom, 90, LVCFMT_RIGHT }, |
| 420 | { L"Class Style", DataItemType::ClassStyle, 80, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 421 | { L"Class Extra Bytes", DataItemType::ClassExtra, 70, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 422 | { L"Window Extra Bytes", DataItemType::WindowExtra, 70, LVCFMT_RIGHT, ColumnFlags::Fixed }, |
| 423 | }; |
nothing calls this directly
no test coverage detected