Development 썸네일형 리스트형 CString으로 문자열 리소스를 이용하자 문자열을 스트링 테이블에 담아놓고 사용하는게 좋다고들 말하지만 쓰기가 귀찮아서 그냥 소스에 적는 경우가 많습니다.하지만 CString에서는 스트링 테이블 사용을 쉽게 하기 위한 좋은 방법을 많이 제공합니다. 적극 활용하시기 바랍니다.혹시 압니까? 프로그램이 평가가 좋아서 수출하게 됐는데 CPP코드 죄다 뒤져가면서 "아, 여기도 문자열이 있다" "아, 100개쯤 더 있는데 어디지..." 라고 하면서 밤을 새게 될지.미리 스트링 테이블에 넣어뒀다면. "아저씨, 이거 일본어로 번역해주세요." 라고 하면서 번역 잘하는 사람에게 넘기면 끝이란 것이죠. 음하하!1. 초기화123CString strError((LPCSTR)IDS_ERROR_FAILED); strError += "너 바보?"; WriteLog(strE.. 더보기 문자열 함수 정리 1. stpcpy원형 : char *stpcpy( char *dest, char *src );헤더 : string.h기능 : 문자열 src를 문자배열 dest로 복사한다. dest 의 길이가 src 보다 작은 경우 dest 뒤의 인접 데이터가 파괴된다.리턴 : dest + strlen(src)의 번지를 리턴 2. strcat원형 : char *strcat( char *dest, const char *src );헤더 : string.h기능 : 문자열끼리 연결한다. dest의 널문자 위치에 src가 붙는다. dest의 길이가 ( dest 문자열 + src 문자열 ) 길이보다 작을 경우 인접 데이터가 파괴된다.리턴 : dest의 번지가 리턴 3. strchr원형 : char *strchr( const *src.. 더보기 CString으로 문자열 리소스를 사용하자 문자열을 스트링 테이블에 담아놓고 사용하는게 좋다고들 말하지만 쓰기가 귀찮아서 그냥 소스에 적는 경우가 많습니다. 하지만 CString에서는 스트링 테이블 사용을 쉽게 하기 위한 좋은 방법을 많이 제공합니다. 적극 활용하시기 바랍니다. 혹시 압니까? 프로그램이 평가가 좋아서 수출하게 됐는데 CPP코드 죄다 뒤져가면서 "아, 여기도 문자열이 있다" "아, 100개쯤 더 있는데 어디지..." 라고 하면서 밤을 세게 될지. 미리 스트링 테이블에 넣어뒀다면. "아저씨, 이거 일본어로 번역해주세요." 라고 하면서 번역 잘하는 사람에게 넘기면 끝이란 것이죠. 음하하! 1. 초기화 CString strError((LPCSTR)IDS_ERROR_FAILED); strError += "너 바보?"; WriteLog(st.. 더보기 CString Method 설명 CString::GetLength이 메소드는 CString 객체 안에 있는 캐릭터의 count를 반환한다.이 count는 종료null문자를 포함하지 않는다.// example for CString::GetLength CString s( "abcdef" ); ASSERT( s.GetLength() == 6 ); CString::IsEmpty이 메소드는 CString 객체가 비어있는지를 결정한다.// example for CString::IsEmpty CString s; ASSERT( s.IsEmpty() ); CString::Empty이 메소드는 CString객체를 비어있고 free memory로 만든다.// example for CString::Empty CString s( "abc" ); s.Empty.. 더보기 VC++에서 MFC나 #import를 사용하지 않고 Excel을 자동화하는 방법 인터넷에서 ExcelLib라는 소스를 구했다. URL은 http://getroot.tistory.com/entry/Excel-Automation-Library 이곳에 가면 해당 소스를 무료로 오픈하여 사용할 수 있도록 했고, 사용법과 약간의 덧글들도 달려있다. 이 소스를 자세히 뜯어보니 http://support.microsoft.com/kb/216686/ko 여기의 내용을 참고하여 만들어진 듯하다. 인터넷을 좀더 찾아보니 Excel Automation에 관련된 소스가 몇가 있어, 분석을 했지만 ExcelLib가 내가 사용하는데 무리가 없어보여 선택했다. 하지만, 프로젝트를 하면서 이 소스만 가지고 작업이 불가능하여 몇가지 기능(이미지 삽입, 시트 복사 등)을 추가했다. 이 소스를 사용하는데 나름 중요한.. 더보기 주석을 이용한 프로그램 매뉴얼을 만들어보자 프로그램 매뉴얼을 만드는건 상당히 귀찮은 작업중에 하나다.특히 각 클래스/프로퍼티/메소드에 대한 설명은 더욱더 귀찮게 한다. 왜냐~ 사용법을 일일히 만들어줘야 하기 때문이다.소스 코딩을 하다보면 대부분 주석을 달지 않는 개발자들이 많다. 그러다 보니 나중에 매뉴얼을 작성할려고 하면 엄청난 노가다를 필요로 하게 되고, 또 해당 메소드가 왜 만들어졌는지 기억을 못하는 경우가 종종있다.이건 개발자의 습관에 따라 다르기 때문에 우선 소스에 주석을 잘 다는걸 전재로 하겠다.우선 자바는 이클립스라는 강력한 IDE툴이 있다. 이거 완전 물건이다. 아직 사용법을 전부 알지 못하지만 알면 알수록 개발하는데 완전 편리한 기능들이 많이 있다.그럼 주석을 다는 방법부터 차근차근 설명하겠다.이클립스에서 Windows > Pre.. 더보기 DataGridView의 헤더를 멀티로 만들어보자 이 포스트는 외국 사이트를 기초로 해서 만들었다. 어딘지 기억이 잘 안난다.. 구글링으로 찾아보면 나올것이다.DataGridView의 헤더는 하나밖에 안된다. 일반 리스트로 보는데는 문제가 없지만 업무용으로 만들다 보면 내용을 그룹핑해야 할 상황이 나오기도 하는데 그럴때 하나로 밖에 안되면 UI를 만드는데 상당히 안좋은 모습이 된다.이걸 다중으로 그룹핑해서 보여주면 직관적으로 볼 수 있는 점이 있기에 포스트를 해본다.간단하게 설명하면 약간의 트릭이다. DataGridView의 Paint를 사용해서 그룹핑의 효과를 만들어 내는게 요점이다.1. 그럼 먼저 다음과 C#의 도구상에서 DataGridView를 하나를 선택한다. 2. DataGridView의 속성중 ColumnHeadersHeightSizeMode.. 더보기 DataGridView헤더에 CheckBox를 달자 요새는 리스트를 사용할때 왼쪽에 다중 선택을 위해 CheckBox를 두는 경우가 많은데, CheckBox를 사용하면서 불편한 점이 하나있다. 목록에서 대상 개수가 많은경우 그걸 전부 클릭할려면 상당히 귀찮은 작업이 된다. 이를 보완하기 위해 보통 버튼을 만들어 전체선택/전체해제등을 만드는 경우가 있다.. 이 또한 화면의 레이아웃을 고려할때 조금은 안 이뻐 보일수 있다.. C#에서 제공하는 DataGridView를 사용하면 컬럼의 종류중에 CheckBoxColumn이 있는데 이건 헤더에는 CheckBox가 보이질 않는다.. 앞에서 말한 디자인 레이아웃을 고려 안한다면 그냥 버튼을 만들어서 해도 무방하다. 여기서는 헤더에 CheckBox를 만들어 넣으므로서 디자인 레이아웃과 전체선택/전체해제를 할 수 있도록.. 더보기 Tab_Box에 이름을 달아보자 먼저 model과 plug-in을 사용하는 방법을 알아야 사용이 가능하다는 점을 먼저 말해두겠다. 혹시나 하는 맘에 model과 plug-in을 사용하는 방법을 간단하게 설명을 하면, 1. XXX_gui.magik - gui가 뒤에 붙는넘은 :model에서 상속을 받아서 사용한다.(클래스 이름은 내가 그냥 정의했다. 꼭 따르지 않아도 된다.) - 이넘은 주로 화면을 꾸미는 GUI를 담당하는 넘이라고 생각하면 아~~~주 좋다. - GUI를 담당하니 화면을 꾸며야겠다. 그럼 이넘을 꾸미기 위해서는 activate_in() 메소드를 반드시 사용해야 한다. Activate_in() 메소는 Container를 파라메터로 받는다. 2. XXX_plugin.magik - Plugin이 뒤에 붙는넘은 :plugin에서.. 더보기 나의 데이터셋(Dataset) 생성기 항상 캠브리지에있는 빌드를 통해 데이터베이스를 생성하고 오픈이미지까지 생성하여 사용하는데 완전 빈깡통 데이터베이스를 만들어 볼까 하는 맘에 도움말을 따라 데이터베이스를생성해봤다. 여러가지 옵션이 있는데 우선은 완전 기본 데이터 셋을 생성했다 1. 기본 이미지를구동시키란다. 그래서, Emacs를 구동하여 Smallworld 4.2.0의 Product에 있는 기본 swaf이미지를 구동시켰다 2. 이제는 Create_database()를 하란다. 그래서, create_database(“C:\MyNewProject\ds”)를 했더니 우장창 에러를 뱉어 낸다. 우쒸 에러의 핵심은 이거다. “Datastore file ace.ds cannot be accessed in directory C:\MYNewProject.. 더보기 이전 1 2 다음