버튼없이 TaskDialog를 표시 할 수 있습니까? 진행률 표시 줄 (메시지 포함)을 표시하고 Timer 이벤트에서 처리가 완료되면 TaskDialog 창을 닫을 수 있어야합니다. 지금은 비활성화 된 버튼을 표시 한 다음 ButtonClick을 호출하여 창을 닫을 수 있지만 버튼을 표시하지 않고 CloseDialog 메서드를 사용하는 것이 이상적입니다.버튼이없는 TaskDialog
감사합니다.
버튼없이 TaskDialog를 표시 할 수 있습니까? 진행률 표시 줄 (메시지 포함)을 표시하고 Timer 이벤트에서 처리가 완료되면 TaskDialog 창을 닫을 수 있어야합니다. 지금은 비활성화 된 버튼을 표시 한 다음 ButtonClick을 호출하여 창을 닫을 수 있지만 버튼을 표시하지 않고 CloseDialog 메서드를 사용하는 것이 이상적입니다.버튼이없는 TaskDialog
감사합니다.
TaskDialog()
및 TaskDialogIndirect()
모두 버튼을 지정하지 않으면 기본 버튼이 강제로 사용되지만 어떤 버튼이 사용되는지 제어 할 수 있으므로 표시하는 모든 작업을 취소하기 위해 대화 상자에 취소 버튼을 배치합니다 의 상태. 진행중인 작업을 중지하지 않고 사용자가 더 이상 진행률을 보지 않으려는 경우 숨기기 단추입니다.
진행률 표시 줄 기능을 활성화하려면 TaskDialogIndirect()
을 사용해야합니다. 또한 해당 콜백 기능을 사용하여 대화 상자의 HWND
을 얻을 수 있으므로 필요할 때 프로그래밍 방식으로 닫을 수 있습니다.
그렇지 않으면 TaskDialog API를 사용하지 마십시오. 자신 만의 UI로 창을 직접 만들면 원하는대로 할 수 있습니다.
는 CTaskDialog.cpp에 CTaskDialog
class CTaskDlg : public CTaskDialog
{
in CTaskDlg.h declare:
public:
void CloseTaskDlg(void);
protected:
HWND m_TaskDlgHwnd;
virtual HRESULT OnInit();
};
에서 자신의 클래스를 파생 :
void CTaskDlg::CloseTaskDlg(void)
{
::SendMessage(m_TaskDlgHwnd, TDM_CLICK_BUTTON, static_cast<WPARAM>(TDCBF_OK_BUTTON), 0);
}
HRESULT CTaskDlg::OnInit()
{
m_TaskDlgHwnd = ::GetActiveWindow();
return S_OK;
}
CTaskDlg dlg;
dlg.CloseTaskDlg();