/*
 ******************************************************************************
 *  Copyright 1998 DeltaLink bv. All Rights Reserved.
 ******************************************************************************
 *
 * Module Name : sw.h
 *
 * Version/Rev : 1.00
 * Author/Date : Ronald van Uden
 * Description : SAPI Protocol Driver.
 *
 *-----------------------------------------------------------------------------
 *
 *------------------------------  Revision Log  -------------------------------
 * Date     Time  Name    Function/Revision
 * -------- ----- ------- -----------------------------------------------------
 * 08-03-98 09:00 Ronald  First Start
 *
 *
 *-----------------------------------------------------------------------------
 */
// sw.h

// compatibility 16 <--> 32 bit
#ifdef WIN32
#define GetWindowInstance(w) (HINSTANCE)GetWindowLong(w, GWL_HINSTANCE)
#define GetWindowParent(w)   (HWND)		GetWindowLong(w, GWL_HWNDPARENT)
#define GetWindowID(w)                  GetWindowLong(w, GWL_ID)
#define SendNotify(w,n) 	  SendMessage(GetWindowParent(w), WM_COMMAND, \
	MAKELONG(GetWindowID(w), n), (LPARAM)w)
#define PostNotify(w,n) 	  PostMessage(GetWindowParent(w), WM_COMMAND, \
	MAKELONG(GetWindowID(w), n), (LPARAM)w)
#define CONTROLID LOWORD(wParam)
#define CONTROLNOTIFY HIWORD(wParam)
#define DRAGIFILE 0xFFFFFFFF

// Tabbed dialog support
typedef struct {
	char *szpagename;
	int   resid;
	DLGPROC lpDialogFunc;
} TABCTLPAGE;

typedef struct  { 
	int nPages;
	HWND hwndDisplay;   // current child dialog box 
	LPARAM lParam;      // value to pass on to the pages
	TABCTLPAGE *ptpages;
} TABCTLINFO; 


#else
#define GetWindowInstance(w) (HINSTANCE)GetWindowWord(w, GWW_HINSTANCE)
#define GetWindowParent(w)   (HWND)		GetWindowWord(w, GWW_HWNDPARENT)
#define GetWindowID(w)					GetWindowWord(w, GWW_ID)
#define SendNotify(w,n) 	  SendMessage(GetWindowParent(w), WM_COMMAND, \
	GetWindowID(w), MAKELONG(w, n))
#define PostNotify(w,n) 	  PostMessage(GetWindowParent(w), WM_COMMAND, \
	GetWindowID(w), MAKELONG(w, n))
#define CONTROLID wParam
#define CONTROLNOTIFY HIWORD(lParam)
#define SendParentCommand(w,c) SendMessage(GetWindowParent(w), WM_COMMAND, \
    c, MAKELONG(w, 0))
#define DRAGIFILE 0xFFFF

#endif

#ifdef __cplusplus
extern "C" {
#endif

extern void SetDlgItemTextF(HWND hDlg, int idc, char *fmt, ...);
extern int GetDlgItemTextF(HWND hDlg, int idc, char *fmt, ...);
extern int MessageBoxF(HWND hwndparent, char *sztitle, char *fmt, ...);
extern void ReadProfileWinsize(HWND hwnd, LPSTR szdefault);
extern void WriteProfileWinsize(HWND hwnd);

#ifdef WIN32

extern BOOL SetRegistryRoot(LPSTR lpRegRoot);

extern HWND TabPageSet(HWND hwtab);
extern BOOL TabPageClose(HWND hwtab);

extern int LVInsertColumn(HWND hwlist, int icol, int iwidth, char *szText, int fmt);
extern int LVInsertItem(HWND hwlist, int index, LPSTR sztext, int iicon, LPARAM lParam);
extern void LVSetView(HWND hwndLV, DWORD dwView);

#else
extern BOOL SetInifile(char *szinifile, char *szsection);
#endif

// Application profile / registry
// defined in main file
//extern int GetAppProfileString(LPSTR lpKeyName, LPSTR lpDefault, 
//						LPSTR  lpReturnedString, DWORD  nSize);
//extern int WriteAppProfileString(LPSTR lpKeyName, LPSTR  lpString);


#ifdef __cplusplus
}

#endif


