/*
Copyright (C) 2010, Heikki Salo
All rights reserved.
Distributed under the BSD license:
http://www.opensource.org/licenses/bsd-license.php
*/
#ifndef DP_WINDOW_HPP
#define DP_WINDOW_HPP
#include "stdafx.h"
class DPDevice;
class DPMedia;
class DPWindow : boost::noncopyable {
public:
~DPWindow();
DPWindow(DWORD, ULONG_PTR);
void setStyle(DWORD);
void setRect(python::object&, bool);
void close();
void show(UINT);
void showCursor(bool);
void clipCursor(bool);
python::list getMessages();
python::object getMonitorRect();
python::object getRect();
python::object screenToClient(python::object&);
void detach() { detached = true; }
void postMessage(UINT, WPARAM, LPARAM);
python::object getCallback() { return pyCallback; }
python::object setCallback(python::object);
void setTitle(const char*);
void setCursor(const char*);
void setCursorI(UINT);
void setIcon(const char*);
ULONG_PTR getHandleInt() { return (ULONG_PTR)windowHandle; }
HWND getHandle() { return windowHandle; }
void setDevice(DPDevice*);
void setMedia(DPMedia*);
DPMedia* getMedia() { return associatedMedia;}
bool isDPWindow() { return !overrideHandle; }
private:
HWND windowHandle;
HCURSOR cursorHandle;
DPMedia* associatedMedia;
DPDevice* associatedDevice;
python::object pyCallback;
python::list messages;
bool inError;
bool cursorVisible;
bool cursorClipped;
bool mouseHover;
bool overrideHandle;
bool detached;
friend LRESULT DPWndProc(DPWindow*, HWND, UINT, WPARAM, LPARAM);
friend LRESULT CALLBACK DPOuterProc(HWND, UINT, WPARAM, LPARAM);
};
#endif