MFC 클래스 내부에 선언한 static 멤버 변수를 사용하려 하면 어떻게 해야할까? 일단 아무 생각 없이 선언해 놓고 사용을 하면 컴파일러는 링크 에러를 뿌려댄다. 그렇다면 어떻게 해야할까 클래스 헤더에 static int n; 이라는 값을 선언했다면 cpp 상단부에 다음과 같이 해줘야 한다. 변수형 클래스이름::변수이름 = 초기값; 예를 들어 클래스 이름이 Student고 int로 선언된 변수 이름이 TeacherName이면 cpp의 상단에 CString Student::TeacherName = _T(""); 다른 경우 int Student::nGroupNo = 0; 이런식으로 초기값을 주어야 한다. 아 이런걸 보면 참 Java가 쓰기 편한거 같다 -.-;;
사용할 프로그램은 멀티 바이트로 작성하였고, DLL은 유니코드로 작성 하였는데, 프로그램에서 DLL을 불러서 사용하려고 하니 에러가 났다. 에러 내용은 다음과 같았다. error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall StartCapture(class ATL::CStringT)" (__imp_?StartCapture@@QAEHV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z) 2>D:\실행파일.exe : fatal error LNK1120: 1 unresolved externals CString이 유니코드와 멀티바이트 일때 각각 다..
아래 내용이 일부 틀려서 정정합니다. 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..
///////////////////////////////////////////////////////////////////////////// UNICODE PRIVATE FAQ 0.1 (2004.08.03) by redhotfrog@naver.com ---------------------------------------------------------------------------- A000 : character set, code set, encoding, codepage가 뭡니까? A001 : MBCS, SBCS, DBCS가 뭡니까? A002 : i18n, l10n이 뭡니까? A003 : 유니코드가 뭡니까? A004 : 유니코드 UCS2에서 UTF8로 변환은 어떻게 하나요? A005 : windows ..
- Total
- Today
- Yesterday
- NDK
- Quiz
- C++
- algorithm
- 드라이버
- Python
- Cloud
- API
- 프로그래밍
- source
- database
- linux
- jni
- db
- Visual C++
- java
- kering
- gcc
- driver
- AWS
- 안드로이드
- 음악
- jni강좌
- winapi
- Troubleshooting
- MFC
- android
- it
- 리눅스
- C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |