Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

172 lines
4.4 KiB

#ifndef __UTILS__H
#define __UTILS__H
#ifdef UNICODE
#define LSTRNCPY(str1, str2, n) wcsncpy(str1, str2, n)
#else
#define LSTRNCPY(str1, str2, n) strncpy(str1, str2, n)
#endif
#define AToU(dst, cchDst, src) \
MultiByteToWideChar(CP_ACP, 0, src, -1, dst, cchDst)
#define UToA(dst, cchDst, src) \
WideCharToMultiByte(CP_ACP, 0, src, -1, dst, cchDst, 0, 0)
#ifdef UNICODE
#define SToT AToU
#define TToS UToA
#define AToT AToU
#define TToU(dst, cchDst, src) lstrcpyn(dst, src, cchDst)
#else
#define SToT UToA
#define TToS AToU
#define AToT(dst, cchDst, src) lstrcpyn(dst, src, cchDst)
#define TToU AToU
#endif
//
// WIA->TWAIN Capability Conversions
//
TW_UINT16 WIA_IPA_COMPRESSION_TO_ICAP_COMPRESSION(LONG lCompression);
TW_UINT16 WIA_IPA_DATATYPE_TO_ICAP_PIXELTYPE(LONG lDataType);
TW_UINT16 WIA_IPA_FORMAT_TO_ICAP_IMAGEFILEFORMAT(GUID guidFormat);
//
// TWAIN->WIA Property Conversions
//
LONG ICAP_COMPRESSION_TO_WIA_IPA_COMPRESSION(TW_UINT16 Compression);
LONG ICAP_PIXELTYPE_TO_WIA_IPA_DATATYPE(TW_UINT16 PixelType);
GUID ICAP_IMAGEFILEFORMAT_TO_WIA_IPA_FORMAT(TW_UINT16 ImageFileFormat);
//
// BITMAP / DIB data helper function definitions
//
#define BMPFILE_HEADER_MARKER ((WORD) ('M' << 8) | 'B')
TW_UINT16 WriteDIBToFile(LPSTR szFileName, HGLOBAL hDIB);
int GetDIBBitsOffset(BITMAPINFO *pbmi);
UINT GetDIBLineSize(UINT Width, UINT BitCount);
BOOL FlipDIB(HGLOBAL hDIB, BOOL bUpsideDown = FALSE);
UINT GetLineSize(PMEMORY_TRANSFER_INFO pInfo);
//
// string resource loader helper function definition
//
LPTSTR LoadResourceString(int StringId);
//
// TWAIN condition code (TW_STATUS) conversion helper function
//
TW_UINT16 TWCC_FROM_HRESULT(HRESULT hr);
//
// data source manager class definition
//
class CDSM
{
public:
CDSM();
~CDSM();
BOOL Notify(TW_IDENTITY *pSrc, TW_IDENTITY *pDst,
TW_UINT32 twDG, TW_UINT16 twDAT, TW_UINT16 Msg,
TW_MEMREF pData);
private:
HINSTANCE m_hDSM;
DSMENTRYPROC m_DSMEntry;
};
//
// dialog class definition
//
class CDialog
{
public:
CDialog()
{
m_TemplateId = -1;
m_hInst = NULL;
m_hDlg = NULL;
}
void Initialize(HINSTANCE hInst, int TemplateId)
{
m_hInst = hInst;
m_TemplateId = TemplateId;
}
virtual ~CDialog()
{}
static INT_PTR CALLBACK DialogWndProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT_PTR DoModal(HWND hwndOwner, LPARAM lParam)
{
if (m_hInst && -1 != m_TemplateId)
return DialogBoxParam(m_hInst, MAKEINTRESOURCE(m_TemplateId),
hwndOwner, DialogWndProc, lParam);
else
return -1;
}
BOOL DoModeless(HWND hwndOwner, LPARAM lParam)
{
if (m_hInst && -1 != m_TemplateId)
m_hDlg = CreateDialogParam(m_hInst, MAKEINTRESOURCE(m_TemplateId),
hwndOwner, DialogWndProc, lParam);
return NULL != m_hDlg;
}
virtual BOOL OnInitDialog()
{
return TRUE;
}
virtual void OnCommand(WPARAM wParam, LPARAM lParam)
{}
virtual BOOL OnHelp(LPHELPINFO pHelpInfo)
{
return FALSE;
}
virtual BOOL OnNotify(LPNMHDR pnmh)
{
SetWindowLongPtr(m_hDlg, DWLP_MSGRESULT, FALSE);
return TRUE;
}
virtual BOOL OnContextMenu(HWND hWnd, WORD xPos, WORD yPos)
{
return FALSE;
}
virtual BOOL OnMiscMsg(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return FALSE;
}
LRESULT SendControlMsg( int ControlId, UINT Msg, WPARAM wParam = 0, LPARAM lParam = 0)
{
return SendDlgItemMessage(m_hDlg, ControlId, Msg, wParam, lParam);
}
HWND GetControl(int idControl)
{
return GetDlgItem(m_hDlg, idControl);
}
BOOL SetTitle(LPCTSTR Title)
{
if (m_hDlg)
return ::SetWindowText(m_hDlg, Title);
return FALSE;
}
operator HWND()
{
return m_hDlg;
}
HWND m_hDlg;
protected:
HINSTANCE m_hInst;
int m_TemplateId;
};
#endif // __UTILS_H_