|
|
//
// PSDLG.HPP
// Page Sorter Dialog
//
// Copyright Microsoft 1998-
//
#ifndef __PSDLG_HPP_
#define __PSDLG_HPP_
#define INSERT_BEFORE 1
#define INSERT_AFTER 2
#define WM_LBTRACKPOINT 0x0131
#define RENDERED_WIDTH (DRAW_WIDTH / 16)
#define RENDERED_HEIGHT (DRAW_HEIGHT / 16)
//
// Data we store in the GWL_USERDATA of the dialog. Some is passed in
// by the DialogBox caller. Some is used just by the dialog. Some is
// returned back to the DialogBox caller.
//
typedef struct tagPAGESORT { UINT hCurPage; BOOL fPageOpsAllowed; BOOL fChanged; BOOL fDragging; HWND hwnd; int iCurPageNo; int iPageDragging; HCURSOR hCursorCurrent; HCURSOR hCursorDrag; HCURSOR hCursorNoDrop; HCURSOR hCursorNormal; } PAGESORT;
//
// Messages the caller can send to the page sort dialog
//
enum { WM_PS_GETCURRENTPAGE = WM_APP, WM_PS_HASCHANGED, WM_PS_ENABLEPAGEOPS, // wParam == TRUE or FALSE
WM_PS_LOCKCHANGE, WM_PS_PAGECLEARIND, // wParam == hPage
WM_PS_PAGEDELIND, // wParam == hPage
WM_PS_PAGEORDERUPD };
//
// The page sorter dialog uses a horizontal listbox to display the
// thumbnail views of pages. Each item holds a bitmap of data for the
// page. We render this bitmap the first time the item is painted. The
// listbox takes care of scrolling and keyboard navigation for us.
//
BOOL CALLBACK PageSortDlgProc(HWND, UINT, WPARAM, LPARAM);
void OnInitDialog(HWND hwndPS, PAGESORT * pps); void OnMeasureItem(HWND hwndPS, UINT id, LPMEASUREITEMSTRUCT lpmi); void OnDeleteItem(HWND hwndPS, UINT id, LPDELETEITEMSTRUCT lpdi); void OnDrawItem(HWND hwndPS, UINT id, LPDRAWITEMSTRUCT lpdi); void OnCommand(PAGESORT * pps, UINT id, UINT code, HWND hwndCtl); BOOL OnSetCursor(PAGESORT * pps, HWND hwnd, UINT ht, UINT msg); void OnDelete(PAGESORT * pps); void InsertPage(PAGESORT * pps, UINT uiBeforeAfter);
void OnPageClearInd(PAGESORT * pps, WB_PAGE_HANDLE hPage); void OnPageDeleteInd(PAGESORT * pps, WB_PAGE_HANDLE hPage); void OnPageOrderUpdated(PAGESORT * pps);
void OnStartDragDrop(PAGESORT * pps, UINT iItem, int x, int y); void WhileDragging(PAGESORT * pps, int x, int y); void OnEndDragDrop(PAGESORT * pps, BOOL fComplete, int x, int y);
void EnableButtons(PAGESORT * pps); void MovePage(PAGESORT * pps, int iOldPageNo, int iNewPageNo);
#endif // __PSDLG_HPP_
|