#pragma once #include #include #include #include "win32/Window.h" #include "win32/TreeView.h" #include "win32/Button.h" #include "win32/GdiObj.h" #include "../../gs/GSHandler.h" class CGsPacketListView : public Framework::Win32::CWindow { public: enum { NOTIFICATION_SELCHANGED = 0xA000, }; struct SELCHANGED_INFO : public NMHDR { uint32 selectedCmdIndex; }; CGsPacketListView(HWND, const RECT&); virtual ~CGsPacketListView(); void SetFrameDump(CFrameDump*); uint32 GetSelectedItemIndex() const; protected: virtual long OnSize(unsigned int, unsigned int, unsigned int) override; virtual long OnCommand(unsigned short, unsigned short, HWND) override; virtual long OnNotify(WPARAM, NMHDR*) override; private: struct PACKETINFO { PACKETINFO() : cmdIndexStart(0) , treeViewItem(nullptr) { } uint32 cmdIndexStart; HTREEITEM treeViewItem; }; struct WRITEINFO { WRITEINFO() : treeViewItem(nullptr) { } HTREEITEM treeViewItem; }; uint32 GetItemIndexFromTreeViewItem(TVITEM*) const; long OnPacketsTreeViewCustomDraw(NMTVCUSTOMDRAW*); void OnPacketsTreeViewItemExpanding(NMTREEVIEW*); void OnPacketsTreeViewSelChanged(NMTREEVIEW*); void GoToWrite(uint32); void OnPrevDrawKick(); void OnNextDrawKick(); std::unique_ptr m_packetsTreeView; Framework::Win32::CFont m_drawCallItemFont; std::unique_ptr m_prevDrawKickButton; std::unique_ptr m_nextDrawKickButton; CFrameDump* m_frameDump = nullptr; std::vector m_packetInfos; std::vector m_writeInfos; };