/*
	cWinApp
	프로그램의 시작점
	윈도우즈 인터페이스를 위한 메시지 전송 체계를 가짐

*/

#ifndef cAppWindow_H
#define cAppWindow_H

#include <windows.h>

enum eMessageLoopExitCode{
	MLEC_EXITAPP = 0,
	MLEC_ERROR = -1,
	MLEC_USER = 1
};

class cWinApp{
private:
	// 응용 프로그램 정보들
	HINSTANCE hInstance;
	LPSTR lpCmdLine;
	int nCmdShow;

protected:

	// 응용 프로그램 동작
	virtual int Run();

	// 메시지 전송 체계
	int MessageLoop();
	BOOL DispatchMessages(int *rv);
	BOOL DispatchAMessage(int *rv);
	virtual void OnIdle();

public:
	cWinApp();
	virtual ~cWinApp();

	int WinMain(HINSTANCE _hInstance, LPSTR _lpCmdLine, int _iCmdShow);

	// overloaded operator
	operator HINSTANCE(){ return hInstance; }

};

#endif
