반응형 C & C++444 [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. [Edit] 한글입력을 받고싶지 않을때 1.요약 특정 컨트롤에서 영문만 입력 받고자 할때에는 IME의 사용을 중지하면 됩니다. 2.본문 IME 즉, Input Method Editor 라고 해서 현재 우리는 한글을 입력하기 위해서 윈도우에서 제공하는 한글 입력기를 사용하고 있습니다. 과거, 도스 상에서는 도깨비라는 에뮬레이터를 많지도 않은 메모리에 로드해서 사용했었는데, 하여튼 참 편하게 됐습니다. 특정 컨트롤에서 영문만 입력 받기 위해서는 IME 를 사용하지 않도록 설정하면 됩니다. 제공되는 함수로는, ImmAssociateContext() 이며 이 함수를 사용하여 IME 의 사용여부를 설정할 수 있습니다. HIMC ImmAssociateContext( HWND hWnd, HIMC hIMC ); 3.예제 #pragma comment(lib,.. 2011. 3. 27. [Tip] 트레이 아이콘 사라지는 버그 1. 요약 요즘 나오는 프로그램에서는 대부분 TrayIcon을 제공합니다. 단순히 프로그램 리스트(태스크 바)에 나오는 것보다는, TrayIcon이 사용자에게 보다 더 편리한 UI를 제공하기 때문입니다. 그런데, 익스플로어(인터넷 익스플로어가 아닙니다.)의 버그 때문에 과 같이 종종 TrayIcon이 Tray에서 사라지는 경우가 있습니다. 하지만, 몇몇의 프로그램은 사라지지 않고 계속 남아있는 경우도 볼 수 있습니다. 그럼 우리의 프로그램도 익스플로어와는 상관없이 계속 트레이에 있으려면 어떻개 해야할까요? 익스플로어는 자신이 죽었다가 새로 시작되는 경우 현재 보이는 모든 윈도우에게 멧세지를 보내주는데, 우리는 이 메시지를 등록하여 사용함으로써 트레이 아이콘이 사라지는 버그를 막을 수 있습니다. 2. 본문.. 2011. 3. 27. [Tip] 윈도우에 Focus 가지 않게 하기 1.요약 가끔식 특정윈도가 포커스를 가지지 않기를 원할때가 있습니다. 아주 간단한 방법이긴하지만 여기에 소개하겠습니다. 2.본문 윈도가 포커스를 가지면 WM_SETFOCUS 메시지가 발생합니다. 이때 들어오는 값으로 이전에 포커스를 가진 윈도의 핸들이 넘어옵니다. 특정 윈도에 포커스를 가지지 못하게 할려면 WM_SETFOCUS에 넘어오는 이전 포커스를 가진 윈도에 다시 SetFocus()를 하면 됩니다. 3.예제 void CMyWnd::OnSetFocus(CWnd* pOldWnd) { CWnd::OnSetFocus(pOldWnd); // TODO: Add your message handler code here if (pOldWnd->GetSafeHwnd()) pOldWnd->SetFocus(); } 2011. 3. 27. 이전 1 ··· 60 61 62 63 64 65 66 ··· 74 다음 반응형