Microsoft-3D-Movie-Maker/INC/PORTF.H

147 lines
5.3 KiB
C

/* Copyright (c) Microsoft Corporation.
Licensed under the MIT License. */
/***************************************************************************
Portfolio related includes.
Primary Author: ******
Review Status: Not yet reviewed
***************************************************************************/
// Top level portoflio routines.
bool FPortGetFniMovieOpen(FNI *pfni);
bool FPortDisplayWithIds(FNI *pfni, bool fOpen, long lFilterLabel, long lFilterExt, long lTitle, LPTSTR lpstrDefExt, PSTN pstnDefFileName, FNI *pfniInitialDir, ulong grfPrevType, CNO cnoWave);
bool FPortGetFniOpen(FNI *pfni, LPTSTR lpstrFilter, LPTSTR lpstrTitle, FNI *pfniInitialDir, ulong grfPrevType, CNO cnoWave);
bool FPortGetFniSave(FNI *pfni, LPTSTR lpstrFilter, LPTSTR lpstrTitle, LPTSTR lpstrDefExt, PSTN pstnDefFileName, ulong grfPrevType, CNO cnoWave);
UINT CALLBACK OpenHookProc(HWND hWnd, UINT msg, UINT wParam, LONG lParam);
void OpenPreview(HWND hwnd, PGNV pgnvOff, RCS *prcsPreview);
void RepaintPortfolio(HWND hwndCustom);
static WNDPROC lpBtnProc;
LRESULT CALLBACK SubClassBtnProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
static WNDPROC lpPreviewProc;
LRESULT CALLBACK SubClassPreviewProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
static WNDPROC lpDlgProc;
LRESULT CALLBACK SubClassDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
typedef struct dlginfo
{
bool fIsOpen; // fTrue if Open file, (ie not Save file)
bool fDrawnBkgnd; // fTrue if portfolio background bitmap has been displayed.
RCS rcsDlg; // Initial size of the portfolio common dlg window client area.
ulong grfPrevType; // Bits for types of preview required, (eg movie, sound etc) == 0 if no preview
CNO cnoWave; // Wave file cno for audio when portfolio is invoked.
}
DLGINFO;
typedef DLGINFO * PDLGINFO;
enum
{
fpfNil = 0x0000,
fpfPortPrevMovie = 0x0001,
fpfPortPrevSound = 0x0002,
fpfPortPrevTexture = 0x0004
};
// The remainder of this file contains temporary stuff which are defined
// in the win95 include files which we are not using yet.
// From WINUSER.H...
typedef struct tagNMHDR
{
HWND hwndFrom;
UINT idFrom;
UINT code; // NM_ code
} NMHDR;
typedef NMHDR FAR * LPNMHDR;
// From COMMDLG.H...
#define OFN_EXPLORER 0x00080000 // new look commdlg
#define SC_CONTEXTHELP 0xF180
// Structure used for all OpenFileName notifications
typedef struct _OFNOTIFYA
{
NMHDR hdr;
LPOPENFILENAMEA lpOFN;
LPSTR pszFile; // May be NULL
} OFNOTIFYA, FAR *LPOFNOTIFYA;
// Structure used for all OpenFileName notifications
typedef struct _OFNOTIFYW
{
NMHDR hdr;
LPOPENFILENAMEW lpOFN;
LPWSTR pszFile; // May be NULL
} OFNOTIFYW, FAR *LPOFNOTIFYW;
#ifdef UNICODE
typedef OFNOTIFYW OFNOTIFY;
typedef LPOFNOTIFYW LPOFNOTIFY;
#else
typedef OFNOTIFYA OFNOTIFY;
typedef LPOFNOTIFYA LPOFNOTIFY;
#endif // UNICODE
#define CDN_FIRST (0U-601U)
#define CDN_LAST (0U-699U)
// Notifications when Open or Save dialog status changes
#define CDN_INITDONE (CDN_FIRST - 0x0000)
#define CDN_SELCHANGE (CDN_FIRST - 0x0001)
#define CDN_FOLDERCHANGE (CDN_FIRST - 0x0002)
#define CDN_SHAREVIOLATION (CDN_FIRST - 0x0003)
#define CDN_HELP (CDN_FIRST - 0x0004)
#define CDN_FILEOK (CDN_FIRST - 0x0005)
#define CDN_TYPECHANGE (CDN_FIRST - 0x0006)
#define WM_NOTIFY 0x004E
#define WM_HELP 0x0053
#define CDM_FIRST (WM_USER + 100)
#define CDM_LAST (WM_USER + 200)
#define SNDMSG SendMessage
// lParam = pointer to text buffer that gets filled in
// wParam = max number of characters of the text buffer (including NULL)
// return = < 0 if error; number of characters needed (including NULL)
#define CDM_GETSPEC (CDM_FIRST + 0x0000)
#define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) \
(int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) \
(int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
#ifdef UNICODE
#define CommDlg_OpenSave_GetSpec CommDlg_OpenSave_GetSpecW
#else
#define CommDlg_OpenSave_GetSpec CommDlg_OpenSave_GetSpecA
#endif // !UNICODE
#define CDM_GETFILEPATH (CDM_FIRST + 0x0001)
#define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) \
(int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) \
(int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
#ifdef UNICODE
#define CommDlg_OpenSave_GetFilePath CommDlg_OpenSave_GetFilePathW
#else
#define CommDlg_OpenSave_GetFilePath CommDlg_OpenSave_GetFilePathA
#endif // !UNICODE
// lParam = not used
// wParam = ID of control to change
// return = not used
#define CDM_HIDECONTROL (CDM_FIRST + 0x0005)
#define CommDlg_OpenSave_HideControl(_hdlg, _id) \
(void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0)
// lParam = pointer to a string
// wParam = ID of control to change
// return = not used
#define CDM_SETCONTROLTEXT (CDM_FIRST + 0x0004)
#define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) \
(void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text)