2014-02-08 5 views
1

안녕하세요 대화 상자를 만들었습니다.대화 상자에서 처리기 (HWND)를 얻는 방법

제 질문은 어떻게 처리합니까?

또한 핸들을 얻으면 그 안에 정적 텍스트 컨트롤 텍스트를 어떻게 변경하겠습니까?

class CStatisticsDlg : public CDialogEx 
{ 
public: 
    CStatisticsDlg(); 

// Dialog Data 
    enum { IDD = IDD_STATISTICS }; 

protected: 
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 

// Implementation 
protected: 
    DECLARE_MESSAGE_MAP() 
public: 
}; 

CStatisticsDlg::CStatisticsDlg() : CDialogEx(CStatisticsDlg::IDD) 
{ 
} 

void CStatisticsDlg::DoDataExchange(CDataExchange* pDX) 
{ 
    CDialogEx::DoDataExchange(pDX); 
} 

BEGIN_MESSAGE_MAP(CStatisticsDlg, CDialogEx) 
END_MESSAGE_MAP() 
+0

코드를 게시하십시오. 질문이 간단하더라도, 당신이하고 싶은 것을 이해하기위한 독서는 없습니다. 정확히 어디에 핸들이 필요한지. 대답은 –

답변

10

(태그로 표시된 바와 같이) 당신이 MFC를 사용하는 가정은 다음 아마도 당신은 CDialog 클래스 인스턴스가 있습니다. CDialogCWnd의 서브 클래스입니다, 그래서 당신은 하나의 3 가지 방법에 의해 창 핸들을 검색 할 수 있습니다 operator HWND()

  • 을에 GetSafeHwnd()를 호출하여
    • 가 직접 HWND에 그 m_hWnd 멤버를 캐스팅
    • 접근
    +0

    입니다. 관련 질문 .... 당신이 대화 상자에 대한 핸들을 가지고 있다고 가정하면 .... 정적 텍스트 컨트롤이 있습니다 .... 어떻게하면 런타임에 컨트롤의 텍스트를 변경합니까 .... 나는 시도했다 SetDlgItemText하지만이 효과가없는 것 같습니다. – user3126297

    +0

    또한 m_HWnd == null이라고 말합니다. – user3126297

    +0

    리소스 편집기에서 정적 텍스트에 고유 한 ID를 지정하십시오. 그런 다음 컨트롤을 CStatic 변수 나 CString에 매핑하는 것이 좋습니다. 어느 쪽이든 당신은 가변 내용을 업데이트 할 수 있습니다. 기본적으로 정적 라벨의 ID는 IDC_STATIC이 같으므로 런타임에 값을 편집하려면 고유 한 ID 값을 지정해야합니다. –

    관련 문제