本文整理汇总了C++中Icon::GetStdSize方法的典型用法代码示例。如果您正苦于以下问题:C++ Icon::GetStdSize方法的具体用法?C++ Icon::GetStdSize怎么用?C++ Icon::GetStdSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Icon
的用法示例。
在下文中一共展示了Icon::GetStdSize方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Prompt
int Prompt(const char *title, const Image& iconbmp, const char *qtf, Callback HelpDlg, bool okcancel,
const char *button1, const char *button2, const char *button3, const char *help,
int cx)
{
int fcy = Draw::GetStdFontCy();
PromptDlgWnd__ dlg;
RichTextCtrl qtfctrl;
Icon icon;
//qtfctrl.WhenLink = WhenLink;
icon.SetImage(iconbmp);
Button b1, b2, b3, bh;
promptTopic = help;
qtfctrl.SetQTF(String("[G1 ") + qtf, GetRichTextStdScreenZoom());
int bcy = 2 * fcy;
int bcx = 6 * fcy;
Size bsz = icon.GetStdSize();
if(cx == 0) {
cx = qtfctrl.GetWidth();
if(!cx)
cx = 350;
cx += 2 * fcy;
if(bsz.cx)
cx += bsz.cx + fcy;
}
int nbtn = !!button1 + !!button2 + !!button3 + !!help;
cx = min(550, max(nbtn * bcx + (1 + nbtn) * fcy, cx));
int qcx = cx - 2 * fcy;
if(bsz.cx)
qcx -= bsz.cx + fcy;
int ccy = qtfctrl.GetHeight(qcx);
int qcy = min(400, ccy);
if(qcy <= ccy) {
qcx += ScrollBarSize() + fcy;
cx += ScrollBarSize();
}
int mcy = max(qcy, bsz.cy);
int cy = mcy + 4 * fcy;
dlg.SetRect(Size(cx, cy));
fcy /= 2;
dlg << icon.TopPos(fcy + (mcy - bsz.cy) / 2, bsz.cy).LeftPos(fcy, bsz.cx);
dlg << qtfctrl.TopPos(fcy + (mcy - qcy) / 2, qcy).LeftPos(2 * fcy + bsz.cx, qcx);
if(okcancel)
b1.Ok();
b1.SetLabel(button1);
b1.WhenAction = dlg.Breaker(1);
b2.WhenAction = dlg.Breaker(0);
b3.WhenAction = dlg.Breaker(-1);
bh.WhenAction = HelpDlg;
int nextx = 4;
if(help) {
bh.SetLabel(t_("?"));
dlg << bh.RightPosZ(nextx, 80).BottomPosZ(4, 22);
nextx += 84;
}
if(button2) {
b2.SetLabel(button2);
if(button3) {
dlg << b3.SetLabel(button3).RightPosZ(nextx, 80).BottomPosZ(4, 22);
nextx += 84;
dlg << b2.RightPosZ(nextx, 80).BottomPosZ(4, 22);
nextx += 84;
if(okcancel)
b3.Cancel();
}
else {
dlg << b2.RightPosZ(nextx, 80).BottomPosZ(4, 22);
nextx += 84;
if(okcancel)
b2.Cancel();
}
dlg << b1.RightPosZ(nextx, 80).BottomPosZ(4, 22);
nextx += 84;
}
else {
dlg << b1.RightPosZ(nextx, 80).BottomPosZ(4, 22);
nextx += 84;
}
dlg.WhenClose = dlg.Breaker(button3 ? -1 : 0);
dlg.Open();
dlg.Title(title);
return dlg.RunAppModal();
}
示例2: Prompt
int Prompt(Callback1<const String&> WhenLink,
const char *title, const Image& iconbmp, const char *qtf, bool okcancel,
const char *button1, const char *button2, const char *button3,
int cx,
Image im1, Image im2, Image im3)
{
int fcy = Draw::GetStdFontCy();
PromptDlgWnd__ dlg;
RichTextCtrl qtfctrl;
Icon icon;
qtfctrl.WhenLink = WhenLink;
icon.SetImage(iconbmp);
Button b1, b2, b3;
qtfctrl.SetQTF(String("[G1 ") + qtf, GetRichTextStdScreenZoom());
int bcy = Ctrl::VertLayoutZoom(24);
int bcx = Ctrl::HorzLayoutZoom(72);
if(button1)
bcx = max(2 * fcy + GetTextSize(button1, Draw::GetStdFont()).cx, bcx);
if(button2)
bcx = max(2 * fcy + GetTextSize(button2, Draw::GetStdFont()).cx, bcx);
if(button3)
bcx = max(2 * fcy + GetTextSize(button3, Draw::GetStdFont()).cx, bcx);
Size bsz = icon.GetStdSize();
if(cx == 0) {
cx = qtfctrl.GetWidth();
if(!cx)
cx = 350;
cx += 2 * fcy;
if(bsz.cx)
cx += bsz.cx + fcy;
}
int nbtn = !!button1 + !!button2 + !!button3;
dlg.esc = okcancel && nbtn == 1;
cx = min(550, max(nbtn * bcx + (1 + nbtn) * fcy, cx));
int qcx = cx - 2 * fcy;
if(bsz.cx)
qcx -= bsz.cx + fcy;
int ccy = qtfctrl.GetHeight(qcx);
int qcy = min(400, ccy);
if(qcy <= ccy) {
qcx += ScrollBarSize() + fcy;
cx += ScrollBarSize() + fcy;
}
int mcy = max(qcy, bsz.cy);
int cy = mcy + 48 * fcy / 10;
dlg.SetRect(Size(cx, cy));
dlg << icon.TopPos(fcy, bsz.cy).LeftPos(fcy, bsz.cx);
dlg << qtfctrl.TopPos(fcy + (mcy - qcy) / 2, qcy).RightPos(fcy, qcx);
if(okcancel) {
b1.Ok();
if(nbtn == 2)
b2.Cancel();
if(nbtn == 3)
b3.Cancel();
}
b1.WhenAction = dlg.Breaker(1);
b2.WhenAction = dlg.Breaker(0);
b3.WhenAction = dlg.Breaker(-1);
dlg.b = &b1;
int bx = bcx;
int gap = fcy / 2;
fcy = 8 * fcy / 10;
if(button2)
bx += gap + bcx;
if(button3)
bx += gap + bcx;
bx = (cx - bx) / 2;
if(SwapOKCancel()) {
sAdd(dlg, fcy, bcy, bx, bcx, gap, b2, button2, im2);
sAdd(dlg, fcy, bcy, bx, bcx, gap, b3, button3, im3);
sAdd(dlg, fcy, bcy, bx, bcx, gap, b1, button1, im1);
}
else {
sAdd(dlg, fcy, bcy, bx, bcx, gap, b1, button1, im1);
sAdd(dlg, fcy, bcy, bx, bcx, gap, b2, button2, im2);
sAdd(dlg, fcy, bcy, bx, bcx, gap, b3, button3, im3);
}
dlg.WhenClose = dlg.Breaker(button3 ? -1 : 0);
dlg.Title(title);
int result;
Ctrl::Call(callback2(sExecutePrompt, &dlg, &result));
return result;
}