하위 대화 상자 생성 및 소멸

伊谢尔伦
풀어 주다: 2016-11-21 11:44:49
원래의
1531명이 탐색했습니다.

1. 표시 대화 상자

1.1 모달 대화 상자 표시:

CDialogDemo dlg;
dlg.DoModal();
로그인 후 복사

1.2 모달리스 대화 상자 표시:

CDialogDemo *dlg=new CDialogDemo(this); 
dlg->Create(IDD_GENERAL_CONTROL); 
dlg->ShowWindow(SW_SHOW);
로그인 후 복사

2. 🎜>

1.CDialog::OnOK(); //확인 버튼을 눌렀을 때 CDialog::OnCancel(); //취소 버튼을 눌렀을 때

2.CDialog::DestoryWindow(); >

3.CDialog::EndDialog( IDD );

3. 모달 대화 상자 클래스에서 자체 대화 상자를 닫습니다.

모달 대화 상자에서 닫을 수 있습니다. 클래스는 PostMessage(WM_CLOSE)를 사용하여 자체 대화 상자를 닫습니다. MessageBox 대화 상자를 닫으면 모달 대화 상자가 닫힙니다.


참조 코드는 다음과 같습니다.


4. 여러 관련 중요 기능에 대한 자세한 설명
<span style="font-size:18px;">BOOL CImportDataPromptDialog::OnInitDialog()
{
     CDialog::OnInitDialog();
 
    // TODO:  Add extra initialization here
     HANDLE hThread = StartImportDataThread();
     if (!hThread)
     {
         LOG("启动导入数据线程失败")
     }
 
     return TRUE;  // return TRUE unless you set the focus to a control
     // EXCEPTION: OCX Property Pages should return FALSE
}
 
DWORD WINAPI CImportDataPromptDialog::ImportDataThread(LPVOID Param)
 {
    CImportDataPromptDialog* importDlg = (CImportDataPromptDialog*)Param;
 
    if (CImportLog::ExtractionXMLData(importDlg->m_sXmlFilePath, importDlg->m_sDBPath))
     {
        importDlg->MessageBox("导入数据成功","平台", MB_ICONINFORMATION);
         importDlg->PostMessage(WM_CLOSE);
     }
    else
     {
         importDlg->MessageBox("导入数据失败","平台", MB_ICONEXCLAMATION);
         importDlg->PostMessage(WM_CLOSE);
     }
    
     return 0;
 }
 
 HANDLE CImportDataPromptDialog::StartImportDataThread()
 {
     LOG("启动导入数据线程");
     CWinThread* hThread = AfxBeginThread((AFX_THREADPROC)CImportDataPromptDialog::ImportDataThread,(LPVOID)this);
 
    return (hThread->m_hThread);
 }</span>
로그인 후 복사

4.1 CloseWindow

함수 function: 이 함수는 지정된 창을 최소화하지만 창을 파괴하지는 않습니다.

함수 프로토타입: BOOL CloseWindow(HWND hWnd);


매개변수: hWnd: 최소화할 창의 핸들.

반환 값: 함수가 성공하면 반환 값은 0이 아닙니다. 함수가 실패하면 반환 값은 0입니다. 더 많은 오류 정보를 얻으려면 GetLastError 함수를 호출하세요.

참고: 창 크기가 아이콘으로 최소화되어 화면의 아이콘 영역으로 이동되었습니다. 시스템은 창을 표시하지 않고 창의 아이콘을 표시하며, 아이콘 아래에 창 제목을 표시합니다. 응용 프로그램은 창을 삭제하려면 DestroyWindow 함수를 사용해야 합니다.

4.2 DestroyWindow 

기능: 지정된 창을 파괴합니다. 이 함수는 WM_DESTROY 메시지와 WM_NCDESTROY 메시지를 전송하여 창을 무효화하고 키보드 포커스를 제거합니다. 이 함수는 또한 창 메뉴를 파괴하고, 스레드의 메시지 대기열을 지우고, 창 프로세스와 관련된 타이머를 파괴하고, 창의 클립보드 소유권을 해제하고, 클립보드 뷰어의 보기 체인을 중단합니다.

함수 프로토타입: BOOL DestroyWindow(HWND hWnd // 소멸할 창 핸들);

hWnd: 소멸할 창 핸들.
반환 값: 함수가 성공하면 반환 값은 0이 아닙니다. 함수가 실패하면 반환 값은 0입니다. 더 많은 오류 정보를 얻으려면 GetLastError 함수를 호출하세요.
참고: 스레드는 이 함수를 사용하여 다른 스레드가 만든 창을 삭제할 수 없습니다. 이 창이 WS_EX_NOPARENTNOTIFY 스타일이 없는 하위 창인 경우 창이 소멸될 때 WM_PARENTNOTIFY 메시지가 상위 창으로 전송됩니다. Windows CE: 이 함수는 WM_NCDESTROY 메시지를 보내지 않습니다.

4.3 EndDialog 

함수: 이 함수는 모달 대화 상자를 지우고 시스템이 대화 상자의 모든 처리를 종료하도록 합니다.

함수 프로토타입: BOOL EndDialog(HWND hDlg,int nResult);

매개변수: hDlg: 대화 상자 창을 지울 것을 나타냅니다. NResult: 대화 상자 만들기 기능에서 애플리케이션에 반환되는 값을 지정합니다.
반환 값: 함수 호출이 성공하면 반환 값은 0이 아닌 값이고, 함수 호출이 실패하면 반환 값은 0입니다. 오류 정보를 얻으려면 GetLastError 함수를 호출하세요.
참고: DialogBox, DialogBoxParam, DialogBoxlndirect 및 DialogBoxlndirectParam 함수로 생성된 대화 상자는 EndDialog 함수를 사용하여 지워야 합니다. 응용 프로그램은 대화 상자 응용 프로그램 내에서 EndDialog 함수를 호출하며 이 함수는 다른 목적으로 사용할 수 없습니다. 대화 상자 응용 프로그램은 WM_INITDIALOG 메시지 처리 중에도 언제든지 EndDialog 함수를 호출할 수 있습니다. 응용 프로그램이 WM_INTDIALOG 메시지 처리 중에 이 함수를 호출하면 표시 및 입력 포커스가 설정되기 전에 대화 상자가 지워집니다. EndDialog 함수는 대화 상자를 즉시 ​​지우지 않습니다. 대신, 플래그를 설정하고 대화 상자 응용 프로그램이 시스템에 제어권을 반환할 수 있도록 합니다. 시스템은 애플리케이션 큐에서 다음 메시지를 검색하기 전에 플래그를 감지합니다. 플래그가 설정된 경우 시스템은 메시지 루프를 종료하고 대화 상자를 지우고 nResUlt의 값을 대화 상자를 만든 함수에서 반환된 값으로 사용합니다.

관련 라벨:
c++
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!