00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024
00025 #include <windows.h>
00026 #undef min
00027 #undef max
00028
00029 #include "cinder/app/AppImplMsw.h"
00030 #include "cinder/app/AppImplMswRenderer.h"
00031 #include "cinder/Display.h"
00032
00033 namespace cinder { namespace app {
00034
00035 extern "C" LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
00036
00037 class AppImplMswBasic : public AppImplMsw {
00038 public:
00039 AppImplMswBasic( class AppBasic *aApp );
00040 void run();
00041
00042 class AppBasic* getApp() { return mApp; }
00043
00044 void quit() { mShouldQuit = true; }
00045
00046 void setWindowWidth( int aWindowWidth );
00047 void setWindowHeight( int aWindowHeight );
00048 void setWindowSize( int aWindowWidth, int aWindowHeight );
00049 float setFrameRate( float aFrameRate );
00050 void toggleFullScreen();
00051
00052 std::string getAppPath() const;
00053
00054 Display* getDisplay() { return mDisplay; }
00055
00056 protected:
00057 bool createWindow( int *width, int *height );
00058 void killWindow( bool wasFullScreen );
00059 void getScreenSize( int clientWidth, int clientHeight, int *resultWidth, int *resultHeight );
00060
00061 bool mShouldQuit;
00062 bool mIsDragging;
00063 bool mHasBeenInitialized;
00064 class AppBasic *mApp;
00065
00066
00067 HWND mWnd;
00068 HDC mDC;
00069 HINSTANCE mInstance;
00070 DWORD mWindowStyle, mWindowExStyle;
00071 double mNextFrameTime;
00072 Display *mDisplay;
00073
00074 friend LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
00075 };
00076
00077 } }