ウィンドウの背景 – プログラミング – Home

通知
すべてクリア

ウィンドウの背景


kamenrider
 kamenrider
(@kamenrider)
ゲスト
結合: 22年前
投稿: 20
Topic starter  

CformViewのウィンドウで、今は背景が灰色で味気ないので色を変えたり絵を書いたりしたりし
て飾りたいのですがやり方が分かりません。教えて下さい。


引用解決済
トピックタグ
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

BOOL CMyFormView::OnEraseBkGnd( CDC* pDC)
{
必要な処理;
return TRUE;
}


返信引用
MK
 MK
(@MK)
ゲスト
結合: 25年前
投稿: 66
 

Shimuraさんの名前を見つけたので覗いてみました。
質問からして、上記だけでは分からないと思いますので以下載せときます。

/////////////////////////////////////////////////////////////////////////////
// CKView クラスのメッセージ ハンドラ

BOOL CKView::OnEraseBkgnd(CDC* pDC)
{
  // ブラシを作成
CBrush backBrush(RGB(255, 128, 128));

// 新しいブラシを選択して 現在のブラシを保存
CBrush* pOldBrush = pDC->SelectObject(&backBrush);

// 現在のクリッピング領域の矩形を取得
CRect rect;
pDC->GetClipBox(&rect);

// 矩形を塗りつぶす
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);

// ブラシを元に戻す
pDC->SelectObject(pOldBrush);

return TRUE;

  return CView::OnEraseBkgnd(pDC);
}


返信引用
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

>Shimuraさんの名前を見つけたので覗いてみました。
ども。:-) > MKさん。

んじゃ、とりあえず、背景を白にするサンプルコード、書いときます。

BOOL CMyFormView::OnEraseBkGnd( CDC* pDC)
{
CRect Rect;
GetClientRect( &Rect); // クライアント領域の大きさを得る

CBrush cBrush;
cBrush.CreateStockObject( WHITE_BRUSH); // システム定義の白のブラシ
  
pDC->FillRect( &Rect, &cBrush); // 領域を塗りつぶす

return TRUE;
}

HBRUSH CMyFormView::OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hBrush = CFormView::OnCtlColor( pDC, pWnd, nCtlColor);

if ( nCtlColor == CTLCOLOR_STATIC)
{
// スタティックコントロールの背景も白にする。
pDC->SetBkMode( TRANSPARENT);
return reinterpret_cast<HBRUSH>( ::GetStockObject( WHITE_BRUSH));
}

return hBrush;
}


返信引用
Shimura
 Shimura
(@Shimura)
ゲスト
結合: 22年前
投稿: 36
 

>return reinterpret_cast<HBRUSH>(::GetStockObject( WHITE_BRUSH));
ミスった。X-)
背景を白のブラシで塗ってるのに、わざわざ白のブラシ返してどーする。>自分
キャストもミスってる。X-(

下が正解。

return static_cast< HBRUSH>( ::GetStockObject( HOLLOW_BRUSH));


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました