본문 바로가기
반응형

C & C++/MFC 컨트롤199

폴더 선택 다이얼로그 이전 경로 기억하기 처음 시작 폴더를 지정해 준 후, 폴더 선택 다이얼로그를 띄우는 방법. 종종 기존에 선택했던 경로가 선택된 상태로 폴더 선택 대화 상자를 열고 싶을 때가 있는데, 그 때 사용한다. 기본적인 원리는 폴더 선택 대화 상자를 표시할 때, 기존에 저장된 경로를 선택하도록 하는 것이다. 그리고 IDOK에 해당하는 버튼을 누르면, 즉 폴더를 선택하고 '취소'를 누르지 않았다면, 선택된 경로를 특정 파일에다 저장해 놓는다. 그리고 다음 번에 폴더 선택 대화 상자를 표시할 때 파일에 저장해 놓았던 경로를 읽어 와서 SHBrowseForFolder API에 인자로 넘기는 콜백 함수에 그 경로를 넘겨 주면 된다. 우선 코드를 보고 방법을 이해해 보자. int CALLBACK MyBrowseCallbackProc(HWND .. 2011. 3. 29.
[Tree] CTreeCtrl 에 디렉토리 표시하기 탐색기의 폴더 목록 트리와 같은 기능을 하는, CTreeCtrl 을 상속받은 클래스를 만들어 보자. 델파이의 것을 사용해도 되긴 하는데, 좀 너무 모양이 옛날 것 같아서... 여하튼, 탐색기와 비교를 해보면 다음과 같다. 왼쪽: CDirTree, 오른쪽: 윈도우즈 탐색기 소스 코드는 다음에 있다. 소스는 Visual C++ 6.0 으로 작성되어 있다. Visual Studio 2008 에서 열어도 별 문제 없이 실행되는 것을 확인하였다. 단, STL을 사용할 시 VC++ 6.0 에서 경고 메세지가 너무 많아 Warning level 을 0 으로 해놓고 컴파일해서 경고는 많을 수 있으므로 이 부분은 이용자가 적당히 처리해 준다. 탐색기에 나오는 '내 네트워크 환경'과 같은 항목은 CDirTree에 없는 것.. 2011. 3. 29.
[MessageBox] 메시지 상자 사용법 CWnd::MessageBox int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK ); nType Specifies the contents and behavior of the message box. int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); hWnd 메시지 박스의 오너(Owner) 윈도우이다. 오너 윈도우란 메시지 상자를 소유한 윈도우를 말하며 메시지 박스는 오너 윈도우의 중앙에 나타나며 메시지 박스가 떠 있는 동안 오너 윈도우 는 사용할 수 없는 상태가 된다. 메시지 박스를 닫아야만 오너 윈도우를 사용할 수 있다. lpTe.. 2011. 3. 27.
[List] 리스트 컨트롤에 다른 컨트롤 넣기 1.요약 특정 Column에서 다른 Control 을 띄우는 방법 설명. 여기서 사용한 방법은 현재 Cursor가 있는 위치를 파악한후 그 위치에 적당한 크기의 Edit Control를 생성 시킨다. 2.본문 1) CListCtrl를 상속받는 CMyList라는 Class를 만든다. 2) Member변수로 CEdit m_ctrEdit를 선언한다. 3) Member함수로 OnLButtonDown()과 GetSubItemFromPt(point, nItem, nSubItem, rcClient)를 선언 OnLButtonDown() : Edit Control를 생성/삭제 시키는 역할 GetSubItemFromPt(): 현재 Cursor가 있는 곳의 List정보를 가져온다. 4) 함수 내용을 구성한 후(예제 참조) .. 2011. 3. 27.
[Tip] Winamp 처럼 TaskBar와 SystemTray 가지고 놀기 1.요약 윈앰프에서 보면 TaskBar와 SystemTray에 동시에 보여주는 모드 혹은 각각 보여주는 모드 그리고 모두 보여주지 않는 모드가 있습니다. 4가지의 기능을 모두 구현해 보도록 하겠습니다. 2.본문 윈앰프의 기능을 살펴보기 위해서 일단 Spy++로 윈앰프를 선택하신후, 메세지는 WS_SHOWWINDOW 와 WS_STYLECHANGED 만을 선택합니다. 일반적으로 윈도우의 속성일 바뀔때 위의 메세지가 발생합니다. 그리고 나서 속성을 여러번 바꾸어 보면 아래의 표와 같습니다. TaskBar 를 보여주기 --> WS_EX_TOOLWINDOW 속성(0x0080)을 뺀다. TaskBar 에서 감춘다 --> WS_EX_TOOLWINDOW 속성(Ox0080)을 넣는다. SystemTray에서 감춘다 --.. 2011. 3. 27.
[공통] 컨트롤에 ToolTip 넣기 1.요약 Dialog Box의 Control에 Tooltip넣기 2.본문 Tooltip은 CToolTipCtrl 클래스를 이용하면 쉽게 구현할 수 있습니다. 먼저 Create()를 호출해서 Tooltip 객체를 생성합니다. 그리고 나서 AddTool()을 호출해 각각의 컨트롤과 Tooltip 문자열을 연결해 줍니다. 여기서 Tooltip 문자열을 표시해 주는 함수는 ReplyEvent()이며, Tooltip 컨트롤 객체를 생성해 주고 컨트롤과 연결할 수 있는 가장 적당한 곳은 WM_INITDIALOG 메시지의 핸들러(OnInitDialog())입니다. 이렇게 Tooltip을 초기화해 준 후에 ReplyEvent()를 호출하면 툴팁을 볼 수 있으며, 나머지 처리는 PreTranslateMessage()에서.. 2011. 3. 27.
반응형