2014-04-25 6 views
2

MFC를 사용하여 간단한 시계 응용 프로그램을 만들고 있습니다. 내 응용 프로그램 제목은 "CLOCK - [CLOCK1]"과 같이 나타납니다. 어떻게 단순히 "CLOCK"으로 재설정합니까? 참고로 Document-View 아키텍처를 활성화했습니다. MFC를 제목의이 재정에MFC 응용 프로그램 제목

+2

그런 간단한 응용 프로그램을 수행해야 할 때 나는 문서 -보기를 건너 뛰고 대화 상자로 시작합니다. –

답변

4

넣어 :

void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle) 
{ 
SetWindowText(L"CLOCK"); 
} 
+0

MDI 응용 프로그램을 가지고 있다면'CChildFrame :: OnUpdateFrameTitle()' –

+0

을 무시해야 할 수도 있습니다. CMainFrame :: OnUpdateFrameTitle을 재정의하면 제목이 CLOCK - [CLOCK1]에서 [CLOCK1] foo로 바뀌고 "foo"는 재정의됩니다. 나는 여전히 CLOCK1을 제거해야한다. –

+0

@EdwardClements CMainFrame :: OnUpdateFrame을 재정의하는 방법을 알려주시겠습니까? 재정의 된 함수 내에서 SetWindowText ("CLO")를 호출했지만 그 변경 사항은 없습니다. –

0

당신은 당신의 창을 클릭하고 제목을 입력하여 시각적 편집기에서 변경할 수 있습니다. 아니면 함수에서이 코드를 추가 할 수는

this->SetWindowText(L"CLOCK");

+0

제 경험으로는 당신의 대답이 그의 경우에 효과가 없을 것입니다. 그가 제시 한 제목의 형식은 "CLOCK - [CLOCK1]"이며, 이는 void CFrameWnd :: OnUpdateFrameTitle (BOOL)에 의해 호출 된'void CFrameWnd :: UpdateFrameTitleForDocument (LPCTSTR lpszDocName) '에 의해 출력 된 "WindowText - lpszDocName" bAddToTitle)' 'SetWindowText'는 내가 설명한 과정에 의해 오버라이드 될 것이므로, 메인 프레임에'OnUpdateFrameTitle' 함수 오버라이드를 구현하는 것이 좋습니다. – sergiol

3

는 대답 here있다는 OnInitDialog, 그러나 나는 다음과 같은 솔루션을보다 "적절한"이라고 생각합니다. 또한

CMainFrame::OnUpdateFrameTitle()을 무시하는, 당신은 또한 아래 CMainFrame::PreCreateWindow()를 재정의해야합니다

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ cs.style &= ~FWS_ADDTOTITLE; 
    return CFrameWndEx::PreCreateWindow(cs); // replace CFrameWndEx by CFrameWnd if 
}           // your CMainFrame is based on CFrameWnd 

주의 사항 : 과도한 깜박임을 피하기 위해 대신 SetWindowText(_T("foo"))AfxSetWindowText(m_hWnd, _T("foo"))을 사용하는 것이 좋습니다, 그것은 텍스트가 다르다는 것을 확인 윈도우 텍스트를 설정하기 전에.

관련 문제