Jeremy Sawicki's fix for the multiple-conflicting-accelerators

problems: controls are now destroyed and recreated on a panel
switch. In addition, this patch also introduces a better means of
doing the group boxes.

[originally from svn r884]
This commit is contained in:
Simon Tatham 2001-01-22 17:17:26 +00:00
Родитель beeaa85fc5
Коммит 5c8e6a5295
3 изменённых файлов: 460 добавлений и 490 удалений

Просмотреть файл

@ -72,17 +72,16 @@ void bartitle(struct ctlpos *cp, char *name, int id) {
/*
* Begin a grouping box, with or without a group title.
*/
void beginbox(struct ctlpos *cp, char *name, int idbox, int idtext) {
if (name)
cp->ypos += STATICHEIGHT/2;
void beginbox(struct ctlpos *cp, char *name, int idbox) {
cp->boxystart = cp->ypos;
if (!name)
cp->boxystart -= STATICHEIGHT/2;
if (name)
cp->ypos += STATICHEIGHT - (STATICHEIGHT/2);
cp->ypos += STATICHEIGHT;
cp->ypos += GAPYBOX;
cp->width -= 2*GAPXBOX;
cp->xoff += GAPXBOX;
cp->boxid = idbox;
cp->boxtextid = idtext;
cp->boxtext = name;
}
@ -96,25 +95,8 @@ void endbox(struct ctlpos *cp) {
cp->ypos += GAPYBOX - GAPBETWEEN;
r.left = GAPBETWEEN; r.right = cp->width;
r.top = cp->boxystart; r.bottom = cp->ypos - cp->boxystart;
doctl(cp, r, "STATIC", WS_CHILD | WS_VISIBLE | SS_ETCHEDFRAME, 0,
"", cp->boxid);
if (cp->boxtext) {
SIZE s;
HDC hdc;
HFONT oldfont, dlgfont;
hdc = GetDC(cp->hwnd);
dlgfont = (HFONT)cp->font;
oldfont = SelectObject(hdc, dlgfont);
GetTextExtentPoint32(hdc, cp->boxtext, strlen(cp->boxtext), &s);
SelectObject(hdc, oldfont);
DeleteDC(hdc);
r.left = GAPXBOX + GAPBETWEEN;
r.right = (s.cx * 4 + cp->dlu4inpix-1) / cp->dlu4inpix;
r.top = cp->boxystart - STATICHEIGHT/2; r.bottom = STATICHEIGHT;
doctl(cp, r, "STATIC", WS_CHILD | WS_VISIBLE, 0,
cp->boxtext, cp->boxtextid);
}
doctl(cp, r, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 0,
cp->boxtext ? cp->boxtext : "", cp->boxid);
cp->ypos += GAPYBOX;
}

916
windlg.c

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -25,7 +25,7 @@ struct ctlpos {
int dlu4inpix;
int ypos, width;
int xoff;
int boxystart, boxid, boxtextid;
int boxystart, boxid;
char *boxtext;
};
@ -35,7 +35,7 @@ void doctl(struct ctlpos *cp, RECT r,
char *wclass, int wstyle, int exstyle,
char *wtext, int wid);
void bartitle(struct ctlpos *cp, char *name, int id);
void beginbox(struct ctlpos *cp, char *name, int idbox, int idtext);
void beginbox(struct ctlpos *cp, char *name, int idbox);
void endbox(struct ctlpos *cp);
void multiedit(struct ctlpos *cp, ...);
void radioline(struct ctlpos *cp,