Purpose:
메인 프레임,MDI 차일드 창의 핫키 이벤트를 다른 모달리스 다이얼로그,바에서 가로채는 현상 bugfix.
Added Code:
//2012.04.11 krkim 다이얼로그바에서의 메인프레임 핫키되게 if(m_pMainWnd && m_pMainWnd->PreTranslateMessage(pMsg) == TRUE) return TRUE;
BOOL KFCApp::PreTranslateMessage(MSG* pMsg)/* This called from KFCApp directly*/
{
//HWND hAncestor = GetAncestor(pMsg->hwnd,GA_ROOT);
// check for cheap CS_IME style first... windows7 runtime error - IME window enter here,so avoid the IME window
if (GetClassLong(pMsg->hwnd, GCL_STYLE) & CS_IME)
return FALSE;
/*If KFCWnd is Main Window which has not m_hAccel member,you can the m_hAccel set Here*/
if(m_hAccel != NULL && ::TranslateAccelerator(pMsg->hwnd, m_hAccel, pMsg))
return TRUE;
#if 0
if(m_pMainWnd)
return m_pMainWnd->PreTranslateMessage(pMsg);
#else
//2012.04.11 krkim 다이얼로그바에서의 메인프레임 핫키되게
if(m_pMainWnd && m_pMainWnd->PreTranslateMessage(pMsg) == TRUE)
return TRUE;
HWND hWndStop = NULL;
if(m_pMainWnd && m_pMainWnd->IsWindow())
hWndStop = m_pMainWnd->GetSafeHwnd();
else
hWndStop = GetAncestor(pMsg->hwnd,GA_ROOT);
for (HWND hWnd = pMsg->hwnd; hWnd != NULL; hWnd = ::GetParent(hWnd))
{
KFCWnd* pWnd = KFCWnd::GetPointer(hWnd);
if (pWnd != NULL)
{
// target window is a C++ window
if (pWnd->PreTranslateMessage(pMsg))
return TRUE; // trapped by target window (eg: accelerators)
}
// got to hWndStop window without interest
if (hWnd == hWndStop)
break;
}
#endif
return FALSE; // no special processing
}
Download New Updated Class(Full Source Code):
'kxLibrary' 카테고리의 다른 글
KFCScrollBar Class Update (0) | 2012.04.24 |
---|---|
kxLibrary Class Diagram (0) | 2012.04.11 |
kxBuffLib::kxFile Class Source Code (0) | 2011.10.06 |
KFC1.0 Class Update For KFCScrollBar (0) | 2011.05.05 |
KFC1.0 Class Update For KFCBitmap (0) | 2011.05.05 |