void Elapsed_Edit_OnSetFocus (ElapsedInfo *pei, HWND hEdit) { pei->fCanCallBack --; RECT rSpinner; GetRectInParent (pei->hElapsed, &rSpinner); rSpinner.left = rSpinner.right; rSpinner.right = rSpinner.left + GetSystemMetrics (SM_CXVSCROLL); rSpinner.bottom -= 2; // just like Win95 does DWORD dwMin; DWORD dwPos; DWORD dwMax; Elapsed_Edit_GetSpinnerRange (pei, hEdit, &dwMin, &dwPos, &dwMax); CreateSpinner (hEdit, 10, FALSE, dwMin, dwPos, dwMax, &rSpinner); if (pei->hSpinner) DestroyWindow (pei->hSpinner); if (hEdit == pei->hHours) SP_SetFormat (hEdit, TEXT("%lu")); else SP_SetFormat (hEdit, TEXT("%02lu")); pei->hSpinner = SP_GetSpinner (hEdit); pei->hSpinnerBuddy = hEdit; SendMessage (hEdit, EM_SETSEL, (WPARAM)0, (LPARAM)-1); // select all pei->fCanCallBack ++; }
void Time_Edit_OnSetFocus (TimeInfo *pti, HWND hEdit) { DWORD dwMin; DWORD dwNow; DWORD dwMax; pti->fCanCallBack --; if (hEdit == pti->hHours) { dwMin = (pti->f24Hour) ? 0 : 1; dwNow = (pti->f24Hour) ? pti->timeNow.wHour : (pti->timeNow.wHour % 12); dwMax = (pti->f24Hour) ? 24 : 12; if (!pti->f24Hour && !dwNow) dwNow = 12; } else if (hEdit == pti->hMinutes) { dwMin = 0; dwNow = pti->timeNow.wMinute; dwMax = 59; } else // (hEdit == pti->hAMPM) { dwMin = 0; dwNow = (pti->timeNow.wHour >= 12) ? 1 : 0; dwMax = 1; } if (pti->hSpinnerBuddy != hEdit) { SP_SetBuddy (pti->hSpinnerBuddy, hEdit, FALSE); pti->hSpinnerBuddy = hEdit; } SP_SetRange (hEdit, dwMin, dwMax); SP_SetPos (hEdit, dwNow); if ((hEdit == pti->hHours) && (!pti->f0Hours)) SP_SetFormat (hEdit, TEXT("%lu")); else if ((hEdit == pti->hHours) || (hEdit == pti->hMinutes)) SP_SetFormat (hEdit, TEXT("%02lu")); if ((hEdit == pti->hHours) || (hEdit == pti->hMinutes)) SendMessage (hEdit, EM_SETSEL, (WPARAM)0, (LPARAM)-1); // select all pti->fCanCallBack ++; }