2013-05-04 4 views
0

MFC 기능 팩을 사용하여 작성중인 응용 프로그램이 있습니다. 그것은 문서 /보기를 사용합니다. 이러한 클래스는 "일반"MFC 클래스에서 파생되므로 이러한 질문은 특정 기능 팩이 아닐 수도 있습니다.VS 2008 MFC 기능 팩 - 방법 HOWTO :

변경이 이루어질 때, 나는 탭의 이름, 다음 코드를 사용하여 메인 창 제목에 단어 ​​ (modified)에 별표 (*) *를 추가

:

tabval = "Report_" + pDoc->rptData.reportId.Strip(); 
winval = tabval; 
if (changed) { 
    tabval += " *"; 
    winval += " (modified)"; 
} 
frame->SetTitle(tabval); 
frame->SetWindowText(tabval); 
name = mainFrame->GetTitle(); 
mainFrame->SetWindowText(name + " - " + winval); 

을하지만 탭 사이를 변경하면, 원본 텍스트가 다시 나타납니다. 첫 번째 질문 : 변경 사항을 어떻게 고정시켜야합니까?

두 번째 질문 : 왼쪽에는 트리보기가 있고 오른쪽에는 속성 창이 있습니다. 이들 사이를 전환하면 (un) 제목 막대가 강조 표시되어 어느 것이 활성 상태인지 표시합니다. 또한 사용자는 문서 윈도우를 활성화하고 상호 작용할 수 있지만 문서 윈도우가 실제로 활성화되어 있다는 시각적 피드백을 제공하는 방법은없는 것 같습니다. 어떻게해야합니까?

답변

0

그것은 당신의 변수는 어떤 종류의 명확하지 않다,하지만 당신은 pDocframe을 가지고, 나는 이전이 CDocument 파생 클래스이고 후자는 아마도 CFrameWnd 또는 CMDIFrameWnd 파생 클래스라고 가정하고있다. 내가 지금까지 잘못 아니에요 경우

는 다음 탭 제목을 고집하지 않는 이유는 각 탭의 비하인드 년대 CDocumentSetTitle를 호출, 그래서

tabval = "Report_" + pDoc->rptData.reportId.Strip(); 
winval = tabval; 
if (changed) { 
    tabval += " *"; 
    winval += " (modified)"; 
} 
pDoc->SetTitle(tabval); // set tab title on CDocument 
+0

탭을 처리했지만 기본 창 제목에는'*'만 있고'(수정 됨) '이 없습니다. 필요하다면 그걸로 살 수 있지만 그걸 무시할 수있는 방법이 있습니까? 감사! –

+0

나는 파고를했는데, 주 ​​창 제목을 수정하는 몇 가지 방법을 찾았지만, 모두 상당히 복잡하고 문제가되지 않았습니다. –

0

나는 같은 것을해야한다는 것입니다 과거에도 비슷한 문제가있었습니다. 주 창 제목 텍스트가 다시 변경되는 원인은 CFrameWndEx::OnUpdateFrameTitle입니다. 가상 클래스이므로 파생 클래스에서 재정의하여 원하는 동작을 수행 할 수 있습니다. 그것은 나를 위해 일한 해결책입니다.