static SDL_bool AddDialogButton(WIN_DialogData *dialog, int x, int y, int w, int h, const char *text, int id, SDL_bool isDefault) { DWORD style = WS_VISIBLE | WS_CHILD; if (isDefault) { style |= BS_DEFPUSHBUTTON; } else { style |= BS_PUSHBUTTON; } return AddDialogControl(dialog, 0x0080, style, 0, x, y, w, h, id, text); }
static SDL_bool AddDialogStatic(WIN_DialogData *dialog, int x, int y, int w, int h, const char *text) { DWORD style = WS_VISIBLE | WS_CHILD | SS_LEFT | SS_NOPREFIX | SS_EDITCONTROL; return AddDialogControl(dialog, 0x0082, style, 0, x, y, w, h, -1, text); }
VOID LoadDialogControls( IN PMIXER_WINDOW MixerWindow, LPRECT DialogOffset, LPVOID DlgResource, DWORD DialogIdMultiplier) { LPDLGTEMPLATE DialogHeader; PDLGITEMTEMPLATE DialogItem; LPWORD Offset; WORD FontSize; WCHAR FontName[100]; WORD Length, Index; HFONT Font; /* get dialog header */ DialogHeader = (LPDLGTEMPLATE)DlgResource; /* sanity check */ assert(DialogHeader->cdit); if (MixerWindow->Window) MixerWindow->Window = (HWND*)HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, MixerWindow->Window, (MixerWindow->WindowCount + DialogHeader->cdit) * sizeof(HWND)); else MixerWindow->Window = (HWND*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, DialogHeader->cdit * sizeof(HWND)); if (!MixerWindow->Window) { /* no memory */ return; } /* now walk past the dialog header */ Offset = (LPWORD)(DialogHeader + 1); /* FIXME: support menu */ assert(*Offset == 0); Offset++; /* FIXME: support classes */ assert(*Offset == 0); Offset++; /* FIXME: support titles */ assert(*Offset == 0); Offset++; /* get font size */ FontSize = *Offset; Offset++; /* calculate font length */ Length = wcslen((LPWSTR)Offset) + 1; assert(Length < (sizeof(FontName) / sizeof(WCHAR))); /* copy font */ wcscpy(FontName, (LPWSTR)Offset); Font = CreateFontW(FontSize+8, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, FontName); assert(Font); /* move offset after font name */ Offset += Length; /* offset is now at first dialog item control */ DialogItem = (PDLGITEMTEMPLATE)Offset; /* enumerate now all controls */ for(Index = 0; Index < DialogHeader->cdit; Index++) { /* add controls */ Offset = AddDialogControl(MixerWindow->hWnd, &MixerWindow->Window[MixerWindow->WindowCount], DialogOffset, DialogItem, DialogIdMultiplier, Font); /* sanity check */ assert(Offset); /* move dialog item to new offset */ DialogItem =(PDLGITEMTEMPLATE)Offset; /* increment window count */ MixerWindow->WindowCount++; } }