2010-08-20 6 views
1

Pocket PC 2003 장치 용 응용 프로그램을 작성하고 있습니다. 여기에는 다양한 텍스트 정보가 표시되는 대화 상자가 있습니다. 정보는 분리되어 각 부분은 리소스 파일에서 LTEXT로 정의 된 자체 레이블 안에 있습니다.정적 레이블의 텍스트를 굵게 스타일로 설정하는 방법은 무엇입니까?

이제 내 문제는 모든 텍스트 lables는 동일한 글꼴과 스타일 (보통 또는 단순, 즉 굵게 또는 기울임 꼴이 아닙니다)입니다. 나는 하나를 과감하게 설정하고 싶습니다. 리소스 파일에서 글꼴을 굵은 글꼴로 설정할 수 있지만 그 스타일은 모두 레이블로 설정된다는 것을 알고 있습니다.

어떻게 달성하나요? Windows '정보'화면에서 사용되는 것을 보았으므로 가능한 것으로 알고 있습니다. 저는 Win32 API를 사용하여 C++로 프로그램을 작성했습니다 (리소스 파일을 사용한 특정 대화 상자 제외). 그래서 대답이 동일한 언어와 접근 방식으로 주어지면 감사하겠습니다.

감사합니다.

답변

1

리소스 편집기에서 정적 텍스트 항목을 편집하고 해당 컨트롤 ID를 고유 한 IDC_BOLD로 변경하십시오.

컨트롤을 호스팅하는 대화 상자에 대한 DialogProc에서는, WM_CTLCOLORSTATIC 처리기 추가 :

case WM_CTLCOLORSTATIC: 
    HDC hdc; 
    HWND hwndCtl; 
    hwndCtl = (HWND) lParam; 
    hdc = (HDC) wParam; 

    if(GetWindowLong(hwndClt, GWL_ID) == IDC_BOLD) 
    { 
    SetBkMode(hdc,TRANSPARENT); 
    SetTextColor(hdc,RGB(0xff,0,0)); // turn the text red for fun :) 
    SelectObject(hdc,hBoldFont);  // but you want this... 
    return (INT_PTR)GetSysColorBrush(COLOR_BTNFACE); 
    //return 0L; // if visual themes are enabled (common controls 6) then 0 is better. 
    } 
    // default processing 
    return 0; 

당신은 포켓 PC 2003에 대한 개발을, 내가 사용할 수있는 버튼 스타일 모른다 . This Page은 물론 데스크톱 XP를 말합니다. 그러나 대화 상자의 단추가 평면 회색 95esq 단추가 아닌 경우 대화 상자 배경이 일반 회색이 아닌 경우 텍스트 배경을 올바르게 그리기 때문에 0을 반환하는 것이 더 적절할 수 있습니다.

사전 시각적 스타일 0을 반환하면 시스템에서 DC를 재설정하므로 어떤 반환이 적절한 지 알 수 있습니다.

+0

아 물론. catching-a-message 방식에 대해 생각하지 않았습니다. 그러나 이것이 내 첫 번째 Windows 응용 프로그램이므로 나는 용서받을 수 있다고 생각합니다. ^^ 정확한 반환 값을 결정하기 위해 버튼에 대해 말하는 것 같네요, 네? 또한 수정되었거나 굵은 체로 설정된 시스템 글꼴에 대한 글꼴 핸들을 생성하기위한 코드를 포함시켜주십시오. 나는 글꼴 API에 익숙하지 않다 ... – gablin

+0

이 튜토리얼을 통해 대담한 시스템 글꼴을 만드는 방법을 알아 냈다. http://windows-programming.suite101.com/article.cfm/win32_easy_font_handling_tutorial 크리스 베케 도와주세요! – gablin

관련 문제