tooldock.h

来自「winNT技术操作系统,国外开放的原代码和LIUX一样」· C头文件 代码 · 共 116 行

H
116
字号

typedef enum
{
    TOP_DOCK = 0,
    LEFT_DOCK,
    RIGHT_DOCK,
    BOTTOM_DOCK,
    NO_DOCK
} DOCK_POSITION;

typedef struct _DOCKBAR
{
    UINT BarId;
    LPCTSTR lpName;
    UINT DisplayTextId;
    DOCK_POSITION Position;
} DOCKBAR, *PDOCKBAR;

struct _TOOLBAR_DOCKS;

typedef BOOL (CALLBACK *PDOCKBAR_CREATECLIENT)(struct _TOOLBAR_DOCKS *TbDocks,
                                               const DOCKBAR *Dockbar,
                                               PVOID Context,
                                               HWND hParent,
                                               HWND *hwnd);
typedef BOOL (CALLBACK *PDOCKBAR_DESTROYCLIENT)(struct _TOOLBAR_DOCKS *TbDocks,
                                                const DOCKBAR *Dockbar,
                                                PVOID Context,
                                                HWND hwnd);
typedef BOOL (CALLBACK *PDOCKBAR_INSERTBAND)(struct _TOOLBAR_DOCKS *TbDocks,
                                             const DOCKBAR *Dockbar,
                                             PVOID Context,
                                             UINT *Index,
                                             LPREBARBANDINFO rbi);
typedef VOID (CALLBACK *PDOCKBAR_DOCKBAND)(struct _TOOLBAR_DOCKS *TbDocks,
                                           const DOCKBAR *Dockbar,
                                           PVOID Context,
                                           DOCK_POSITION DockFrom,
                                           DOCK_POSITION DockTo,
                                           LPREBARBANDINFO rbi);
typedef VOID (CALLBACK *PDOCKBAR_CHEVRONPUSHED)(struct _TOOLBAR_DOCKS *TbDocks,
                                                const DOCKBAR *Dockbar,
                                                PVOID Context,
                                                HWND hwndChild,
                                                LPNMREBARCHEVRON lpnm);

typedef struct _DOCKBAR_ITEM_CALLBACKS
{
    PDOCKBAR_CREATECLIENT CreateClient;
    PDOCKBAR_DESTROYCLIENT DestroyClient;
    PDOCKBAR_INSERTBAND InsertBand;
    PDOCKBAR_DOCKBAND DockBand;
    PDOCKBAR_CHEVRONPUSHED ChevronPushed;
} DOCKBAR_ITEM_CALLBACKS, *PDOCKBAR_ITEM_CALLBACKS;

typedef struct _DOCKBAR_ITEM
{
    struct _DOCKBAR_ITEM *Next;
    DOCKBAR DockBar;
    PVOID Context;
    HWND hWndTool;
    HWND hWndClient;
    DOCK_POSITION PrevDock;
    UINT PrevBandIndex;
    const DOCKBAR_ITEM_CALLBACKS *Callbacks;
} DOCKBAR_ITEM, *PDOCKBAR_ITEM;

typedef VOID (CALLBACK *PDOCKBAR_PARENTRESIZE)(PVOID Context,
                                               WORD cx,
                                               WORD cy);

#define DOCKS_COUNT 4
typedef struct _TOOLBAR_DOCKS
{
    HWND hParent;
    PVOID Context;
    HWND hRebar[DOCKS_COUNT];
    RECT rcRebar[DOCKS_COUNT];
    RECT rcClient;
    PDOCKBAR_ITEM Items;
    PDOCKBAR_PARENTRESIZE ParentResize;
    PDOCKBAR_ITEM Dragging;
    UINT DraggingBandId;
    TCHAR szTempText[255];
} TOOLBAR_DOCKS, *PTOOLBAR_DOCKS;

VOID TbdInitializeDocks(PTOOLBAR_DOCKS TbDocks,
                        HWND hWndParent,
                        PVOID Context,
                        PDOCKBAR_PARENTRESIZE ParentResizeProc);
INT TbdAdjustUpdateClientRect(PTOOLBAR_DOCKS TbDocks,
                              PRECT rcClient);
HDWP TbdDeferDocks(HDWP hWinPosInfo,
                   PTOOLBAR_DOCKS TbDocks);
BOOL TbdAddToolbar(PTOOLBAR_DOCKS TbDocks,
                   const DOCKBAR *Dockbar,
                   PVOID Context,
                   const DOCKBAR_ITEM_CALLBACKS *DockbarCallbacks);
BOOL TbdDockBarIdFromClientWindow(PTOOLBAR_DOCKS TbDocks,
                                  HWND hWndClient,
                                  UINT *Id);
BOOL TbdHandleNotifications(PTOOLBAR_DOCKS TbDocks,
                            LPNMHDR pnmh,
                            LRESULT *Result);
VOID TbdHandleEnabling(PTOOLBAR_DOCKS TbDocks,
                       HWND hWnd,
                       BOOL Enable);
VOID TbdHandleActivation(PTOOLBAR_DOCKS TbDocks,
                         HWND hWnd,
                         WPARAM *wParam,
                         LPARAM *lParam);
VOID TbdShowFloatingToolbars(PTOOLBAR_DOCKS TbDocks,
                             BOOL Show);
BOOL TbdInitImpl(VOID);
VOID TbdUninitImpl(VOID);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?