Browse Source

Properly maximize window after loading a project
By default maximize the main editor window

BearishSun 10 years ago
parent
commit
a60f8413ba

+ 3 - 3
BansheeCore/Source/Win32/BsWin32Window.cpp

@@ -259,19 +259,19 @@ namespace BansheeEngine
 	void Win32Window::minimize()
 	{
 		if (m->hWnd)
-			SendMessage(m->hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
+			ShowWindow(m->hWnd, SW_MINIMIZE);
 	}
 
 	void Win32Window::maximize()
 	{
 		if (m->hWnd)
-			SendMessage(m->hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
+			ShowWindow(m->hWnd, SW_MAXIMIZE);
 	}
 
 	void Win32Window::restore()
 	{
 		if (m->hWnd)
-			SendMessage(m->hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
+			ShowWindow(m->hWnd, SW_RESTORE);
 	}
 
 	void Win32Window::_windowMovedOrResized()

+ 248 - 248
BansheeD3D11RenderAPI/Include/BsD3D11RenderWindow.h

@@ -1,251 +1,251 @@
 //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
 //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsD3D11Prerequisites.h"
-#include "BsRenderWindow.h"
-
-namespace BansheeEngine
-{
-	class D3D11RenderWindow;
-
-	/**
-	 * @brief	Contains various properties that describe a render window.
-	 */
-	class BS_D3D11_EXPORT D3D11RenderWindowProperties : public RenderWindowProperties
-	{
-	public:
-		D3D11RenderWindowProperties(const RENDER_WINDOW_DESC& desc);
-		virtual ~D3D11RenderWindowProperties() { }
-
-	private:
-		friend class D3D11RenderWindowCore;
-		friend class D3D11RenderWindow;
-	};
-
-	/**
-	 * @brief	Render window implementation for Windows and DirectX 11.
-	 *
-	 * @note	Core thread only.
-	 */
-	class BS_D3D11_EXPORT D3D11RenderWindowCore : public RenderWindowCore
-	{
-	public:
-		/**
-		 * @copydoc	RenderWindowCore::RenderWindowCore
-		 */
-		D3D11RenderWindowCore(const RENDER_WINDOW_DESC& desc, UINT32 windowId,
-			D3D11Device& device, IDXGIFactory* DXGIFactory);
-
-		~D3D11RenderWindowCore();
-
-		/**
-		 * @copydoc RenderWindowCore::move
-		 */
-		void move(INT32 left, INT32 top) override;
-
-		/**
-		 * @copydoc RenderWindowCore::resize
-		 */
-		void resize(UINT32 width, UINT32 height) override;
-
-		/**
-		 * @copydoc RenderWindowCore::setHidden
-		 */
-		void setHidden(bool hidden) override;
-
-		/**
-		 * @copydoc RenderWindowCore::setActive
-		 */
-		void setActive(bool state) override;
-
-		/**
-		 * @copydoc	RenderWindowCore::minimize
-		 */
-		void minimize() override;
-
-		/**
-		 * @copydoc	RenderWindowCore::maximize
-		 */
-		void maximize() override;
-
-		/**
-		 * @copydoc	RenderWindowCore::restore
-		 */
-		void restore() override;
-
-		/**
-		 * @copydoc RenderWindowCore::setFullscreen(UINT32, UINT32, float, UINT32)
-		 */
-		void setFullscreen(UINT32 width, UINT32 height, float refreshRate = 60.0f, UINT32 monitorIdx = 0) override;
-
-		/**
-		 * @copydoc RenderWindowCore::setFullscreen(const VideoMode&)
-		 */
-		void setFullscreen(const VideoMode& mode) override;
-
-		/**
-		* @copydoc RenderWindowCore::setWindowed
-		*/
-		void setWindowed(UINT32 width, UINT32 height) override;
-
-		/**
-		 * @copydoc RenderWindowCore::copyContentsToMemory
-		 */
-		void copyToMemory(PixelData &dst, FrameBuffer buffer);
-
-		/**
-		 * @copydoc RenderWindowCore::swapBuffers
-		 */
-		void swapBuffers() override;
-
-		/**
-		 * @copydoc RenderWindowCore::getCustomAttribute
-		 */
-		void getCustomAttribute(const String& name, void* pData) const override;
-
-		/**
-		 * @copydoc	RenderWindowCore::_windowMovedOrResized
-		 */
-		void _windowMovedOrResized() override;
-
-		/**
-		 * @brief	Returns presentation parameters used for creating the window swap chain.
-		 */
-		DXGI_SWAP_CHAIN_DESC* _getPresentationParameters() { return &mSwapChainDesc; }
-
-		/**
-		 * @brief	Returns internal window handle.
-		 */
-		HWND _getWindowHandle() const;
-
-	protected:
-		friend class D3D11RenderWindow;
-
-		/**
-		 * @copydoc	CoreObjectCore::initialize
-		 */
-		virtual void initialize() override;
-
-		/**
-		 * @brief	Creates internal resources dependent on window size.
-		 */
-		void createSizeDependedD3DResources();
-
-		/**
-		 * @brief	Destroys internal resources dependent on window size.
-		 */
-		void destroySizeDependedD3DResources();
-
-		/**
-		 * @brief	Queries the current DXGI device. Make sure to release the returned object when done with it.
-		 */
-		IDXGIDevice* queryDxgiDevice(); 
-
-		/**
-		 * @brief	Creates a swap chain for the window.
-		 */
-		void createSwapChain();
-
-		/**
-		 * @brief	Resizes all buffers attached to the swap chain to the specified size.
-		 */
-		void resizeSwapChainBuffers(UINT32 width, UINT32 height);
-
-		/**
-		 * @copydoc	RenderWindowCore::getProperties
-		 */
-		const RenderTargetProperties& getPropertiesInternal() const override { return mProperties; }
-
-		/**
-		 * @copydoc	RenderWindowCore::getSyncedProperties
-		 */
-		RenderWindowProperties& getSyncedProperties() override { return mSyncedProperties; }
-
-		/**
-		 * @copydoc	RenderWindowCore::syncProperties
-		 */
-		void syncProperties() override;
-
-	protected:
-		D3D11Device& mDevice;
-		IDXGIFactory* mDXGIFactory;
-		bool mSizing;
-		bool mIsChild;
-		bool mShowOnSwap;
-
-		DXGI_SAMPLE_DESC mMultisampleType;
-		UINT32 mRefreshRateNumerator;
-		UINT32 mRefreshRateDenominator;
-
-		ID3D11Texture2D* mBackBuffer;
-		ID3D11RenderTargetView*	mRenderTargetView;
-		TextureViewPtr mDepthStencilView;
-		SPtr<TextureCore> mDepthStencilBuffer;
-
-		IDXGISwapChain*	mSwapChain;
-		DXGI_SWAP_CHAIN_DESC mSwapChainDesc;
-		Win32Window* mWindow;
-
-		D3D11RenderWindowProperties mProperties;
-		D3D11RenderWindowProperties mSyncedProperties;
-	};
-
-	/**
-	 * @brief	Render window implementation for Windows and DirectX 11.
-	 *
-	 * @note	Sim thread only.
-	 */
-	class BS_D3D11_EXPORT D3D11RenderWindow : public RenderWindow
-	{
-	public:
-		~D3D11RenderWindow() { }
-
-		/**
-		 * @copydoc RenderWindow::screenToWindowPos
-		 */
-		void getCustomAttribute(const String& name, void* pData) const override;
-
-		/**
-		 * @copydoc RenderWindow::screenToWindowPos
-		 */
-		Vector2I screenToWindowPos(const Vector2I& screenPos) const override;
-
-		/**
-		 * @copydoc RenderWindow::windowToScreenPos
-		 */
-		Vector2I windowToScreenPos(const Vector2I& windowPos) const override;
-
-		/**
-		 * @copydoc	RenderWindow::getCore
-		 */
-		SPtr<D3D11RenderWindowCore> getCore() const;
-
-	protected:
-		friend class D3D11RenderWindowManager;
-		friend class D3D11RenderWindowCore;
-
-		D3D11RenderWindow(const RENDER_WINDOW_DESC& desc, UINT32 windowId, 
-			D3D11Device& device, IDXGIFactory* DXGIFactory);
-
-		/**
-		 * @copydoc	RenderWindowCore::getProperties
-		 */
-		const RenderTargetProperties& getPropertiesInternal() const override { return mProperties; }
-
-		/**
-		 * @copydoc	RenderWindow::syncProperties
-		 */
-		void syncProperties() override;
-
-		/**
-		 * @brief	Retrieves internal window handle.
-		 */
-		HWND getHWnd() const;
-
-	private:
-		D3D11Device& mDevice;
-		IDXGIFactory* mDXGIFactory;
-		D3D11RenderWindowProperties mProperties;
-	};
+#pragma once
+
+#include "BsD3D11Prerequisites.h"
+#include "BsRenderWindow.h"
+
+namespace BansheeEngine
+{
+	class D3D11RenderWindow;
+
+	/**
+	 * @brief	Contains various properties that describe a render window.
+	 */
+	class BS_D3D11_EXPORT D3D11RenderWindowProperties : public RenderWindowProperties
+	{
+	public:
+		D3D11RenderWindowProperties(const RENDER_WINDOW_DESC& desc);
+		virtual ~D3D11RenderWindowProperties() { }
+
+	private:
+		friend class D3D11RenderWindowCore;
+		friend class D3D11RenderWindow;
+	};
+
+	/**
+	 * @brief	Render window implementation for Windows and DirectX 11.
+	 *
+	 * @note	Core thread only.
+	 */
+	class BS_D3D11_EXPORT D3D11RenderWindowCore : public RenderWindowCore
+	{
+	public:
+		/**
+		 * @copydoc	RenderWindowCore::RenderWindowCore
+		 */
+		D3D11RenderWindowCore(const RENDER_WINDOW_DESC& desc, UINT32 windowId,
+			D3D11Device& device, IDXGIFactory* DXGIFactory);
+
+		~D3D11RenderWindowCore();
+
+		/**
+		 * @copydoc RenderWindowCore::move
+		 */
+		void move(INT32 left, INT32 top) override;
+
+		/**
+		 * @copydoc RenderWindowCore::resize
+		 */
+		void resize(UINT32 width, UINT32 height) override;
+
+		/**
+		 * @copydoc RenderWindowCore::setHidden
+		 */
+		void setHidden(bool hidden) override;
+
+		/**
+		 * @copydoc RenderWindowCore::setActive
+		 */
+		void setActive(bool state) override;
+
+		/**
+		 * @copydoc	RenderWindowCore::minimize
+		 */
+		void minimize() override;
+
+		/**
+		 * @copydoc	RenderWindowCore::maximize
+		 */
+		void maximize() override;
+
+		/**
+		 * @copydoc	RenderWindowCore::restore
+		 */
+		void restore() override;
+
+		/**
+		 * @copydoc RenderWindowCore::setFullscreen(UINT32, UINT32, float, UINT32)
+		 */
+		void setFullscreen(UINT32 width, UINT32 height, float refreshRate = 60.0f, UINT32 monitorIdx = 0) override;
+
+		/**
+		 * @copydoc RenderWindowCore::setFullscreen(const VideoMode&)
+		 */
+		void setFullscreen(const VideoMode& mode) override;
+
+		/**
+		* @copydoc RenderWindowCore::setWindowed
+		*/
+		void setWindowed(UINT32 width, UINT32 height) override;
+
+		/**
+		 * @copydoc RenderWindowCore::copyContentsToMemory
+		 */
+		void copyToMemory(PixelData &dst, FrameBuffer buffer);
+
+		/**
+		 * @copydoc RenderWindowCore::swapBuffers
+		 */
+		void swapBuffers() override;
+
+		/**
+		 * @copydoc RenderWindowCore::getCustomAttribute
+		 */
+		void getCustomAttribute(const String& name, void* pData) const override;
+
+		/**
+		 * @copydoc	RenderWindowCore::_windowMovedOrResized
+		 */
+		void _windowMovedOrResized() override;
+
+		/**
+		 * @brief	Returns presentation parameters used for creating the window swap chain.
+		 */
+		DXGI_SWAP_CHAIN_DESC* _getPresentationParameters() { return &mSwapChainDesc; }
+
+		/**
+		 * @brief	Returns internal window handle.
+		 */
+		HWND _getWindowHandle() const;
+
+	protected:
+		friend class D3D11RenderWindow;
+
+		/**
+		 * @copydoc	CoreObjectCore::initialize
+		 */
+		virtual void initialize() override;
+
+		/**
+		 * @brief	Creates internal resources dependent on window size.
+		 */
+		void createSizeDependedD3DResources();
+
+		/**
+		 * @brief	Destroys internal resources dependent on window size.
+		 */
+		void destroySizeDependedD3DResources();
+
+		/**
+		 * @brief	Queries the current DXGI device. Make sure to release the returned object when done with it.
+		 */
+		IDXGIDevice* queryDxgiDevice(); 
+
+		/**
+		 * @brief	Creates a swap chain for the window.
+		 */
+		void createSwapChain();
+
+		/**
+		 * @brief	Resizes all buffers attached to the swap chain to the specified size.
+		 */
+		void resizeSwapChainBuffers(UINT32 width, UINT32 height);
+
+		/**
+		 * @copydoc	RenderWindowCore::getProperties
+		 */
+		const RenderTargetProperties& getPropertiesInternal() const override { return mProperties; }
+
+		/**
+		 * @copydoc	RenderWindowCore::getSyncedProperties
+		 */
+		RenderWindowProperties& getSyncedProperties() override { return mSyncedProperties; }
+
+		/**
+		 * @copydoc	RenderWindowCore::syncProperties
+		 */
+		void syncProperties() override;
+
+	protected:
+		D3D11Device& mDevice;
+		IDXGIFactory* mDXGIFactory;
+		bool mSizing;
+		bool mIsChild;
+		bool mShowOnSwap;
+
+		DXGI_SAMPLE_DESC mMultisampleType;
+		UINT32 mRefreshRateNumerator;
+		UINT32 mRefreshRateDenominator;
+
+		ID3D11Texture2D* mBackBuffer;
+		ID3D11RenderTargetView*	mRenderTargetView;
+		TextureViewPtr mDepthStencilView;
+		SPtr<TextureCore> mDepthStencilBuffer;
+
+		IDXGISwapChain*	mSwapChain;
+		DXGI_SWAP_CHAIN_DESC mSwapChainDesc;
+		Win32Window* mWindow;
+
+		D3D11RenderWindowProperties mProperties;
+		D3D11RenderWindowProperties mSyncedProperties;
+	};
+
+	/**
+	 * @brief	Render window implementation for Windows and DirectX 11.
+	 *
+	 * @note	Sim thread only.
+	 */
+	class BS_D3D11_EXPORT D3D11RenderWindow : public RenderWindow
+	{
+	public:
+		~D3D11RenderWindow() { }
+
+		/**
+		 * @copydoc RenderWindow::screenToWindowPos
+		 */
+		void getCustomAttribute(const String& name, void* pData) const override;
+
+		/**
+		 * @copydoc RenderWindow::screenToWindowPos
+		 */
+		Vector2I screenToWindowPos(const Vector2I& screenPos) const override;
+
+		/**
+		 * @copydoc RenderWindow::windowToScreenPos
+		 */
+		Vector2I windowToScreenPos(const Vector2I& windowPos) const override;
+
+		/**
+		 * @copydoc	RenderWindow::getCore
+		 */
+		SPtr<D3D11RenderWindowCore> getCore() const;
+
+	protected:
+		friend class D3D11RenderWindowManager;
+		friend class D3D11RenderWindowCore;
+
+		D3D11RenderWindow(const RENDER_WINDOW_DESC& desc, UINT32 windowId, 
+			D3D11Device& device, IDXGIFactory* DXGIFactory);
+
+		/**
+		 * @copydoc	RenderWindowCore::getProperties
+		 */
+		const RenderTargetProperties& getPropertiesInternal() const override { return mProperties; }
+
+		/**
+		 * @copydoc	RenderWindow::syncProperties
+		 */
+		void syncProperties() override;
+
+		/**
+		 * @brief	Retrieves internal window handle.
+		 */
+		HWND getHWnd() const;
+
+	private:
+		D3D11Device& mDevice;
+		IDXGIFactory* mDXGIFactory;
+		D3D11RenderWindowProperties mProperties;
+	};
 }

+ 1 - 1
BansheeEditor/Source/BsEditorApplication.cpp

@@ -39,7 +39,7 @@ namespace BansheeEngine
 	RENDER_WINDOW_DESC createRenderWindowDesc()
 	{
 		RENDER_WINDOW_DESC renderWindowDesc;
-		renderWindowDesc.videoMode = VideoMode(1280, 720);
+		renderWindowDesc.videoMode = VideoMode(1920, 1080);
 		renderWindowDesc.title = "BansheeEditor";
 		renderWindowDesc.fullscreen = false;
 		renderWindowDesc.border = WindowBorder::None;

+ 4 - 0
BansheeEditor/Source/BsMainEditorWindow.cpp

@@ -9,6 +9,8 @@
 #include "BsGUIStatusBar.h"
 #include "BsEditorTestSuite.h"
 #include "BsTestOutput.h"
+#include "BsRenderWindow.h"
+#include "BsCoreThread.h"
 
 namespace BansheeEngine
 {
@@ -36,6 +38,8 @@ namespace BansheeEngine
 
 		TestSuitePtr testSuite = TestSuite::create<EditorTestSuite>();
 		testSuite->run(ExceptionTestOutput());
+
+		mRenderWindow->maximize(gCoreAccessor());
 	}
 
 	MainEditorWindow::~MainEditorWindow()