1

PocketPC2003デバイス用のアプリケーションを作成しています。その中には、さまざまなテキスト情報が表示されるダイアログがあります。情報は、各部分がリソースファイルでLTEXTとして定義された独自のラベル内に存在するように分離されています。

今の私の問題は、現時点では、すべてのテキストラベルが同じフォントとスタイル(通常または単純、つまり太字または斜体ではない)を持っていることです。太字で設定してほしい。リソースファイルでフォントを太字に設定できることは知っていますが、それによってすべてのラベルのスタイルが設定されます。

これをどのように達成しますか?Windowsの「バージョン情報」画面で使用されているのを見てきたので、それが可能であることがわかりました。Win32APIを直接使用してC++でプログラムを作成したので(リソースファイルを使用した特定のダイアログを除く)、同じ言語とアプローチで回答が得られれば幸いです。

ありがとう。

4

1 に答える 1

0

リソースエディタで、静的テキストアイテムを編集し、そのコントロールIDを一意の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;

あなたはPocketPC2003用に開発していますが、どのボタンスタイルが利用できるのかわかりません。このページはもちろんデスクトップXPを指します。ただし、ダイアログのボタンがフラットグレーの95esqボタンでない場合は、ダイアログの背景がプレーングレーでない場合にテキストの背景が正しく描画されるため、0を返す方が適切な場合があります。

プレビジュアルスタイルのリターンが0の場合、システムはDCをリセットするため、どのリターンが適切かを知ることが重要です。

于 2010-08-20T10:35:09.530 に答える