MAINWND.H

#ifndef __MAINWND_H__ 
#define __MAINWND_H__

// Pickup the ASSERT_HWND() macro
#include "DbList.h"

class MainWnd
{
friend LRESULT CALLBACK MainWndProc(HWND, unsigned, WPARAM, LPARAM);
public:
MainWnd();
~MainWnd();

BOOL Create();
BOOL BatchOpenFiles( PSTR *, int, BOOL, BOOL );

void UpdateStatus( void );
inline HWND GetHwnd() { return m_hwnd; }

void DuplicateBuffer( FileInfo *pfiSource );
void DestroyFileInfo( FileInfo *pfi );

// For convenience, we redefine some global window related functions as
// members of this class since we can automagically validate and pass the
// HWND for the class object.
BOOL UpdateWindow() { ASSERT_HWND( m_hwnd );
return ::UpdateWindow( m_hwnd ); }
BOOL ShowWindow( int cmdShow ) { ASSERT_HWND( m_hwnd );
return ::ShowWindow( m_hwnd, cmdShow ); }
LRESULT SendMessage( UINT m, WPARAM w, LPARAM l )
{ ASSERT_HWND( m_hwnd ); return ::SendMessage( m_hwnd, m, w, l ); }
LRESULT PostMessage( UINT m, WPARAM w, LPARAM l )
{ ASSERT_HWND( m_hwnd ); return ::PostMessage( m_hwnd, m, w, l ); }
int MessageBox( LPCSTR, UINT uType = MB_OK | MB_APPLMODAL );
int MessageBox( UINT uResID, UINT uType = MB_OK | MB_APPLMODAL );

protected:
void OnDestroy( void );
BOOL OnCommand( WPARAM, LPARAM );
BOOL OnTimer( WPARAM, LPARAM );
BOOL OnPaint( WPARAM, LPARAM );
BOOL OnDropFiles( WPARAM );
BOOL OnInitMenu( WPARAM );
BOOL OnInitMenuPopup(WPARAM);

FileInfo *OnFileOpen( LPTSTR );

protected:
HWND m_hwnd;
BOOL m_fCreated;
int m_n3DBuffers;
DSCAPS m_dscaps;

DbLinkedList<class FileInfo *> m_dlInfoList;

};



#endif