본문 바로가기

김탱 개발자

(48)
유니코드를 멀티바이트로 변환 아직 많은 개발을 하지 않았지만 국내에서만 사용하는 프로그램이 아니라면 유니코드로 개발하는것이 정말 편하다. 근데, 외부 라이브러리를 써야되는 경우 char* 로 받는 경우가 굉장히 많기 때문에 부득이 멀티바이트로 변환해야하는 경우가 생긴다. http://eslife.tistory.com/253 위 블로그에서 유니코드에 대해 설명을 잘해놓아서 링크함. 검색해보면 여러가지 방법이 많이 있지만, WideCharToMultiByte()가 정확하다. CString strPath; strPath.Format(L"%s\\%s",path,m_arrPath->GetAt(i)); wchar_t* wchar_str; char* char_str; int char_str_len; wchar_str = strPath.GetBu..
간단하게 Excel 읽고 쓰기 (BasicExcel 사용) http://www.codeproject.com/Articles/13852/BasicExcel-A-Class-to-Read-and-Write-to-Microsoft MFC에서 Excel의 모든기능을 사용하기위해서는 Excel Automation을 사용해야하며 관련 드라이버와 배포가 필요하다. BasicExcel 클래스는 이름 그대로 기본적인 Sheet를 읽고 쓰기의 기능만 지원하고 장점은 배포 시 추가내용이 없다는 점. 다만 최신 엑셀파일은 지원하지않고 2003 엑셀 파일(Microsoft Office Excel 97-2003 워크시트(.xls)) 을 지원하기 때문에 제약이 있다. 알고 있기로는 엑셀이 한글명일 경우 안된다고 하는데 테스트는 안해보았다. 사용법은 해당 Page에 잘 나와 있으나, 내가 테..
VB6.0 호환 DLL 제작 우선 Visual Basic 6.0의 데이터 형식을 알아야된다. 저장용량과 범위를 체크해서, Visual Studio의 데이터형과 맞는 값을 보내주거나 받으면 된다. 빈프로젝트에서 시작해도 되지만 VS는 친절하게 DLL 제작에 필요한 프로젝트를 지원한다. Win32 프로젝트 -> DLL -> 마침 그러면 소스파일에 dllmain.cpp , dlltest.cpp, stdafx.cpp 와 헤더파일에 dlltest.h, stdafx.h, targetver.h 요렇게 생긴다 (dlltest는 프로젝트명) dlltest.h에다가 함수를 정의한다. VB에서 String형은 char* 형이므로 문자열을 보내고, 나머지는 구조체로 보낸다. #ifdef DLLTEST_EXPORTS #define DLL_TEST_API ..
CFile 클래스사용 csv파일로 저장 (유니코드) 저장 CFile file; CString str,str2; USHORT nShort = 0xfeff;str2.Format(L"%s\t%s\t%s\t%s\t%s\n",m_List1.GetItemText(0,0),m_List1.GetItemText(0,1),m_List1.GetItemText(0,2),m_List1.GetItemText(0,3),m_List1.GetItemText(0,4)); str.Format(L"제품\t단가\t테스트1\t테스트2\t테스트3\n"); if(file.Open(L"test.csv",CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)){ file.Write(&nShort,2);file.Write(str, str.GetLength..
spreadsheet activex control https://www.microsoft.com/ko-KR/download/details.aspx?id=22276
MFC 관련 팁들 아래 항목만 다 알면 코딩하는데 많은 도움이 되리라 생각됩니다.저도 사실 전부 모릅니다 ㅡㅡ;;너무 많은 걸~~ 1. DC얻기 CClientDC dc(this); 2. Client 영역 구하기 GetClientRect(&rect); WM_SIZE 메시지발생후 cx,cy 사용 3. 문자열 사각형안에 그리기 pDC->DrawText(문자열,사각형,Style); Style: DT_BOTTOM - 문자열을 사각형 맨아래줄에배열 반드시 DT_SINGLELINE과 함께사용 DT_CENTER - 문자열을 가로중앙에 배치 DT_VCENTER - 문자열을 세로중앙에 배치 DT_LEFT,RIGHT - 문자열을 좌,우로 배치 DT_SINGLELINE - 문자열을 한줄로만 쓴다 4. Brush 사용법 CBrush brushn..
컴파일 옵션 (/MT /MD 등등) opencv 라이브러리와 다른 라이브러리 2개를 같이 사용하는 DLL을 만들게 되었는데 DLL제작하는 프로젝트와 DLL 을 테스트하는 프로젝트에서 모두 "~정의가 이미 되었습니다" 라는 에러를 발생하였다.찾아보았더니, 링크버전이 다를 경우 이런 에러가 발생하게 되었고 모든 프로젝트의 컴파일 옵션을 /MT로변경하였더니 잘 작동이 되었다.DLL 을 만드는것이기 때문에 당연히 /MD로 컴파일을 하려고했으나 외부 라이브러리가 /MT 로 제작된것이라면 이런 에러가 발생한다. 따라서 하나로 통일하는것이 중요하다.또한 굳이 /MD로 컴파일 안하더라도 DLL 제작에 문제는 없다. 추가적으로, 프로그램와 라이브러리가 런타입 옵션이 다른 경우에 정상적으로 빌드가 되는 경우가 있는데,그냥 사용할 경우 사용 도중 프로그램이 ..
DLL 제작 1.1Basis 1.1.1Features내부적으로 C++ 클래스를 사용할 수 있고, C 함수 Wrapper만을 Export 할 수 있다. 따라서 내부적인 C++ Class에 대한 변경은 DLL의 호출에 영향을 주지 않는다.MFC를 사용할 수 없으며, 별도의 MFC Library가 필요없다.DLL을 사용하는 Client는 DLL 호출을 지원하는 어떠한 Language로 작성될 수 있다.AppWizard를 이용하여 자동으로 Project를 생성할 수 있다. 1.1.2 Function ExportDLL 내에서 정의된 Function을 export하기 위해서는 “__declspec(dllexport)” 를 사용한다. “__declspec”은 MS만의 C, C++의 확장된 syntax로서, 확장된 storage-..