2016-07-26 2 views
0

현재 C++ 빌더 5로 작성된 레거시 프로그램을 작성 중입니다.TDateTimePicker에서 "오늘"버튼을 숨기는 방법은 무엇입니까?

TDateTimePicker 컨트롤이있는 영역에서 작업하고 있습니다. dtp 자체는 올바르게 작동하지만 현지화 문제로 인해 현재 작업하고 있습니다. 사용자가 클릭하여 오늘 날짜를 자동으로 선택할 수있는 선택 도구 하단의 "오늘"버튼을 제거하려고합니다.

대신이 형식의 날짜 문자열을 맨 아래에서 제거하여 "오늘 MM/DD/YYYY"가 아닌 "오늘"이라고 말합니다.

오늘의 텍스트는 다른 언어로 포맷 할 수 있지만 C++에는 사용할 수없는 몇 가지 솔루션을 발견했습니다. 높이 및 텍스트와 같은 내장 함수 중 일부를 사용하려했지만 실패했습니다. 나는 보통이 코드에서 작동하는 사람이 아니므로, 뭔가 간단하게 누락 될 수 있습니다.

편집 :이 프로젝트에서는 VM에서 Windows XP를 사용하고 있습니다.

답변

1

"오늘"텍스트를 제거하려면 DTP의 하위 달 캘린더에서 MCS_NOTODAY 창 스타일을 활성화해야합니다. 그 스타일은 당신이 MCS_NOTODAY 스타일을 가능하게 SetWindowLong/Ptr(GWL_STYLE)를 사용하여 다음 달의 달력의 HWND를 얻을 수 DateTime_GetMonthCal()을 사용할 수 있으며, TDateTimePicker::OnDropDown 이벤트에서 인터넷 익스플로러 3.

부터 사용할 수있다.

#include <commctrl.h> 

void __fastcall TMyForm::DateTimePicker1DropDown(TObject *Sender) 
{ 
    HWND hCalendar = DateTime_GetMonthCal(DateTimePicker1->Handle); 
    LONG_PTR style = GetWindowLongPtr(hCalendar, GWL_STYLE); 
    SetWindowLongPtr(hCalendar, GWL_STYLE, style | MCS_NOTODAY); 
} 

비스타에 나중에, 당신은 대안 MCS_NOTODAY 스타일을 가능하게 DateTime_SetMonthCalStyle()를 사용할 수 있습니다.

DWORD style = DateTime_GetMonthCalStyle(DateTimePicker1->Handle); 
DateTime_SetMonthCalStyle(DateTimePicker1->Handle, style | MCS_NOTODAY); 
+0

XP에서 작동합니까? 링크는 Vista/2008의 최소 요구 사항을 나열합니다. 예제를 제공해 줄 수 있습니까? – wgallon

관련 문제