아래 내용이 일부 틀려서 정정합니다. 20110719. 아래 처럼 할 경우 폰트가 변경 되는 것이 맞긴 한데, '일본어'등의 특수 문자들을 불러서 Insert하는 경우에 문제가 생긴다. 일본어를 지원하지 않는 폰트가 set돼있는 트리컨트롤에 일본어 String을 insert하려하면 항목이 깨져버린다. 그 이후에 font를 바꿔봤자 이미 삽입된 항목은 깨진 뒤다. 아래서 적은 NMCustomDraw는 삽입 된 뒤에 그려지는 듯 하다. 따라서 font를 적용시킬려면 그냥 CTreeCtrl로 객체를 생성하자마자 SetFont로 폰트를 지정하면 되는 듯 하다. 만약 CTreeCtrl을 상속받은 CustomTreeControl이라면 PreSubclassWindow 메소드에서 SetFont해주도록 하자. -----..
프로그램의 솔루션 디렉토리를 선택 하면 해당 프로그램에 들어간 소스의 라인 수를 계산하여 출력해 주는 프로그램. 현재 c, cpp, h, java, cs, py 확장자만 지원한다. 소스는 너무 간단해서.. 걍 대충 주석써서 올리겠음. void CCodeLineSearcherDlg::FindLine( int &nTotalLine, CString strPath ) { CFileFind finder; finder.FindFile( strPath ); int res = 1; while( res ) { res = finder.FindNextFile(); if( ( m_bC && finder.GetFileName().Right(2) == _T(".c") ) || ( m_bCPP && finder.GetFileNam..
C, C++ 에서는 프로그램 실행시 명령 인자를 받을 때 argv를 통해서 쉽게 받아 올 수 있다. MFC에서는 어떻게 얻어올까? GetCommandLine(); 을 쓰면 얻어 올 수 있다. 백문이 불여일견. 한번 테스트 직접 해보시길. 그리고 아래는 인자를 쫙 얻어오는 예제 소스. 띄어쓰기(공백)이 제대로 분리 됐는지 확인 하기 위해 출력 시에 @를 시작과 끝에 붙여서 출력 시켰다. 파싱은 알아서 하면 됨. LPSTR pszArgv = GetCommandLine(); CString strArgv = pszArgv; int nFirstSpace = strArgv.Find( _T(" ") ); CString strFirstArgv = strArgv.Mid( nFirstSpace + 2 ); AfxMessa..
Registry read, write. 레지스트리를 입력하거나 읽을려면 RegSetValueEX, RegQueryValueEx등을 써야하는데 들어가는 인자 셋팅하는게 귀찮다. 따라서 다음과 같이 쉽게 쓰도록 만들어주면 좋다. 우선 쓰기. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Registry에서 string value 쓰는 함수. /// ///@param[in]hKey쓸 값이 존재하는 키, { HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT, ...} 등의 값 사용. ///@param[in..
멀티바이트와 유니코드간의 교환! 문제 : LoadString이 이상한 문자를 읽어와요 rc의 StringTable에 있는 스트링을 읽어 오려면 기본적으로 LoadString을 사용 한다. 이 LoadString은, rc파일의 인코딩이 한글(euc-kr, cp949)일 경우, 한글 윈도우에서 한글을 읽어 오는 것은 문제가 되지 않는다. 마찬가지로 인코딩이 일본어(shift_jis, cp932)일 경우, 일본 윈도우에서 일본어를 읽어 오는 것은 문제가 되지 않는다. 하지만 나는 매우 특별한 상황에 쳐하였으니 -.-;; cp949로 인코딩 된 일본어(Japanese)를 일본OS에서 불러와야 하는 상황이 발생 하였다. 현재 사용하는 프로그램이 멀티바이트로 작성 돼 있다는 점을 명심하고, 우선 StringTabl..
현재 다루고 있는 프로그램은 캐릭터 표현에 있어서 멀티 바이트를 사용한다. 따라서 OS에 따라서 언어 인코딩 방식이 달라진다... 영어만 생각한다면 큰 문제가 없을텐데 일본어 버전 OS에서는 큰 문제가 발생 하더라. 특히 LoadString 매크로 함수에서 가장 큰 문제가 발생 한다. euc_kr로 인코딩 돼있는 리소스(.rc) 파일을 한글 윈도우에서 컴파일 하여 일본 os에서 실행 하는 경우 일본어가 들어있을 때, LoadString이 일본어를 읽어오질 못한다. 곰곰히 생각해보니 일본어 윈도우에서는 LoadString 함수가 shift_jis (cp932) 로 읽어와서 컨버팅 하는 것 같다. 현재 이런 저런 시도를 일주일 째 하고 있지만 차도가 보이질 않는다.. 유니코드와 멀티바이트: http://jh..
1. 대화상자에 세로 스크롤바를 붙이자. 2. 스크롤 바에 컨트롤 변수를 추가한다. CScrollBar m_ctrVScroll; 3. 스크롤 바 초기화 // 스크롤 바 의 사용영역 설정. m_ctrVScroll.SetScrollRange(0, 100); // 스크롤 바의 위치 설정 m_ctrVScroll.SetScrollPos(50); // 스크롤바의 모든 정보를 한번에 설정하기 SCROLLINFO scrinfo; scrinfo.cbSize = sizeof(scrinfo); scrinfo.fMask = SIF_ALL; scrinfo.nMin = 0; // 최소값 scrinfo.nMax = 100; // 최대값 scrinfo.nPage = 10; // 페이지단위 증가값 scrinfo.nTrackPos = ..
슬라이더 컨트롤(Slider Control) 1. 대화상자에 슬라이더을 붙이자. 2. 슬라이더 컨트롤의 컨트롤 변수 추가 CSliderCtrl m_ctrSlider; 3. 슬라이더 컨트롤 설정 // 사용영역 값 설정한다. m_ctrSlider.SetRange(0, 100); // 최소 값 설정. m_ctrSlider.SetRangeMin(0); // 최대 값을 설정. m_ctrSlider.SetRangeMax(100); // 위치 설정. m_ctrSlider.SetPos(50); // 눈금 간격을 설정한다. // 속성의 Tick Marks와 Auto Ticks가 True로 되어 있어야 한다. m_ctrSlider.SetTicFreq(10); // 키보드 커서키로 슬라이더를 움직일때의 증가 크기를 설정 m..
- Total
- Today
- Yesterday
- AWS
- database
- 안드로이드
- db
- Python
- driver
- it
- NDK
- C
- Quiz
- MFC
- linux
- Troubleshooting
- jni강좌
- 프로그래밍
- 음악
- 리눅스
- Visual C++
- winapi
- API
- kering
- java
- C++
- jni
- 드라이버
- algorithm
- android
- gcc
- Cloud
- source
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |