
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんばんは。
一つのCFormViewの中の右上と言う事でしょうか。
恐らく、OnEraseBkgnd()辺りが悪さをしているのではないでしょうか。
その他、座標計算が間違っている事も考えられます。
取り敢えずは、OnEraseBkgnd()を削って見ては如何でしょう。
以下はOnDraw()のみオーバーライドして確認しています。参考になれば。
void CMyFormView::OnDraw(CDC* pDC)
{
// TODO: ここに特定なコードを追加するか、もしくは基本クラスを呼び出してください。
RECT rc = {0};
//クライアント領域を取る
this->GetClientRect(&rc);
//座標を右上に設定
rc.left = rc.right / 2;
rc.bottom/= 2;
//緑色で塗ってみる
pDC->FillSolidRect(&rc, 0xff00);
}
この回答へのお礼
お礼日時:2009/08/10 22:55
ありがとうございます。
最初はOnDraw()の中で塗りつぶしてたんですけど、うまくいかないので、
OnEraseBkgnd()をオーバーライドしてみました。
4分割でうまくいかないので、2分割でやってみると、これはうまくいきました。
FillSolidRect()に渡すパラメータがおかしいのかなぁ。
何度も見直したんですけど。。。
ちなみに塗りつぶす順番は、左上→右上→左下→右下です。
もう少し調べてみます。
No.1
- 回答日時:
>InvalidateRect(NULL, TRUE)の後のOnEraseBkgnd()とOnDraw()で、
>FillSolidRect()で右上だけ塗りつぶしても色が変わりません。
InvalidateRect()で無効化したウィンドウはOnPaint()で描画します。(言い換えれば、InvalidateRect()するとOnPaint()が発生し、OnPaint()の処理を書き換えずにデフォルトの処理のままにすると、デフォルトの背景しか描画されず、OnPaint()以外で行った描画はすべて「無かった事」になります)
また、OnEraseBkgnd()は、ウィンドウをリサイズした際にしか呼ばれません。
さらに
http://www.bnote.net/sdk_mfc/mfc1.shtml
には
「SDIやMDIアプリケーションの描画処理は OnDraw() で行い(印刷や印刷プレビューも)。
ダイアログベースでは OnPaint()で描画処理を行うようです。 」
と書いてあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
win32api 画面のちらつき
-
画面リサイズ時のちらつきをな...
-
領域の塗りつぶし
-
panelのスクロール表示について
-
PCで「使用可能な場合はグラフ...
-
word
-
MFC DrawText 背景色とフォント
-
エディットコントロールを再描...
-
TextBoxに文字を書いても表示さ...
-
Form1 Load で実行されない。
-
Minecraft 統合版(PC)の描画距...
-
VC++プログラムをつかったBMP画...
-
c++ ダブルバッファリング、以...
-
Excel 2019 [オプション]の[リボンのユ...
-
Bitmapを動かすときのちらつき...
-
Visual Studio.Netで株価チャー...
-
最前面に無理やりフォームを持...
-
グラフの交点の求め方(Excel)
-
コンボボックス内の文字サイズ変更
-
ダイアログのスクロールバー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Minecraft 統合版(PC)の描画距...
-
[VB.net] DataGridViewの列ヘッ...
-
word
-
TextBoxに文字を書いても表示さ...
-
panelのスクロール表示について
-
google Colabでmatplotlibの描...
-
MFCでOnPaintのタイミング
-
CStaticコントロールの静的イメ...
-
VBAにGDI+を参照させる方法
-
Form1 Load で実行されない。
-
InvalidateRectの使い方について
-
CScrollViewの使用方法について
-
GDI+について
-
VC++プログラムをつかったBMP画...
-
ウインドウサイズを変更しても...
-
VB6,リストボックスの特定行の...
-
タブをオーナードローすると、...
-
ビットマップを表示させる(MFC)
-
UpdateData( FALSE); による文...
-
C++にて、塗りつぶされた円を描...
おすすめ情報