| 175 | } |
| 176 | |
| 177 | void settingsReadback(HWND hwnd) |
| 178 | { |
| 179 | settings_item_t *item; |
| 180 | |
| 181 | for(item = &settings_cur[0]; item->menu != 0; item++) |
| 182 | { |
| 183 | DWORD value; |
| 184 | HWND hItem = GetDlgItem(hwnd, item->menu); |
| 185 | if(hItem) |
| 186 | { |
| 187 | switch(item->type) |
| 188 | { |
| 189 | case T_RADIO: |
| 190 | value = IsDlgButtonChecked(hwnd, item->menu) ? 1 : 0; |
| 191 | if(value > 0) |
| 192 | { |
| 193 | settingClearGroup(item->group); |
| 194 | item->dvalue = value; |
| 195 | } |
| 196 | break; |
| 197 | case T_CHECKBOX: |
| 198 | value = IsDlgButtonChecked(hwnd, item->menu) ? 1 : 0; |
| 199 | item->dvalue = value; |
| 200 | break; |
| 201 | case T_INPUT_NUM: |
| 202 | { |
| 203 | char inp[64]; |
| 204 | if(GetWindowTextA(hItem, inp, 64) != 0) |
| 205 | { |
| 206 | item->dvalue = strtol(inp, NULL, 0); |
| 207 | } |
| 208 | break; |
| 209 | } |
| 210 | case T_INPUT_STR: |
| 211 | { |
| 212 | if(item->svalue_freeptr != NULL) |
| 213 | { |
| 214 | free(item->svalue_freeptr); |
| 215 | item->svalue_freeptr = NULL; |
| 216 | item->svalue = NULL; |
| 217 | } |
| 218 | |
| 219 | size_t s = GetWindowTextLengthA(hItem) + 1; |
| 220 | item->svalue_freeptr = malloc(s); |
| 221 | if(item->svalue_freeptr) |
| 222 | { |
| 223 | GetWindowTextA(hItem, item->svalue_freeptr, s); |
| 224 | item->svalue = item->svalue_freeptr; |
| 225 | } |
| 226 | break; |
| 227 | } |
| 228 | case T_DROPDOWN: |
| 229 | item->dvalue = SendMessage(hItem, (UINT)CB_GETCURSEL, (WPARAM)0, (LPARAM)0); |
| 230 | break; |
| 231 | } |
| 232 | } |
| 233 | } |
| 234 | } |
no test coverage detected