본문 바로가기
WEB/MFC

[MFC] OnDtnDatetimechange 함수 - Help

by DeveloperCat 2023. 9. 9.
반응형
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