MFC
dialog static text control의 caption 한글 깨짐
Resource View > XXXX.rc > Dialog > IDD_XXXX_DIALOG > Properties > Language 를 한국어로 변경
dialog static control 배경 투명하게 만들기
dialog에서 WM_CTLCOLOR 메세지 함수(OnCtlColor) 생성후 코드 추가
HBRUSH CSearchFileDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch (nCtlColor)
{
case CTLCOLOR_STATIC:
if (pWnd->GetDlgCtrlID() == IDC_STATIC1)
{
//pDC->SetTextColor(RGB(255, 0, 0));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
break;
}
return hbr;
}
출처 : http://sehwa4444.egloos.com/2738921
dialog check/radio control 배경 투명하게 만들기 (XP Theme 버그)
1. dialog에서 WM_CTLCOLOR 메세지 함수(OnCtlColor) 생성후 코드 추가
HBRUSH CSearchFileDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch (nCtlColor)
{
case CTLCOLOR_STATIC:
if (pWnd->GetDlgCtrlID() == IDC_CHECK_SUB)
{
//pDC->SetTextColor(RGB(255, 0, 0));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
break;
}
return hbr;
}
여기까지 하면 check/radio control이 검정색으로 나옴.
다음 코드 추가하여 XP Theme 해제.
2. SetWindowTheme() 함수 사용을 위한 library 추가
#pragma comment(lib, "UxTheme.lib")
3. SetWindowTheme() 호출
Dialog클래스의 OnInitDialog()에 다음 코드 추가
HWND hCheckSub;
GetDlgItem(IDC_CHECK_SUB, &hCheckSub);
SetWindowTheme(hCheckSub, L"", L"");
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=688631&ref=688631
CToolBar 툴바 추가
1. 툴바 리소스 추가
다른 프로젝트의 툴바 리소스 추가시 작업중인 Visual Studio에서
새로운 툴바 리소스 추가 > 복사할 리소스 파일 열기 > 아이콘 하나씩 복사
혹은 리소스 파일(.rc)에서 직접 복사
2. MainFrm.h에 CToolBar 변수 선언
CToolBar m_wndToolBar;
3. CMainFrame::OnCreate()에 생성 코드 작성
//CToolBar
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
//| CBRS_GRIPPER //도킹기능
| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)
|| !m_wndToolBar.LoadToolBar(IDR_TOOLBAR))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
//방법1. 툴바 붙임
//DockControlBar(&m_wndToolBar, AFX_IDW_DOCKBAR_TOP); //위쪽에 붙임
//방법2. 툴바 위치 조정하여 붙임
CRect toolRect;
this->RecalcLayout(); //현재 Client 영역 구함
m_wndToolBar.GetWindowRect(&toolRect); //툴바 영역 저장
toolRect.left+=100; //영역 조정
DockControlBar(&m_wndToolBar,AFX_IDW_DOCKBAR_TOP,&toolRect); //해당 영역으로 붙임
MFC 메뉴 제거, 타이틀 제거, 캡션 설정
CMainFrame::PreCreateWindow() 에서
cs.hMenu = NULL; //메뉴 제거
cs.style &= ~FWS_ADDTOTITLE; //타이틀 제거
this->SetTitle(_T("마음의 소리")); //캡션 설정
UTF-8 -> UNICODE 변환
CString ConvertUTF8toUnicode(char* ansiStr)
{
int nSize = MultiByteToWideChar(CP_UTF8, 0, ansiStr , -1 , 0 , 0);
TCHAR* uniStr = new TCHAR[nSize+1];
MultiByteToWideChar(CP_UTF8, 0, ansiStr , -1 , uniStr, nSize);
uniStr[nSize] = '\0';
CString str(uniStr);
delete uniStr;
return str;
return str;
}
'C++' 카테고리의 다른 글
CRT 이야기 [펌] (0) | 2011.02.14 |
---|---|
IPC (inter-process communication) (0) | 2011.02.03 |
LocalAlloc, GlobalAlloc, HeapAlloc, VirtualAlloc (0) | 2011.02.03 |
파일 핸들링 API (0) | 2011.02.03 |
OLEDB (0) | 2011.01.24 |
COM (0) | 2011.01.24 |
MFC 기초 정리 (0) | 2011.01.21 |
파일 비동기 IO 조작 (Async IO) (0) | 2011.01.18 |