precomp.h
来自「一个类似windows」· C头文件 代码 · 共 397 行
H
397 行
#ifndef __IMAGESOFT_PRECOMP_H
#define __IMAGESOFT_PRECOMP_H
//#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <windowsx.h> /* GET_X/Y_LPARAM */
#include <stdio.h>
#include <tchar.h>
#include <commctrl.h>
#include "resource.h"
/* FIXME - add to headers !!! */
#ifndef SB_SIMPLEID
#define SB_SIMPLEID 0xFF
#endif
#ifndef RBBS_USECHEVRON
#define RBBS_USECHEVRON 0x200
#endif
#ifndef RBN_CHEVRONPUSHED
#define RBN_CHEVRONPUSHED (RBN_FIRST - 10)
#endif
#ifdef _MSC_VER
#pragma warning(disable : 4100)
#endif
#define MAX_KEY_LENGTH 256
#define NUM_MAINTB_IMAGES 10
#define TB_BMP_WIDTH 16
#define TB_BMP_HEIGHT 16
#define TOOLS 0
#define COLORS 1
#define HISTORY 2
#define MONOCHROMEBITS 1
#define GREYSCALEBITS 8
#define PALLETEBITS 8
#define TRUECOLORBITS 24
#define PIXELS 0
#define CENTIMETERS 1
#define INCHES 2
#ifdef _MSC_VER
#pragma warning(disable : 4100)
#endif
/* generic definitions and forward declarations */
struct _MAIN_WND_INFO;
struct _EDIT_WND_INFO;
struct _FLT_WND;
typedef enum _MDI_EDITOR_TYPE {
metUnknown = 0,
metImageEditor,
} MDI_EDITOR_TYPE, *PMDI_EDITOR_TYPE;
/* about.c */
INT_PTR CALLBACK AboutDialogProc(HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
/* imageprop.c */
typedef struct _IMAGE_PROP
{
LPTSTR lpImageName;
/* Canvas properties */
USHORT Type;
USHORT Unit;
LONG Resolution;
/* size of drawing area */
LONG Width;
LONG Height;
} IMAGE_PROP, *PIMAGE_PROP;
INT_PTR CALLBACK
ImagePropDialogProc(HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
/* imagesoft.c */
extern HINSTANCE hInstance;
extern HANDLE ProcessHeap;
/* imgedwnd.c */
typedef enum
{
tSelect = 0,
tMove,
tLasso,
tZoom,
tMagicWand,
tBrush,
tEraser,
tPencil,
tColorPick,
tStamp,
tFill,
tLine,
tPolyline,
tRectangle,
tRoundRectangle,
tPolygon,
tElipse,
} TOOL;
typedef struct _OPEN_IMAGE_EDIT_INFO
{
BOOL CreateNew;
union
{
struct
{
LONG Width;
LONG Height;
} New;
struct
{
LPTSTR lpImagePath;
} Open;
};
LPTSTR lpImageName;
USHORT Type;
LONG Resolution;
} OPEN_IMAGE_EDIT_INFO, *POPEN_IMAGE_EDIT_INFO;
typedef struct _EDIT_WND_INFO
{
MDI_EDITOR_TYPE MdiEditorType; /* Must be first member! */
HWND hSelf;
HBITMAP hBitmap;
HDC hDCMem;
struct _MAIN_WND_INFO *MainWnd;
struct _EDIT_WND_INFO *Next;
POINT ScrollPos;
USHORT Zoom;
DWORD Tool;
POPEN_IMAGE_EDIT_INFO OpenInfo; /* Only valid during initialization */
/* Canvas properties */
USHORT Type;
LONG Resolution;
/* size of drawing area */
LONG Width;
LONG Height;
} EDIT_WND_INFO, *PEDIT_WND_INFO;
BOOL CreateImageEditWindow(struct _MAIN_WND_INFO *MainWnd,
POPEN_IMAGE_EDIT_INFO OpenInfo);
VOID SetImageEditorEnvironment(PEDIT_WND_INFO Info,
BOOL Setup);
BOOL InitImageEditWindowImpl(VOID);
VOID UninitImageEditWindowImpl(VOID);
/* tooldock.c */
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);
/* mainwnd.c */
typedef struct _MENU_HINT
{
WORD CmdId;
UINT HintId;
} MENU_HINT, *PMENU_HINT;
typedef struct _MAIN_WND_INFO
{
HWND hSelf;
HWND hMdiClient;
HWND hStatus;
int nCmdShow;
struct _FLT_WND *fltTools;
struct _FLT_WND *fltColors;
struct _FLT_WND *fltHistory;
TOOLBAR_DOCKS ToolDocks;
/* Editors */
PEDIT_WND_INFO ImageEditors;
UINT ImagesCreated;
PVOID ActiveEditor;
/* status flags */
BOOL InMenuLoop : 1;
} MAIN_WND_INFO, *PMAIN_WND_INFO;
BOOL InitMainWindowImpl(VOID);
VOID UninitMainWindowImpl(VOID);
HWND CreateMainWindow(LPCTSTR lpCaption,
int nCmdShow);
BOOL MainWndTranslateMDISysAccel(HWND hwnd,
LPMSG lpMsg);
VOID MainWndSwitchEditorContext(PMAIN_WND_INFO Info,
HWND hDeactivate,
HWND hActivate);
MDI_EDITOR_TYPE MainWndGetCurrentEditor(PMAIN_WND_INFO MainWnd,
PVOID *Info);
/* misc.c */
INT AllocAndLoadString(OUT LPTSTR *lpTarget,
IN HINSTANCE hInst,
IN UINT uID);
DWORD LoadAndFormatString(IN HINSTANCE hInstance,
IN UINT uID,
OUT LPTSTR *lpTarget,
...);
BOOL StatusBarLoadAndFormatString(IN HWND hStatusBar,
IN INT PartId,
IN HINSTANCE hInstance,
IN UINT uID,
...);
BOOL StatusBarLoadString(IN HWND hStatusBar,
IN INT PartId,
IN HINSTANCE hInstance,
IN UINT uID);
INT GetTextFromEdit(OUT LPTSTR lpString,
IN HWND hDlg,
IN UINT Res);
VOID GetError(DWORD err);
BOOL ToolbarDeleteControlSpace(HWND hWndToolbar,
const TBBUTTON *ptbButton);
typedef VOID (*ToolbarChangeControlCallback)(HWND hWndToolbar,
HWND hWndControl,
BOOL Vert);
VOID ToolbarUpdateControlSpaces(HWND hWndToolbar,
ToolbarChangeControlCallback ChangeCallback);
BOOL ToolbarInsertSpaceForControl(HWND hWndToolbar,
HWND hWndControl,
INT Index,
INT iCmd,
BOOL HideVertical);
HIMAGELIST InitImageList(UINT NumButtons,
UINT StartResource);
/* opensave.c */
VOID FileInitialize(HWND hwnd);
BOOL DoOpenFile(HWND hwnd,
LPTSTR lpFileName,
LPTSTR lpName);
BOOL DoSaveFile(HWND hwnd);
/* floattoolbar.c */
typedef struct _FLT_WND
{
HWND hSelf;
LPTSTR lpName;
INT x;
INT y;
INT Width;
INT Height;
BOOL bShow : 1;
BOOL bOpaque;
} FLT_WND, *PFLT_WND;
BOOL FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info);
BOOL FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info);
BOOL FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info);
BOOL InitFloatWndClass(VOID);
VOID UninitFloatWndImpl(VOID);
BOOL ShowHideWindow(PFLT_WND FltInfo);
VOID MakeFlatCombo(HWND hwndCombo);
#endif /* __IMAGESOFT_PRECOMP_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?