반응형
OnDtnDatetimechange 함수
: 도구 상자에 있는 ‘Date Time Picker’ 사용시에 제공되는 함수, 날짜가 바뀔 때마다 실행된다.
날짜를 바꿀 때, 설정일이 오늘 날짜보다 이전이면, 경고 메시지를 띄우기 위해 mfc 기본 함수를 사용하고자 하였으나 문제가 발생하였다.
<문제점>
1. 달력을 실행시켜서 테스트를 해보았는데, 경고 메시지 박스가 2번 뜬다.
2. 이전 달 혹은 다음 달로 이동시에 경고 메시지 박스가 여러 번 뜬다.
<시도>
void CYourDialog::OnDtnDatetimechangeDatePicker(NMHDR *pNMHDR, LRESULT *pResult)
{
static COleDateTime lastSelectedDate;
static bool processingEvent = false;
// 이벤트가 이미 처리 중인 경우, 무시
if (processingEvent) {
*pResult = 0;
return;
}
LPNMDATETIMECHANGE pDTChange = reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);
// DateTime Picker 컨트롤에서 선택한 날짜 가져오기
COleDateTime selectedDate;
CDateTimeCtrl* pDateTimeCtrl = (CDateTimeCtrl*)GetDlgItem(IDC_DATE_PICKER);
pDateTimeCtrl->GetTime(selectedDate);
// 마지막 선택된 날짜와 현재 선택된 날짜가 다른 경우에만 메시지 표시
if (selectedDate != lastSelectedDate)
{
processingEvent = true; // 이벤트 처리 중 플래그 설정
// DateTime Picker 컨트롤에서 날짜가 변경될 때 메시지 박스를 표시
MessageBox(_T("날짜가 변경되었습니다."), _T("알림"), MB_OK | MB_ICONINFORMATION);
// 마지막 선택된 날짜 업데이트
lastSelectedDate = selectedDate;
processingEvent = false; // 이벤트 처리 완료 후 플래그 해제
}
*pResult = 0;
}
장렬하게 실패…
대체 어떻게 해결해야 하는지 모르겠다.
이걸 쓰라고 제공하는 함수인건지…
다른 사람들은 어떻게 쓰는건지…
그냥 포기하고 다른 방법을 택했다…ㅠ
반응형
'WEB > MFC' 카테고리의 다른 글
[MFC] 탭 순서 (0) | 2023.09.17 |
---|