本文整理汇总了C++中WindowStyle::control_parent方法的典型用法代码示例。如果您正苦于以下问题:C++ WindowStyle::control_parent方法的具体用法?C++ WindowStyle::control_parent怎么用?C++ WindowStyle::control_parent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WindowStyle
的用法示例。
在下文中一共展示了WindowStyle::control_parent方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: xmlOpenResourceHelper
/**
* This function returns a WndForm created either from the ressources or
* from the XML file in XCSoarData(if found)
* @param LookUpTable The CallBackTable
* @param FileName The XML filename to search for in XCSoarData
* @param Parent The parent window (e.g. XCSoarInterface::main_window)
* @param resource The resource to look for
* @return The WndForm object
*/
WndForm *
LoadDialog(CallBackTableEntry *LookUpTable, SingleWindow &Parent,
const TCHAR* resource)
{
WndForm *form = NULL;
// Find XML file or resource and load XML data out of it
XMLNode node = xmlOpenResourceHelper(resource);
// TODO code: put in error checking here and get rid of exits in xmlParser
// If XML error occurred -> Error messagebox + cancel
if (node.isEmpty()) {
ShowXMLError();
return NULL;
}
// If the main XMLNode is of type "Form"
if (_tcsicmp(node.getName(), _T("Form")) != 0)
// Get the first child node of the type "Form"
// and save it as the dialog node
node = node.getChildNode(_T("Form"));
// If Node does not exists -> Error messagebox + cancel
if (node.isEmpty()) {
ShowXMLError();
return NULL;
}
// Determine the dialog style of the dialog
DialogStyle dialog_style = GetDialogStyle(node);
// Determine the dialog size
const TCHAR* Caption = GetCaption(node);
const RECT rc = Parent.get_client_rect();
ControlPosition pos = GetPosition(node, rc);
ControlSize size = GetSize(node, rc, pos);
InitScaleWidth(size, rc, dialog_style);
// Correct dialog size and position for dialog style
switch (dialog_style) {
case dsFullWidth:
pos.x = rc.left;
pos.y = rc.top;
size.cx = rc.right - rc.left; // stretch form to full width of screen
size.cy = rc.bottom - rc.top;
break;
case dsScaledCentered:
pos = SetPositionCentered(pos, rc, size);
break;
case dsScaled:
case dsFixed:
break;
}
// Create the dialog
WindowStyle style;
style.hide();
style.control_parent();
form = new WndForm(Parent, pos.x, pos.y, size.cx, size.cy, Caption, style);
// Set fore- and background colors
Color color;
if (StringToColor(node.getAttribute(_T("BackColor")), color))
form->SetBackColor(color);
// Load the children controls
LoadChildrenFromXML(*form, form->GetClientAreaWindow(), form->GetBackColor(),
LookUpTable, &node, dialog_style);
// If XML error occurred -> Error messagebox + cancel
if (XMLNode::GlobalError) {
ShowXMLError();
delete form;
return NULL;
}
// Return the created form
return form;
}
示例2: bstyle
/**
* Creates a control from the given XMLNode as a child of the given
* parent.
*
* @param form the WndForm object
* @param LookUpTable The parent CallBackTable
* @param node The XMLNode that represents the control
* @param eDialogStyle The parent's dialog style
*/
static Window *
LoadChild(WndForm &form, ContainerWindow &parent, Color background_color,
CallBackTableEntry *LookUpTable,
XMLNode node, const DialogStyle eDialogStyle,
int bottom_most=0)
{
Window *window = NULL;
// Determine name, coordinates, width, height
// and caption of the control
const TCHAR* Name = GetName(node);
const TCHAR* Caption = GetCaption(node);
RECT rc = parent.get_client_rect();
ControlPosition pos = GetPosition(node, rc, bottom_most);
if (!pos.no_scaling)
pos.x = ScaleWidth(pos.x, eDialogStyle);
ControlSize size = GetSize(node, rc, pos);
if (!size.no_scaling)
size.cx = ScaleWidth(size.cx, eDialogStyle);
WindowStyle style;
if (!StringToIntDflt(node.getAttribute(_T("Visible")), 1))
style.hide();
if (StringToIntDflt(node.getAttribute(_T("Border")), 0))
style.border();
bool advanced = _tcschr(Caption, _T('*')) != NULL;
// PropertyControl (WndProperty)
if (_tcscmp(node.getName(), _T("Edit")) == 0) {
WndProperty *W;
int CaptionWidth;
bool ReadOnly;
bool MultiLine;
// Determine the width of the caption field
CaptionWidth = StringToIntDflt(node.getAttribute(_T("CaptionWidth")), 0);
if (Layout::ScaleSupported())
CaptionWidth = Layout::Scale(CaptionWidth);
CaptionWidth = ScaleWidth(CaptionWidth, eDialogStyle);
// Determine whether the control is multiline or readonly
MultiLine = StringToIntDflt(node.getAttribute(_T("MultiLine")), 0);
ReadOnly = StringToIntDflt(node.getAttribute(_T("ReadOnly")), 0);
// Load the event callback properties
WndProperty::DataChangeCallback_t DataNotifyCallback =
(WndProperty::DataChangeCallback_t)
GetCallBack(LookUpTable, node, _T("OnDataNotify"));
WindowControl::OnHelpCallback_t OnHelpCallback =
(WindowControl::OnHelpCallback_t)
GetCallBack(LookUpTable, node, _T("OnHelp"));
// Create the Property Control
style.control_parent();
EditWindowStyle edit_style;
if (ReadOnly)
edit_style.read_only();
else
edit_style.tab_stop();
if (is_embedded() || Layout::scale_1024 < 2048)
/* sunken edge doesn't fit well on the tiny screen of an
embedded device */
edit_style.border();
else
edit_style.sunken_edge();
if (MultiLine) {
edit_style.multiline();
edit_style.vscroll();
}
window = W = new WndProperty(parent, Caption,
pos.x, pos.y, size.cx, size.cy,
CaptionWidth, background_color,
style, edit_style,
DataNotifyCallback);
// Set the fore- and background color
LoadColors(*W, node);
// Set the help function event callback
W->SetOnHelpCallback(OnHelpCallback);
//.........这里部分代码省略.........
示例3: WndButton
bool
dlgConfigInfoboxesShowModal(SingleWindow &parent,
const DialogLook &dialog_look,
InfoBoxLayout::Geometry geometry,
InfoBoxSettings::Panel &data_r,
bool allow_name_change)
{
current_preview = 0;
data = data_r;
PixelRect rc = parent.get_client_rect();
wf = new WndForm(parent, dialog_look, rc.left, rc.top,
rc.right - rc.left, rc.bottom - rc.top);
#ifdef _WIN32_WCE
if (is_altair())
wf->SetKeyDownNotify(OnKeyDown);
#endif
ContainerWindow &client_area = wf->GetClientAreaWindow();
rc = client_area.get_client_rect();
InflateRect(&rc, Layout::FastScale(-2), Layout::FastScale(-2));
info_box_layout = InfoBoxLayout::Calculate(rc, geometry);
WindowStyle preview_style;
preview_style.enable_double_clicks();
for (unsigned i = 0; i < info_box_layout.count; ++i) {
rc = info_box_layout.positions[i];
previews[i].set(client_area, rc.left, rc.top,
rc.right - rc.left, rc.bottom - rc.top,
preview_style);
}
rc = info_box_layout.remaining;
WindowStyle style;
style.control_parent();
EditWindowStyle edit_style;
edit_style.tab_stop();
if (is_embedded() || Layout::scale_1024 < 2048)
/* sunken edge doesn't fit well on the tiny screen of an
embedded device */
edit_style.border();
else
edit_style.sunken_edge();
const int x = rc.left;
const unsigned width = rc.right - rc.left - Layout::FastScale(2);
const unsigned height = Layout::Scale(22);
const unsigned caption_width = Layout::Scale(60);
int y = rc.top;
ButtonWindowStyle button_style;
button_style.tab_stop();
buttonPanelName =
new WndButton(client_area, dialog_look, _T(""),
x, y, width, height, button_style, OnNameAccess);
buttonPanelName->set_enabled(allow_name_change);
UpdatePanelName();
y += height;
edit_select = new WndProperty(client_area, dialog_look, _("InfoBox"),
x, y, width, height, caption_width,
style, edit_style,
NULL);
DataFieldEnum *dfe = new DataFieldEnum(OnSelectAccess);
for (unsigned i = 0; i < info_box_layout.count; ++i) {
TCHAR label[32];
_stprintf(label, _T("%u"), i + 1);
dfe->addEnumText(label, i);
}
edit_select->SetDataField(dfe);
y += height;
edit_content = new WndProperty(client_area, dialog_look, _("Content"),
x, y, width, height, caption_width,
style, edit_style,
NULL);
dfe = new DataFieldEnum(OnContentAccess);
for (unsigned i = 0; i < InfoBoxFactory::NUM_TYPES; ++i) {
const TCHAR *name = InfoBoxFactory::GetName(i);
if (name != NULL)
dfe->addEnumText(gettext(name), i);
}
dfe->Sort(0);
edit_content->SetDataField(dfe);
edit_content->SetOnHelpCallback(OnContentHelp);
//.........这里部分代码省略.........