본문 바로가기
[MFC] C++ Switch Case에서 CString 사용 [MFC] C++ Switch Case에서 CString 사용 기본적으로 MFC에선 Switch문에서 CString을 사용할 수 없습니다. 정말 사용해야할 피치못할 상황이라면 조금 돌아가는 방법으로 MFC 스위치문에서 CString을 사용할 수 있죠. 관련 소스를 소개합니다. 우선, 아래처럼 스위치문에 필요한 키워드를 정의합니다. 12345#define STR_SWITCH(x) {CString switchval(x); if (false) {;} // Semicolon is necessary#define CASE(y) else if (switchval == y) {;#define DEFAULT else if (true) {;#define BREAK }#define END_SWITCH }Colored by .. 2017. 8. 27.
MFC, 동적 버튼 생성, 색을 입히고 클릭 이벤트 설정 MFC, 동적 버튼 생성, 색을 입히고 클릭 이벤트 설정 첨부 파일 데모 - Test_DynamicCreation_Button.exe 프로젝트 - Test_DynamicCreation_Button.zip MFC에서 동적으로 버튼을 생성하고 클릭 이벤트를 설정합니다. 동적 버튼이란 동적으로 색상을 변경하는 것을 의미합니다. 아래 그림처럼 색상이 다양합니다. 위의 첨부 파일을 다운 받으셔서 실행하시면 확인이 됩니다. 프로그램 개요 - 버튼의 동적 생성. - 버튼 클릭 시, 색상이 변하며 메시지 박스가 생성. 달랑 두 가지 기능이 있습니다. 버튼을 동적으로 생성하고 색을 입히고, 클릭 이벤트도 설정합니다. 우선, 아래와 같이 4개의 함수와 1개의 변수를 설정합니다. 123456virtual BOOL OnCom.. 2017. 7. 2.
MFC 문자 찾기 함수 Find(), ReverseFind() (문자열에서 문자 찾기) MFC 문자 찾기 함수 Find(), ReverseFind() (문자열에서 문자 찾기) MFC 문자 찾기 함수 Find(), ReverseFind() (문자열에서 문자 찾기) 문자열에서 원하는 문자를 찾으려면 Find와 ReverseFind함수를 사용하면 됩니다. 간단한 예제를 보죠. 1234567CString target("");char tok = '_';int index = 0; target = "MFC_cstring_example"; index = target.Find(tok);cs 찾기 성공 : 문자 위치 (인덱스) 반환찾기 실패 : -1 반환 7번 라인 : target 문자열에서 '_' 언더바를 찾아 인덱스를 반환합니다. 근데, 왼쪽, 즉 앞에서 찾는 게 아니라 뒤에서 찾고 싶다면? 그땐 Rev.. 2017. 6. 17.
MFC 엑셀 하이퍼링크 추가 소스 (excel library 예제) MFC 엑셀 하이퍼링크 추가 소스 (excel library 예제) 거두절미하고 MFC 엑셀 하이퍼링크 추가하는 소스부터 보시죠. Excel Library 예제 소스 중 마지막 45번 라인이 MFC 엑셀에서 실제 링크를 추가하는 항목입니다. 인자 1. 링크가 걸릴 시트 영역 인자 2. 엑셀 파일 이름 인자 3. 링크 명령어 인자 4. 기본값. 그냥 쓰세요. 인자 5. 링크가 걸릴 시트 이름 인자 1과 5가 조금 겹치는데 엄연히 따지면 ... 좀 다르죠? 시트 이름과 시트의 셀 영역이니깐요. MFC 엑셀 소스 소개합니다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445_Application app;Worksh.. 2017. 5. 25.
MFC OLEDB 연동 사용법, 서버 접속이 안될때 해결 MFC OLEDB 연동 사용법, 서버 접속이 안될때 해결 몇 가지 방법이 있습니다. 하나는 기본으로 생성된 쿼리문에 PASSWORD 항목을 넣는 것이고, 다른 하나는 Data Source 항목 뒤에 포트를 넣어주는 겁니다. 1. MFC OLEDB 쿼리에 PASSWORD 넣기새로 생성된 테이블.h 파일의 OpenDataSource() 함수를 보시면 접속 쿼리가 있습니다. 아래처럼 User ID 항목 뒤에 패스워드를 넣어주세요. L"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=ID; PASSWORD=pw; Initial Catalog..... 원래 데이터베이스 연결 테스트를 할 때는 패스워드도 넣어야 하는데, 어찌 된 일인지 쿼리문에선 이게 빠지네요. .. 2017. 5. 24.
MFC dll에서 다이얼로그 생성이 안 될때 (윈도우 Dialog) MFC dll에서 다이얼로그 생성이 안 될때 (윈도우 Dialog) MFC dll 파일로 다이얼로그 생성할 때 Create() 함수에서 에러가 발생하는 경우가 있습니다. 당연히 다이얼로그는 원하는 시점에도 생성되지 않고 그렇게 쭉~ 생성이 안 됩니다. 참 답답하죠. 거기에 대한 해결책입니다. 구성 속성 - 일반 MFC 사용 - 정적 라이브러리에서 MFC 사용구성 속성 - C/C++ - 코드 생성 - 런타임 라이브러리 - 다중 스레드 디버그 (/MTd) 이렇게 MFC dll 프로젝트 속성을 바꿔주면 됩니다. MFC dll 라이브러리 안에 포함된 다이얼로그를 띄우려면 이렇게 바꿔줘야 하는데, 기본적으로 다이얼로그 자체를 dll에 포함하는 게 썩 좋진 않아요. MFC dll에서 다이얼로그 생성이 안 될때 (윈.. 2017. 5. 16.
MFC COLORREF에서 RGB Alpha 변환 추출 방법 MFC COLORREF에서 RGB Alpha 변환 추출 방법 출처 - GDI Accessories and Tools: COLORREF [클릭] WIN32 API에서 제공되는 것으로 3개의 색상 값이 사용됩니다. 각각은 8비트로 Red, Green, Blue 순이 되겠습니다. MFC COLORREF RGB 추출 기초 Red76543210 Green76543210 Blue76543210 따라서, Red, Green, Blue는 0 ~ 255까지의 값을 가질 수 있습니다. 내부적으론 하나의 결과 값을 위해 아래와 같이 결합합니다. Color Value23222120191817161514131211109876543210BlueGreenRed RGB 값을 이용하면 16만 개 이상의 색상을 사용할 수 있다는 의미이.. 2017. 4. 27.
MFC 비트맵 리소스 추가, 대량 Bitmap 일괄 등록 방법 MFC 비트맵 리소스 추가, 대량 Bitmap 일괄 등록 방법 종종, 여러개의 비트맵 리소스 파일을 다른 프로젝트에서 옮겨올 경우가 있습니다. 이럴 경우 소스 코드를 건드려야 하는 상황이 발생할 수도 있어요. 아래의 사항은 다른 프로젝트에서 사용하던걸 옮겨올 때 사용하는 방법입니다. (저는 비트맵 리소스 120개를 옮겼었음) "프로젝트명.rc - 우클릭 - 코드 편집"을 눌러서 rc 소스를 열어서 아래 소스를 찾습니다. 1#ifdef APSTUDIO_INVOKEDcs 위의 코드 뒤쪽으로 아래 소스 삽입합니다(아래는 예). 비트맵 리소스 소스입니다. 1234// BitmapIDB_BMP_SLDR_THUMB BITMAP "res\\Sldr_Thumb.bmp"IDB_BMP_SLDR_BACK_BIG BITMAP.. 2017. 4. 26.
MFC BarChartCtrl 그래프 차트, GDI 오픈 소스 라이브러리 MFC가 지원하는 것이 거의 없어서 일일이 코딩해야 한다는 단점이 있습니다. 그런데, 이 포스트에서 소개하는 차트처럼, 누군가 구현해서 공개하니 참 좋네요. 이 차트의 소스를 실행하면 아래처럼 그라데이션이 들어간 막대기들을 확인할 수 있습니다. 『그리드, 라벨, 툴팁 등』 차트나 그래프들이 가져야할 기본 요소들은 다 구현이 되어 있습니다. 이걸 응용해서 원하는데로 수정해 사용하면 되겠네요. 어느 분이 만든건진 모르겠으나 여튼, 감사합니다. 누가 만들어서 배포해 주신건진 모르겠으나 고맙네요. 관련 글[MFC] BCGControlBar Chart Control 예제, RC 코드 수정MFC BCGControlBar Chart Control 설치 [GUI 프로그래밍]MFC 스크롤바 Scrollbar 다이얼로그에.. 2017. 4. 2.
MFC CString to double 변환 사용법 (atof, wtof, tstof) MFC CString to double 변환 사용법 (atof, wtof, tstof) MFC에서 CString을 double로 변환하는 방법입니다. 아래엔 형 변환이 이뤄지는 3가지 예가 있는데, 공통적으로 CString은 LPCTSTR과 const char*로 먼저 변환이 됩니다. 변환된 char형의 자료를 함수들이 double로 변환을 하게 됩니다. 참조 - How do I convert a CString to a double in C++? [클릭] Knowing this, you can use atof(): CString thestring("13.37");double d = atof(thestring)....or for Unicode builds, _wtof(): CString thestring(.. 2017. 3. 26.
MFC 다이얼로그 : 항상 위 설정 (Dialog 포커스 최상위 고정) MFC에서 특정 다이얼로그를 항상 위에 놓는 소스입니다. 다른 dialog 예제를 보면 SetWindowsPos()를 사용하는 경우도 있으나, 다른 창, 또는 다른 다이얼로그에 위치를 내주는 경우가 있어서 위의 소스가 사용하긴 더 쉽습니다. 아래 소스는 왼쪽 최상단을 기준으로 다이얼로그를 항상 위로 설정하는 방법입니다. 참조 사이트 - Developer Network : SetWindowsPos [클릭]void CMy600MVDlg::OnPaint(){ CPaintDC dc(this); // device context for painting CRect wndRect; SystemParametersInfo(SPI_GETWORKAREA, NULL, &wndRect, NULL); int nShow = this.. 2017. 3. 24.
MFC CArray 2차원 배열 예제 및 3가지 사용 방법 출처 - SimpleSamples.info : CArray [링크] MFC CArray 사용법아래는 CArray를 사용하는 간단한 예제로 2차원 배열로 선언한 예입니다. 이중 배열로 선언해 사용하기 위해선 typedef를 먼저 만들어야 합니다. 12typedef CArray CArrayType;cs 다음엔 아래와 같이 MFC CArrayType을 선언합니다. 1CArrayType Doubles;cs 그리고, 항목을 추가합니다. (D는 Double형 변수) 1Doubles.Add (D);cs 다시, 반복문으로 채워봅니다. 12345int n = Doubles.GetSize(); for (Index=0; Index 2017. 3. 7.