현재 다루고 있는 프로그램은 캐릭터 표현에 있어서 멀티 바이트를 사용한다. 따라서 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..
MFC에서 보면 아래와 같은 소스 코드가 있다. #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // _DEBUG 이것에 대해 엄청난 궁금증이 있었지만 그려러니 하고 넘어갔었다. 그러던 중 우연치않게 이 용도를 알았다. 프로그래밍하던중 종료시에 "Detected memory leaks!" 이란 메시지를 우연찮게 발견했다. 아무래도 어디선가 new를 했다 delete 를 하지 못해 구천에서 떠도는 원혼의 소리 같은 필이팍! -_-; 하지만 어디서 나오는지 도저히 알 방법이 없었다. 힌트라도 주면 디버깅을 하겠지만 이건 뭐... 완존히... -_-;; 그래서 나름대로 사이트를 뒤적거리던..
이건 Visual Studio 2005 의 버그인듯 싶다. VS에서 DLL을 컴파일 하고 실행 할려면 Executable file을 아래와 같이 설정해 줘야 한다. 아마 한글로는 [디버깅 세션에 사용할 실행 파일의 경로를 지정하십시오] 쯤으로 뜨는 듯 싶다. 여튼 여기서 Executable file name의 path를 dll이 포함될 exe로 지정하면 좋은데.. 실수로 다른 파일을 지정했더니 도저히 다시 원래의 exe로 못 돌이키겠더라... No Debugging Information [디버깅 정보 없음] 이라면서 Debugging information for '**.exe' cannot be found or does not match. No symbols loaded. Do you want to co..
우선 DLL만드는건 아래처럼 하면 됨. empty project에 체크하지 말것. 체크하지 말아야지 DllMain까지 자동으로 만들어준다. 그리고 이제 아무 것도 건들지 말고 그냥 예제 써보자면 calc.c랑 calc.h를 만들고 각각 이렇게 입력한다. //calc.h extern "C" __declspec(dllexport) int add(int lhs, int rhs); //calc.c #include "stdafx.h" //요건 상황에 따라 써야할때도 있고 안써도 될 때도 있음. #include "calc.h" extern "C" __declspec(dllexport) int add(int lhs, int rhs) { return lhs+rhs; } 그리고 컴파일 하면 DLL파일과 lib 파일이 나..
CButton을 상속 받은 CMonitorButton을 하나 만들어서 버튼을 동적 생성 하기 위한 프로그램을 구현했다. CMonitorButton에선 오너 드로를 위해 DrawItem을 호출했고, OnBnClicked를 오버라이딩해서 자신의 nID값을 nSelectedMonitor 변수에 리턴해주었다. CMonitorButton을 생성하기 위해 다음과 같은 코드를 구현하였는데 for(int i = 0;i Create(strMonitorNum,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,rtMonitor[i], this,i); } 마지막 인자인nI..
- Total
- Today
- Yesterday
- 프로그래밍
- jni
- it
- gcc
- source
- android
- db
- Troubleshooting
- algorithm
- C++
- Quiz
- AWS
- Visual C++
- java
- 안드로이드
- API
- 음악
- NDK
- kering
- linux
- 리눅스
- winapi
- driver
- jni강좌
- Python
- Cloud
- database
- 드라이버
- C
- MFC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |