// pbrush.h : main header file for the PBRUSH application // #ifndef __AFXWIN_H__ #error include TEXT('stdafx.h') before including this file for PCH #endif #include "resource.h" // main symbols #include "loadimag.h" #ifdef PNG_SUPPORT #undef PNG_SUPPORT #endif // Bits for CTheApp::m_wEmergencyFlags // #define memoryEmergency 0x0001 // in a low free memory state #define gdiEmergency 0x0002 // some GDI create failed #define userEmergency 0x0004 // a CreateWindow failed #define warnEmergency 0x0008 // still need to warn the user #define failedEmergency 0x0010 // last operation actually failed // This is the minimum delay between warning messages so the user doesn't // get bombed by repetitious message boxes. The value is in milli-seconds. #define ticksBetweenWarnings (1000L * 60) #define nSysBrushes 25 #define nOurBrushes 4 #if 0 // Pulling self-registration out. This is to be done once during setup only class CPBTemplateServer : public COleTemplateServer { public: void UpdateRegistry(OLE_APPTYPE nAppType, LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL); } ; #endif /***************************************************************************/ // CPBApp: // See pbrush.cpp for the implementation of this class // class CPBApp : public CWinApp { public: CPBApp(); ~CPBApp(); // // OnFileNew made public for scanning support // afx_msg void OnFileNew(); // Overrides virtual BOOL InitInstance(); virtual int ExitInstance(); virtual void WinHelp( DWORD dwData, UINT nCmd = HELP_CONTEXT ); // general virtual BOOL OnIdle(LONG); // error handling routines inline BOOL InEmergencyState() const { return m_wEmergencyFlags != 0; } void SetMemoryEmergency(BOOL bFailed = TRUE); void SetGdiEmergency (BOOL bFailed = TRUE); void SetUserEmergency (BOOL bFailed = TRUE); BOOL CheckForEmergency() { return (m_wEmergencyFlags? TRUE: FALSE); } void WarnUserOfEmergency(); void SetFileError( UINT uOperationint, int nCause, LPCTSTR lpszFile = NULL ); void FileErrorMessageBox( void ); CString GetLastFile() {return m_sLastFile;} void TryToFreeMemory(); void ParseCommandLine(); // Patch to set the devmode and devname after pagesetup void SetDeviceHandles(HANDLE hDevNames, HANDLE hDevMode); // setup routines void LoadProfileSettings(); void SaveProfileSettings(); void GetSystemSettings( CDC* pdc ); // Methods CPoint CheckWindowPosition( CPoint ptPosition, CSize& sizeWindow ); CDocument* OpenDocumentFile( LPCTSTR lpszFileName ); BOOL DoPromptFileName( CString& fileName, UINT nIDSTitle, DWORD lFlags, BOOL bOpenFileDialog, int& iColors, BOOL bOnlyBmp ); #if 0 // Pulling self-registration out. This is to be done once during setup only void RegisterShell(CSingleDocTemplate *pDocTemplate); #endif // Implementation COleTemplateServer m_server; // Server object for document creation // This is the minimum amount of free memory we like to have DWORD m_dwLowMemoryBytes; UINT m_nLowGdiPercent; UINT m_nLowUserPercent; WORD m_wEmergencyFlags; // General user settings BOOL m_bShowStatusbar; #ifdef CUSTOMFLOAT BOOL m_bShowToolbar; BOOL m_bShowColorbar; #endif BOOL m_bShowThumbnail; BOOL m_bShowTextToolbar; BOOL m_bShowIconToolbar; BOOL m_bShowGrid; #ifdef CUSTOMFLOAT BOOL m_bToolsDocked; BOOL m_bColorsDocked; #endif //CUSTOMFLOAT BOOL m_bEmbedded; BOOL m_bLinked; BOOL m_bHidden; BOOL m_bActiveApp; BOOL m_bPenSystem; BOOL m_bMonoDevice; BOOL m_bPaletted; BOOL m_bPrintOnly; CString m_strDocName; CString m_strPrinterName; CString m_strDriverName; CString m_strPortName; BOOL m_bWiaCallback; CString m_strWiaDeviceId; CString m_strWiaEventId; #ifdef PCX_SUPPORT BOOL m_bPCXfile; #endif int m_iCurrentUnits; // custom colors defined by the user COLORREF* m_pColors; int m_iColors; // copy of the system wide palette CPalette* m_pPalette; CFont m_fntStatus; int m_nEmbeddedType; HWND m_hwndInPlaceApp; class CInPlaceFrame* m_pwndInPlaceFrame; #ifdef CUSTOMFLOAT CRect m_rectFloatTools; CRect m_rectFloatColors; #endif CRect m_rectFloatThumbnail; CRect m_rectMargins; BOOL m_bCenterHorizontally; BOOL m_bCenterVertically; BOOL m_bScaleFitTo; int m_nAdjustToPercent; int m_nFitToPagesWide; int m_nFitToPagesTall; WINDOWPLACEMENT m_wpPlacement; CSize m_sizeBitmap; int m_iPointSize; int m_iPosTextX; int m_iPosTextY; int m_iBoldText; int m_iUnderlineText; int m_iItalicText; int m_iVertEditText; int m_iPenText; CString m_strTypeFaceName; int m_iCharSet; int m_iSnapToGrid; int m_iGridExtent; // general system metrics. updated on system notification struct { int iWidthinPels; int iHeightinPels; int iWidthinMM; int iHeightinMM; int iWidthinINCH; int iHeightinINCH; int ixPelsPerDM; int iyPelsPerDM; int ixPelsPerMM; int iyPelsPerMM; int ixPelsPerINCH; int iyPelsPerINCH; int iBitsPixel; int iPlanes; } ScreenDeviceInfo; int m_cxFrame; int m_cyFrame; int m_cxBorder; int m_cyBorder; int m_cyCaption; CBrush* m_pbrSysColors[nSysBrushes + nOurBrushes]; CString m_sCurFile; int m_nFilters; GUID *m_guidFltType; // export filter types available GUID m_guidFltTypeUsed; int m_nFilterInIdx; int m_nFilterOutIdx; DWORD GetFilterIndex (REFGUID guidFltType); void FixExtension (CString& fileName, int iflFltType); CGdiplusInit GdiplusInit; #ifdef _DEBUG BOOL m_bLogUndo; #endif private: int m_nFileErrorCause; // from CFileException::m_cause WORD m_wEmergencyFlagss; DWORD m_tickLastWarning; CString m_strEmergencyNoMem; CString m_strEmergencyLowMem; CString m_sLastFile; UINT m_uOperation; afx_msg void OnFileOpen(); //{{AFX_MSG(CPBApp) afx_msg void OnAppAbout(); // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() }; extern CPBApp theApp; #define IsInPlace() (theApp.m_pwndInPlaceFrame != NULL) //#define SZ_MAPISENDDOC TEXT("MAPISendDocuments") //#define MAPIDLL TEXT("MAPI32.DLL") typedef ULONG (FAR PASCAL *LPFNMAPISENDDOCUMENTS)(ULONG, LPTSTR, LPTSTR, LPTSTR, ULONG); void CancelToolMode(BOOL bSelectionCommand); #if 0 // removing CRegKey - clashes with ATL class class CRegKey { public: CRegKey(HKEY hkParent, LPCTSTR pszSubKey) { if (RegCreateKey(hkParent, pszSubKey, &m_hk)!=ERROR_SUCCESS) m_hk=NULL; } ~CRegKey() { if (m_hk) RegCloseKey(m_hk); } operator HKEY() const { return(m_hk); } private: HKEY m_hk; }; #endif extern const CLSID BASED_CODE CLSID_Paint; extern const CLSID BASED_CODE CLSID_PaintBrush; #define ARRAYSIZE(_x) sizeof(_x)/sizeof(_x[0]) // make atoi work if building unicode // #ifdef UNICODE #define Atoi _wtoi #define _Itoa _itow #define Itoa _itow #else #define Atoi atoi #define _Itoa _itoa #define Itoa itoa #endif // macro-ize ansi/unicode conversions #define AtoW(x, y) MultiByteToWideChar (CP_ACP, 0, (x), -1, (y), (lstrlenA ((x))+1)) #define WtoA(x,y) WideCharToMultiByte(CP_ACP, 0, (x), -1, (y), (lstrlenW((x))+1), NULL,NULL) #ifdef USE_MIRRORING //// REGetLayout - Get layout of DC // // Returns layout flags from an NT5/W98 or later DC, or zero // on legacy platforms. #ifndef WS_EX_LAYOUTRTL #define WS_EX_LAYOUTRTL 0x00400000L #endif #ifndef WS_EX_NOINHERITLAYOUT #define WS_EX_NOINHERITLAYOUT 0x00100000L #endif #ifndef LAYOUT_RTL #define LAYOUT_RTL 0x01 #endif DWORD WINAPI PBGetLayoutInit(HDC hdc); DWORD WINAPI PBSetLayoutInit(HDC hdc, DWORD dwLayout); extern DWORD (WINAPI *PBSetLayout) (HDC hdc, DWORD dwLayout); extern DWORD (WINAPI *PBGetLayout) (HDC hdc); #endif /***************************************************************************/