'프로그래밍/c++'에 해당되는 글 15건

  1. 2013.04.26 임의로 등록한 MFC UI가 바로 적용 안될때
  2. 2013.04.26 프로세스ID, 윈도우 핸들 컨트롤
프로그래밍/c++2013. 4. 26. 11:38

BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
{
 // base class does the real work

 if (!CFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
 {
  return FALSE;
 }


 // enable customization button for all user toolbars
 BOOL bNameValid;
 CString strCustomize;
 bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
 ASSERT(bNameValid);

 for (int i = 0; i < iMaxUserToolbars; i ++)
 {
  CMFCToolBar* pUserToolbar = GetUserToolBarByIndex(i);
  if (pUserToolbar != NULL)
  {
   pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
  }
 }

// 프로그래머가 임의로 수정한 MFC ui를 수정하기 위해서는 레지스트리를 변경해줘야 하는 번거로움이 있는데

// 아래와 같은 소스 두줄이면 말끔히 해결!!

// 참고 : http://blog.naver.com/PostView.nhn?blogId=m1122314&logNo=30125697756 

m_wndMenuBar.RestoreOriginalstate();
m_wndToolBar.RestoreOriginalstate();

 return TRUE;
}



Posted by GaePein
프로그래밍/c++2013. 4. 26. 11:35

 

//----------------------------------------------
// 윈도우 핸들로 프로세스 아이디 얻기
//----------------------------------------------

ULONG ProcIDFromWnd(HWND hwnd)

 ULONG idProc; 
 GetWindowThreadProcessId( hwnd, &idProc ); 
 return idProc; 
}

 

//----------------------------------------------
// 프로세스 아이디로 윈도우 핸들 얻기
//----------------------------------------------

HWND GetWinHandle(ULONG pid)

 HWND tempHwnd = FindWindow(NULL,NULL);   // 최상위 윈도우 핸들 찾기 

 while( tempHwnd != NULL )
 { 
  if( GetParent(tempHwnd) == NULL )             // 최상위 핸들인지 체크, 버튼 등도 핸들을 가질 수 있으므로 무시하기 위해 
   if( pid == ProcIDFromWnd(tempHwnd) ) 
    return tempHwnd; 
  tempHwnd = GetWindow(tempHwnd, GW_HWNDNEXT); // 다음 윈도우 핸들 찾기 
 } 
 return NULL; 
}

 

 

 



Posted by GaePein