반응형 C & C++444 ShellExecuteEx로 실행한 어플 찾기 ShellExecute 또는 CreateProcess로 application을 실행하고 FindWindow로 해당 프로그램을 찾아서 써야 할경우가 종종 있다. 그런데 혹시 같은 프로그램이 이미 여러개 떠있어서 ClassName이나 Caption이 같은 윈도우가 여러개 있다면 단지 FindWindow로서 정확히 해당 윈도우를 찾지 못하는경우가 발생하기도 한다. 대개의 경우는 제대로 찾아지는데 이는 방금실행한 폼이 Desktop에 맨앞으로 오기 때문이다. 그렇다면 내가 실행한 application의 윈도우를 정확히 찾으려면 어떻게 해야할까? 방법은? processid를 이용해서 EnumWindow 프로세서로 넘오오는 HWND의 prossesid와 비교해서 찾을수있다. 아래와 같이 // 참조 http://cb.. 2011. 11. 2. [MFC] [List] OnItemchanged 한번만 호출되게 리스트의 변화될때 동작하는 이벤트인데 디버그 할때 3번이상 이함수로 호출된다. void CNCCView::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); // 한번만 호출 되도록 처리 bool wasSelected = (pNMLV->uOldState & LVIS_SELECTED) != 0; bool isSelected = (pNMLV->uNewState & LVIS_SELECTED) != 0; if(!(!wasSelected && isSelected)) return; *pResult = .. 2011. 11. 2. MFC SDI 프로그램 최대화 시작 BOOL CInternetTamApp::InitInstance() 함수 안에 보면 다음과 같은 코드가 있다. ShowWindows(SW_SHOW); 를 다음과 같이 변경 ShowWindows(SW_SHOWMAXIMIZED); /////////////////////////////////////////////////////////////////////////////////////////////// 다이얼로그박스를 최대 설정은 아래 [Source Code 1] 처럼 ShowWindow(SW_MAXIMIZE) 함수 호출하면 된다. (윈도우에 Maximize Box가 있을 경우....) [Source Code 1] 다음의 코드를 OnInitDailog() 등의 초기화 함수에 넣어주면 풀스크린으로 시작합니다. Di.. 2011. 11. 2. 레지스터리 값 저장하고 가져오기 윗그림처럼 보통 메신저나 사이트를 보면 로그인화면에 체크박스에 "ID저장" 이라는 부분이 있는데 그걸 체크하면 재실행시 에디트창에 아이디가 남아있다.. MFC같은경우는 방법이 몇가지있는데, 레지스트리를 이용해서 저장,읽기를 GetProfileString,WriteProfileString를 사용해서 구현해보자!! 처음에 레지스트리를 셋팅을 해야하는데 XXXApp의 InitInstance()를 보면 SetRegistryKey(_T("Local AppWizard-Generated Applications")); 라고 디폴트로 설정해있는데 이번엔 이걸 그대로 사용하겠다... ------------------------------------------------------------------------------.. 2011. 10. 31. 모달리스 대화상자 작업표시줄에 표시하기 보통 모달리스,모달 대화상자는 작업표시줄에 표시가 안난다.. 근데 가끔 각자 컨트롤하고싶을때가 있는데 그럴경우는 dialog들을 생성할 때 parent window 값을 desktopwindow로 지정하면 된다.. 예를 들면 CXXXDlg Dlg; Dlg.Create(IDD_DIALOG1,GetDesktopWindow()); 이런식이면 가능하다. -------------------------------------------------------------------------------------- 또 한가지팁으로 다이얼로그에서 타이틀바 속성을 를 없에면 작업표시줄에 아무것도 표시가 안나는데 그럴때는 OnInitDialog()함수에다가 SetWindowText(_T("내용")); 추가하면 작업표시줄에 잘.. 2011. 10. 31. 트리 컨트롤에 팝업메뉴 추가하기 트리컨트롤에서 노드를 선택하고 마우스 우측클릭했을때 팝업메뉴가 뜨게 해보자!!! 1.첫번쨰 우선 트리컨트롤에서 이벤트핸들러를 추가한다...(Add Event Handler) 여기서 NM_RCLICK을 선택한다...(그림이 작아서 죄송합니다) 2번쨰 추가하면 다음코드를 추가한다. () void Cdemo2View::OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult) { CPoint p; GetCursorPos(&p); UINT flags; //마우스 위치의 좌푤을 트리의 클라이언트 영역 좌표로 전환 m_Tree.ScreenToClient(&p); //HitTest함수를 이용하여 아이템을 얻고 HTREEITEM nitem=m_Tree.HitTest(p,&flags); //.. 2011. 10. 31. 이전 1 ··· 24 25 26 27 28 29 30 ··· 74 다음 반응형