+void dlg_label_change(union control *ctrl, void *dlg, char const *text)
+{
+ struct dlgparam *dp = (struct dlgparam *)dlg;
+ struct winctrl *c = dlg_findbyctrl(dp, ctrl);
+ char *escaped = NULL;
+ int id = -1;
+
+ assert(c);
+ switch (c->ctrl->generic.type) {
+ case CTRL_EDITBOX:
+ escaped = shortcut_escape(text, c->ctrl->editbox.shortcut);
+ id = c->base_id;
+ break;
+ case CTRL_RADIO:
+ escaped = shortcut_escape(text, c->ctrl->radio.shortcut);
+ id = c->base_id;
+ break;
+ case CTRL_CHECKBOX:
+ escaped = shortcut_escape(text, ctrl->checkbox.shortcut);
+ id = c->base_id;
+ break;
+ case CTRL_BUTTON:
+ escaped = shortcut_escape(text, ctrl->button.shortcut);
+ id = c->base_id;
+ break;
+ case CTRL_LISTBOX:
+ escaped = shortcut_escape(text, ctrl->listbox.shortcut);
+ id = c->base_id;
+ break;
+ case CTRL_FILESELECT:
+ escaped = shortcut_escape(text, ctrl->fileselect.shortcut);
+ id = c->base_id;
+ break;
+ case CTRL_FONTSELECT:
+ escaped = shortcut_escape(text, ctrl->fontselect.shortcut);
+ id = c->base_id;
+ break;
+ default:
+ assert(!"Can't happen");
+ break;
+ }
+ if (escaped) {
+ SetDlgItemText(dp->hwnd, id, escaped);
+ sfree(escaped);
+ }
+}
+