mirror of
https://github.com/beefytech/Beef.git
synced 2025-07-04 23:36:00 +02:00
Initial checkin
This commit is contained in:
parent
c74712dad9
commit
078564ac9e
3242 changed files with 1616395 additions and 0 deletions
117
BeefySysLib/platform/win/WinBFApp.h
Normal file
117
BeefySysLib/platform/win/WinBFApp.h
Normal file
|
@ -0,0 +1,117 @@
|
|||
#pragma once
|
||||
|
||||
#include "Common.h"
|
||||
#include "BFApp.h"
|
||||
#include "BFWindow.h"
|
||||
#include "util/Dictionary.h"
|
||||
|
||||
|
||||
NS_BF_BEGIN;
|
||||
|
||||
class RenderDevice;
|
||||
|
||||
typedef Dictionary<void*, HGLOBAL> PtrToHGlobalMap;
|
||||
typedef Dictionary<String, uint32> StringToUIntMap;
|
||||
|
||||
class WinBFMenu : public BFMenu
|
||||
{
|
||||
public:
|
||||
HMENU mMenu;
|
||||
uint32 mMenuId;
|
||||
static int mMenuCount;
|
||||
bool mIsPlaceholder;
|
||||
|
||||
public:
|
||||
WinBFMenu();
|
||||
};
|
||||
|
||||
typedef Dictionary<uint32, WinBFMenu*> WinMenuIDMap;
|
||||
typedef Dictionary<HMENU, WinBFMenu*> WinHMenuMap;
|
||||
|
||||
class WinBFWindow : public BFWindow
|
||||
{
|
||||
public:
|
||||
HWND mHWnd;
|
||||
bool mIsMouseInside;
|
||||
WinMenuIDMap mMenuIDMap;
|
||||
WinHMenuMap mHMenuMap;
|
||||
|
||||
int mModalCount;
|
||||
int mAlphaMaskWidth;
|
||||
int mAlphaMaskHeight;
|
||||
HBITMAP mAlphaMaskBitmap;
|
||||
HDC mAlphaMaskDC;
|
||||
uint32* mAlphaMaskPixels;
|
||||
bool mIsMenuKeyHandled;
|
||||
int mMinWidth;
|
||||
int mMinHeight;
|
||||
bool mMouseVisible;
|
||||
bool mHasFocus;
|
||||
bool mSoftHasFocus; // Mostly tracks mHasFocus except for when we get an explicit 'LostFocus' callback
|
||||
|
||||
bool mNeedsStateReset;
|
||||
|
||||
public:
|
||||
virtual LRESULT WindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
|
||||
static LRESULT CALLBACK WindowProcStub(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
|
||||
void RehupMouseOver(bool isMouseOver);
|
||||
|
||||
public:
|
||||
WinBFWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags);
|
||||
~WinBFWindow();
|
||||
|
||||
virtual void* GetUnderlying() override;
|
||||
virtual void Destroy() override;
|
||||
virtual bool TryClose() override;
|
||||
virtual void SetTitle(const char* title) override;
|
||||
virtual void SetForeground() override;
|
||||
virtual void LostFocus(BFWindow* newFocus) override;
|
||||
virtual void SetMinimumSize(int minWidth, int minHeight, bool clientSized) override;
|
||||
virtual void GetPosition(int* x, int* y, int* width, int* height, int* clientX, int* clientY, int* clientWidth, int* clientHeight) override;
|
||||
virtual void Resize(int x, int y, int width, int height) override;
|
||||
virtual void SetClientPosition(int x, int y) override;
|
||||
virtual void SetMouseVisible(bool isMouseVisible) override;
|
||||
virtual void SetAlpha(float alpha, uint32 destAlphaSrcMask, bool isMouseVisible) override;
|
||||
virtual void CaptureMouse() override;
|
||||
virtual bool IsMouseCaptured() override;
|
||||
|
||||
virtual BFMenu* AddMenuItem(BFMenu* parent, int insertIdx, const char* text, const char* hotKey, BFSysBitmap* bitmap, bool enabled, int checkState, bool radioCheck) override;
|
||||
virtual void ModifyMenuItem(BFMenu* item, const char* text, const char* hotKey, BFSysBitmap* bitmap, bool enabled, int checkState, bool radioCheck) override;
|
||||
virtual void RemoveMenuItem(BFMenu* item) override;
|
||||
virtual void ModalsRemoved() override;
|
||||
};
|
||||
|
||||
class WinBFApp : public BFApp
|
||||
{
|
||||
public:
|
||||
bool mInMsgProc;
|
||||
PtrToHGlobalMap mLockedHGlobalMap;
|
||||
StringToUIntMap mClipboardFormatMap;
|
||||
|
||||
protected:
|
||||
virtual void Draw() override;
|
||||
virtual void PhysSetCursor() override;
|
||||
|
||||
uint32 GetClipboardFormat(const StringImpl& format);
|
||||
|
||||
public:
|
||||
WinBFApp();
|
||||
virtual ~WinBFApp();
|
||||
|
||||
virtual void Init() override;
|
||||
virtual void Run() override;
|
||||
|
||||
virtual void GetDesktopResolution(int& width, int& height);
|
||||
virtual void GetWorkspaceRect(int& x, int& y, int& width, int& height);
|
||||
virtual BFWindow* CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) override;
|
||||
virtual DrawLayer* CreateDrawLayer(BFWindow* window);
|
||||
|
||||
virtual void* GetClipboardData(const StringImpl& format, int* size) override;
|
||||
virtual void ReleaseClipboardData(void* ptr) override;
|
||||
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
|
||||
virtual void RehupMouse() override;
|
||||
|
||||
virtual BFSysBitmap* LoadSysBitmap(const WCHAR* fileName) override;
|
||||
};
|
||||
|
||||
NS_BF_END;
|
Loading…
Add table
Add a link
Reference in a new issue