본문 바로가기

MFC4

GetWindowRect, GetClientRect, ScreenToClient GetWindowRect 윈도우의 현재 위치와 크기를 구해준다. (left, top)은 윈도우의 현재 좌상단 위치를 나타내는데 이 좌표는 전체 화면을 기준으로 한 좌표이다. (right, bottom)은 윈도우의 우하단 위치를 나타내며 역시 전체 화면을 기준으로 한 좌표이다. 윈도우의 현재 크기(폭과 높이)를 구하고 싶으면 right-left, bottom-top을 계산하면 된다. GetClientRect 윈도우의 작업영역 크기를 계산해 준다. 크기만 계산해 주기 때문에 좌상단(left, top)값은 항상 0,0이며 우하단 좌표(right, bottom)가 곧 윈도우의 크기를 나타낸다. 작업영역이란 윈도우의 타이틀바, 스크롤 바, 경계선, 메뉴 등을 제외한 영역이며 윈도우가 그리기를 하는 대상 영역이다 .. 2008. 12. 4.
C++ 문자열 변환 TCHAR<->CString char->TCHAR CString->char* TCHAR --> CString CStirng sSring; TCHAR sTString = _T("가나다"); sString.Format(_T(%s), sTString); CString --> TCHAR TCHAR * des = new TCHAR[sString.GetLength() + 1]; // 1은 NULL을 위한 여유공간 _tcscpy(des, NowSaving.GetBuffer(0)); String --> UTF - 8 char buffer[20]; WCHAR Unicode[20]; char UTF8code[20]; int nUnicodeSize = MultiByteToWideChar(CP_ACP, 0, lpID, strlen(lpID), Unicode, sizeof(Unicode)); int n.. 2008. 11. 26.
C++ 해상도 변경 말 그대로 프로그래밍 상에서 현재의 해상도를 원하는데로 변경할 수 있습니다. 전역함수로 ChangeDisplaySettings 라는 함수가 있더군요. 암데서나 불러 쓸수 있죠. 이전 해상도를 보관했다가 다시 복귀할 수 있도록 해보겠습니다. 현재의 해상도를 얻어오는 함수는 GetSystemMetrics 입니다. 먼저 현재의 해상도를 저장할 변수를 선언합니다. class CMainFrame : public CMDIFrameWnd { /// 생략 // Attributes public: int screenY; int screenX; /// 생략 } 초기화는 요렇게.. // 현재 해상도 보관 screenX = GetSystemMetrics(SM_CXSCREEN) ; screenY = GetSystemMetrics.. 2008. 11. 25.
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 brushname(RGB(red,green,blue)); //브러쉬 생성 CBrush *oldBrush=pDC->Select.. 2008. 11. 7.