forked from mhammond/pywin32
-
Notifications
You must be signed in to change notification settings - Fork 0
/
win32gdi.cpp
49 lines (39 loc) · 1.56 KB
/
win32gdi.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
python GDI class
Access to a CGdiObject.
Note that this source file contains embedded documentation.
This documentation consists of marked up text inside the
C comments, and is prefixed with an '@' symbol. The source
files are processed by a tool called "autoduck" which
generates Windows .hlp files.
@doc
*/
#include "stdafx.h"
#include "win32gdi.h"
inline BOOL IsGdiHandleValid(HANDLE hobject) { return hobject == NULL || ::GetObjectType(hobject) != 0; }
bool PyCGdiObject::CheckCppObject(ui_type *ui_type_check) const
{
// if (!ui_assoc_CObject::CheckCppObject(ui_type_check))
// return false;
CGdiObject *pGDI = (CGdiObject *)assoc;
ASSERT_VALID(pGDI);
if (!IsGdiHandleValid(pGDI->m_hObject))
RETURN_ERR("The associated object is invalid");
return true;
}
// utility functions.
// according to MFC2 sources, these pointers are permanent.
CGdiObject *PyCGdiObject::GetGdiObject(PyObject *self, DWORD gtype)
{
CGdiObject *pGdi = (CGdiObject *)GetGoodCppObject(self, &type);
if (gtype && pGdi->m_hObject && ::GetObjectType(pGdi->m_hObject) != gtype)
RETURN_ERR("The associated GDI object is not of the required type");
return pGdi;
}
PyCGdiObject::~PyCGdiObject() {}
// @object PyCGdiObject|A class which encapsulates an MFC CGdiObject.
static struct PyMethodDef ui_gdi_methods[] = {
{NULL, NULL} // sentinel
};
ui_type_CObject PyCGdiObject::type("gdi object", &ui_assoc_CObject::type, RUNTIME_CLASS(CGdiObject),
sizeof(PyCGdiObject), PYOBJ_OFFSET(PyCGdiObject), ui_gdi_methods, NULL);