forked from mhammond/pywin32
-
Notifications
You must be signed in to change notification settings - Fork 0
/
win32dlgbar.cpp
81 lines (72 loc) · 2.88 KB
/
win32dlgbar.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
DialogBar class for Pythonwin
Created April 1998 by Mark Hammond.
*/
// @doc
#include "stdafx.h"
#include "win32win.h"
#include "win32toolbar.h"
#include "win32dlgbar.h"
CDialogBar *PyCDialogBar::GetDialogBar(PyObject *self) { return (CDialogBar *)GetGoodCppObject(self, &type); }
/////////////////////////////////////////////////////////////////////
//
// Dialog Bar object
//
//////////////////////////////////////////////////////////////////////
// @pymethod <o PyCDialogBar>|win32ui|CreateDialogBar|Creates a <o PyCDialogBar> object.
PyObject *PyCDialogBar::create(PyObject *self, PyObject *args)
{
CHECK_NO_ARGS2(args, "Create");
GUI_BGN_SAVE;
CDialogBar *db = new CDialogBar();
GUI_END_SAVE;
if (db == NULL) {
PyErr_SetString(PyExc_MemoryError, "Allocating CDialogBar object");
return NULL;
}
db->m_bAutoDelete = TRUE; // let MFC handle deletion
return ui_assoc_object::make(PyCDialogBar::type, db)->GetGoodRet();
}
// @pymethod |PyCDialogBar|CreateWindow|Creates the window for the <o PyCDialogBar> object.
static PyObject *PyCDialogBar_CreateWindow(PyObject *self, PyObject *args)
{
TCHAR *szTemplate;
UINT style, id;
PyObject *obParent, *obTemplate;
// @pyparm <o PyCWnd>|parent||The parent window
// @pyparm <o PyResourceId>|template||Template name or integer resource id
// @pyparm int|style||The style for the window
// @pyparm int|id||The ID of the window
if (!PyArg_ParseTuple(args, "OOii", &obParent, &obTemplate, &style, &id))
return NULL;
CDialogBar *pDialog = PyCDialogBar::GetDialogBar(self);
if (pDialog == NULL)
return NULL;
CWnd *pParent = NULL;
if (obParent != Py_None) {
pParent = PyCWnd::GetPythonGenericWnd(obParent, &PyCWnd::type);
if (pParent == NULL)
RETURN_TYPE_ERR("The parent window is not a valid PyCWnd");
}
if (!PyWinObject_AsResourceId(obTemplate, &szTemplate, FALSE))
return NULL;
BOOL rc;
GUI_BGN_SAVE;
if (IS_INTRESOURCE(szTemplate))
rc = pDialog->Create(pParent, MAKEINTRESOURCE(szTemplate), style, id);
else
rc = pDialog->Create(pParent, szTemplate, style, id);
GUI_END_SAVE;
PyWinObject_FreeResourceId(szTemplate);
if (!rc)
RETURN_ERR("CDialogBar::Create failed");
RETURN_NONE;
}
// @object PyCDialogBar|A class which encapsulates an MFC <o CDialogBar>. Derived from a <o PyCControlBar> object.
static struct PyMethodDef PyCDialogBar_methods[] = {
{"CreateWindow", PyCDialogBar_CreateWindow,
1}, // @pymeth CreateWindow|Creates the window for the <o PyCDialogBar> object.
{NULL, NULL}};
ui_type_CObject PyCDialogBar::type("PyCDialogBar", &PyCControlBar::type, RUNTIME_CLASS(CDialogBar),
sizeof(PyCDialogBar), PYOBJ_OFFSET(PyCDialogBar), PyCDialogBar_methods,
GET_PY_CTOR(PyCDialogBar));