0

私はwin32apiプログラミングに非常に慣れていません。3つの質問があります。

親ウィンドウの背景色を変更する方法。私はそれを次のようにやりましたが、うまくいきません

wClass.hbrBackground=(HBRUSH)(RGB(255,255,255));

2番目の質問は、次のようにウィンドウにテキストを追加するために使用します。テキストは太字で、背景色が付いています。テキストを通常の背景色なしにしたい。

PAINTSTRUCT ps;
    HDC hDC;
    char szBuffer[]="Hello, World!";
    hDC=BeginPaint(hWnd,&ps);
    TextOut(hDC,10,10,szBuffer,strlen(szBuffer));

3番目の質問は、親ウィンドウにグループボックスを追加する方法です。インターネットで検索しましたが、リソースを使ってダイアログボックスにグループボックスを追加する方法を説明しました。pls誰かがこれらの問題で私を助けてくれます...

4

2 に答える 2

1
  1. > wClass.hbrBackground =(HBRUSH)(RGB(255,255,255));

クラス構造には、色の値自体ではなく、ブラシのハンドルが必要だと思います(ただし、わかりません)。このようなもの:

wClass.hbrBackground=(HBRUSH)(CreateSolidBrush(RGB(255,255,255)));
  1. テキストの背景を透明にするには、特別なWinAPI関数を使用しますSetBkMode(TRANSPARENT)。(ああ、その名前を覚えておくのに少し時間をかけてください:))。

  2. ほとんどのタスクでは、ダイアログリソースを作成し、通常のウィンドウのように使用して(smthを描画したり、描画する単純なウィンドウを配置したりするなど)、通常のウィンドウを使用してダイアログコントロールを追加するよりもはるかに優れています。WinForms、次にWPF以降、これは一般的な方法になりました。ウィンドウ内のすべてのウィンドウは、コントロールを追加したり、描画したりできる「フォーム」です。

于 2012-11-01T23:03:18.510 に答える
0

Microsoft がクライアント領域をクリアするコードを挿入したかどうかを思い出そうとしています。少なくとも、クライアント rect を取得し、それを使用して drawRect() コマンドをクライアント領域全体に適用できることはわかっています。背景を消去するコマンドをトラップする必要がある場合もあります

于 2012-11-01T17:45:43.230 に答える