새로운 CMFCToolBar의 대화 상자에 CToolbar를 추가하는 표준 방법을 시도했습니다. 그러나 그것은 효과가 없습니다. 새로운 구현에 빠져 들었는지, 실제로 가능한지 알고 싶습니다.CMFCToolBar를 대화 상자에 추가 할 수 있습니까?
2
A
답변
6
난 당신이 "표준 방식"무슨 뜻인지 잘 모르겠지만, 당신은 확실히 프로그래밍 방식으로 그것을 할 수 있습니다 : 명령이 dialog-이 어디
는// In MyDlg.h
class CMyDlg : public CDialog
{
...
CMFCToolBar m_ToolBar;
...
};
// In MyDlg.cpp
BOOL CMyDlg::OnInitDialog()
{
...
if(m_ToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, 100))
{
m_ToolBar.SetPaneStyle(m_ToolBar.GetPaneStyle()
& ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_ANY));
m_ToolBar.InsertButton(CMFCToolBarButton(ID_APP_ABOUT, -1, _T("About")));
m_ToolBar.InsertButton(CMFCToolBarButton(ID_APP_EXIT, -1, _T("Exit")));
CSize sizeToolBar = m_ToolBar.CalcFixedLayout(FALSE, TRUE);
m_ToolBar.SetWindowPos(NULL, 0, 0, sizeToolBar.cx, sizeToolBar.cy,
SWP_NOACTIVATE | SWP_NOZORDER);
}
...
}
0
위의 OnInitDialog
는 경우를 제외하고는 잘 작동 하는가 유일한 명령.
응용 프로그램 또는 메인 프레임 처리기가 없으면 버튼 자체가 비활성화되고 처리기가 호출되지 않습니다. ID_APP_ABOUT
및 ID_APP_EXIT
에는 이미 CWinAppEx
처리기가 있으므로 위 코드가 올바르게 라우팅됩니다.
OnCmdMsg
을 덮어 쓰지 않아도되는 해결 방법은 응용 프로그램 또는 기본 프레임 수준에서 처리기를 추가하는 것입니다. 그러면 도구 모음이 활성 상태로 유지되고 해당 대화 상자 처리기로 올바르게 이동합니다. CMainFrame
에 간단한 void 처리기를 추가하면 트릭 (아래 샘플 코드)이 수행됩니다. void 처리기가 호출되지 않습니다.
BOOL CMyDlg::OnInitDialog()
{
...
m_ToolBar.InsertButton(CMFCToolBarButton(**ID_DLG_COMMAND**, -1, _T("DlgCommand")));
...
}
//CMainFrame
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
...
ON_COMMAND(**ID_DLG_COMMAND**, VoidHandler)
END_MESSAGE_MAP()
void CMainFrame::VoidHandler()
{
assert(0);
}
1
만 처리해야하는 경우 대화 전용 트릭을 FALSE로 SetRouteCommandsViaFrame을 설정하는 명령. 그런 다음 소유자 (대개 대화 상자)가 주 프레임 대신 명령에 사용됩니다.
관련 문제
- 1. Jquery UI 대화 상자에 버튼을 동적으로 추가 할 수 있습니까?
- 2. 대화 상자에 메뉴 리소스 추가
- 3. Qt 대화 상자에 최소화 버튼을 추가 하시겠습니까?
- 4. alert() 대화 상자에 위 첨자 문자를 표시 할 수 있습니까?
- 5. jQuery UI 대화 상자에 PDF를 포함 할 수 있습니까?
- 6. VS의 "참조 추가"대화 상자에 탭 추가하기?
- 7. Dialog에 옵션 메뉴를 추가 할 수 있습니까?
- 8. Windows 통합 인증 대화 상자에 텍스트 추가
- 9. 대화 상자에 추가 된 div의 크기를 줄이려고합니다.
- 10. System.Web.WebPages - 참조 추가 대화 상자에 없음
- 11. 어떻게 텍스트 상자에 거대한 문자열을 효율적으로 추가 할 수 있습니까?
- 12. 스크롤 뷰에 버튼을 추가 할 수 있습니까?
- 13. 동적으로 대화 상자에 버튼을 추가하십시오.
- 14. wix에서 제거를위한 대화 상자를 추가 할 수 있습니까?
- 15. jQuery UI 대화 상자 - 어떻게 대화 상자 단추 창에 ASP : 단추를 추가 할 수 있습니까?
- 16. 대화 상자에 포커스가없는 경우 저장 버튼을 클릭 할 수 없습니다.
- 17. jQuery 대화 상자에 페이지로드하기
- 18. 참조 추가 대화 상자에 Microsoft.SqlServer.Smo가 나타나지 않는 이유
- 19. 속성 추가 대화 상자에서 TortoiseSVN의 속성 목록에 사용자 지정 속성을 추가 할 수 있습니까?
- 20. 상속 된 MFC 대화 상자의 목록 상자에 열 머리글을 추가 할 수 없습니다. 뭐가 문제 야?
- 21. VBA의 MessageBox에 이미지를 추가 할 수 있습니까?
- 22. 모델 클래스가 뷰 추가 대화 상자에 표시되지 않습니다.
- 23. Ajax에서로드 된 UI 대화 상자에 jQuery UI 단추 추가
- 24. 추가 필드를 추가 할 수 있습니까?
- 25. 텍스트 상자에 AJAX 확장을 추가 할 수 없습니다.
- 26. 경고 대화 상자에 메시지 표시
- 27. 대화 상자에 대한 Assert 함수
- 28. 대화 상자에 오류가 표시되지 않습니다.
- 29. 대화 상자에 소프트 키보드 표시
- 30. FireFox 및 IE 저장 대화 상자에 새 옵션 추가
감사합니다. 이것은 나를 위해 잘 작동합니다. – mem64k
LoadToolBar를 사용하여 리소스에서 ToolBar를로드 할 수도 있습니다. –