본문 바로가기

Windows

(14)
MFC, Popup context menu MFC 기반에서의 context popup menu 띄워보자. XXX.cpp 에서 (오른쪽 버튼이 눌렸을 때라 가정) void XXXXX::OnRButtonDown(UINT nFlags, CPoint point){CMenu menu; // 팝업 메뉴를 생성한다.menu.CreatePopupMenu();menu.AppendMenu(MF_STRING, ID_MENU1, _T("Menu 1"));menu.AppendMenu(MF_STRING, ID_MENU2, _T("Menu 2")); CPointpt = point;ClientToScreen(&pt);menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this); menu.DestroyMenu(..
Virtual list control (리스트 아이템 가상화?) https://msdn.microsoft.com/ko-kr/library/ye4z8x58.aspx위 페이지에 잘 설명되어 있다. 뭐 일단 그렇고.. 우선 이게 무엇을 하는 것인지 보자.일단 virtual이라 해서 특별히 하는 것은 없다. 기본적인 list control을 사용하는 방법에 약간의 차이를 둔 것이다. 기본적으로 list item 추가할 때에는 InsertItem 함수 같은 기본 함수들을 이용하는데이 함수를 이용하면 편하게 입력하고 삭제도 할 수 있다. 그런데 문제는 list control 자체적으로 가질 수 있는 item의 양은 한계가 있을 것이고 문제는 추가 및 삭제할 때 Control을 다시 그릴 때에도 많은 부하를 가질 수 있다.그에 반해 virtual list는 자기가 그릴 item ..
Loading system icon 실제로는 dll 파일에 icon이 들어있고 해당 dll은 shell32.dll 이다. 아이콘 바꾸려고 할 때 특정 dll, exe를 선택하면 내장되어 있는 icon을 설정할 수가 있는 것 처럼 Win32 프로그래밍 내부에서도 동일하게 dll 파일을 열고 icon을 얻오올 수 있다. HINSTANCE hDll;hDll = LoadLibrary(_T("SHELL32.dll"));HICON hIcon = LoadIcon(hDll, MAKEINTRESOURCE(1));HICON hIconSm = LoadIcon(hDll, MAKEINTRESOURCE(2));
MFC Control Focusing & Arraw Keys 컨트롤을 만들고 방향키를 눌러 특정 동작이 되도록 하고 싶었는데 그게 잘 안되었다.결국 구글링을 했고 방법을 찾았다.https://support.microsoft.com/en-us/kb/104637 골자는 UINT TestCtrl::OnGetDlgCode(){return DLGC_WANTARROWS | DLGC_WANTALLKEYS | DLGC_WANTCHARS;}WM_GETDLGCODE 라는 메시지가 올 때 위와 같이 TestCtrl는 dialog로부터 방향키, 모든키, char 를 받겠다는 의미다.이렇게 수정하면 기본적으로 WM_KEYDOWN, WM_KEYUP 등의 메시지가 상속받은 window로 전달이 된다.우선 이렇게 해서 기본 루틴을 이용할 수 있게 되었고 Focus는 어떻게 하는가. 일반적으로..
Visual Studio : DLL 경로, 환경변수 설정 방법 1. DLL 경로 설정Solution Explorer 에서 프로젝트를 선택하고 오른쪽 버튼 누르면 아래에 Properties 선택.Debugging 옵션에서 Environment 편집윈도우 시스템에서 기본적으로 DLL은 환경 변수 PATH의 경로를 탐색한다.그래서 PATH를 변경해 원하는 디렉토리를 선택한다.EX> PATH=test/dlls;%PATH% 2. 환경변수위와 같다 사실 Environment 은 환경변수를 설정하기 위한 곳이다.PATH도 환경변수의 일종이다.혹 원하는 환경변수를 실행 시에 설정하고 싶다면 임의의 변수와 값을 설정하면 된다.EX>PATH=test/dlls;%PATH%TEST_ENV=1여기서 TEST_ENV 라는 변수와 그 값을 1로 설정한 경우이다. 이와 같이 설정하여 Test할..
Dos batch 예제1 가끔씩 Dos batch 만들 때 잊어버릴 때가 있다. 그래서 이렇게 예제 하나 올린다. @echo off :READY_TO_FLASH set IMAGE_PATH=temp set IMAGE_NAME=temp set IMAGE_PARTITION=%1 if "%IMAGE_PARTITION%"=="" ( echo The partition is set default value, 'system' set IMAGE_PARTITION=system ) if "%IMAGE_PARTITION%"=="s" ( set IMAGE_PARTITION=system ) if "%IMAGE_PARTITION%"=="k" ( set IMAGE_PARTITION=kernel ) if "%IMAGE_PARTITION%" == "system..