![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
ダイアログに置いたコントロール上に描画するとのことだと
一時的な描画で良ければコントロールのDCに対して
CDC* pdc = GetDlgItem(IDC_STATICXX)->GetDC();
もしくはメンバ変数設定していた場合、
CDC* pdc = m_sta1.GetDC();
~
・・・ん、この際片っ端から全部書くと、メンバ変数の設定は
[ClassWizerd]-[メンバ変数タブ]-(コントロール選択)-
[変数の追加]-[カテゴリ]=コントロール で設定。
この場合は描画後にはコントロールに対してReleaseDC を
入れて下さい。
例:m_sta1.ReleaseDC(pdc);
OnPaint(OnDraw) を利用した恒久描画の場合は、
ClassWizerd]-[クラスの追加ボタン]-(新規) に
クラス名=(適当な名前、例:CMyStatic)
基本クラス=CStatic
でOKすると新規拡張クラスが追加されるので、そのまま
右リストで WM_PAINT を選択しOnPaint を追加してください。
そしてメインダイアログのヘッダで、
#include"MyStatic.h" を追加
CStatic m_sta1; → CMyStatic m_sta1; に変更
でCMyStatic::OnPaint() を利用して下さい。
また参考URLの後半部分も適当にどうぞ(前半部は気にせずに)
最後にSDIにボタンを置く方法ですが、・・・続きは次へ
参考URL:http://www.geocities.co.jp/Milkyway/8856/ShadeSD …
No.4
- 回答日時:
前回答の参考URLの「DPtoLP」やら「ペジエ曲線」
やらの計算部分は無視して下さい。
SDIにボタンを置く方法は、作成したビュークラス名を
CXxxView とすると、ClassWizerd から OnInitialUpdate() と
OnCommand() を追加して、そっから
-----------------CXxxxView.h--------------------
class CXxxxView : public CView
{
protected: // シリアライズ機能のみから作成します。
CButton m_btn1;// 手で追加
~~~中略~~~
};
-----------------CXxxxView.cpp------------------
#define MYID_BTN1101// 手で追加
void CDsgdgdsgView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
// 手で追加↓
m_btn1.Create("TestBtn", BS_PUSHBUTTON | WS_VISIBLE,
CRect(100,100,200,150), this, MYID_BTN1);
}
BOOL CDsgdgdsgView::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
// 手で追加↓
switch(LOWORD(wParam)) {
case MYID_BTN1:
//MessageBox("TestBtn Pushed");
break;
}
// 手で追加↑
return CView::OnCommand(wParam, lParam);
}
にしたら使えます。ある種これが一番楽かも。
説明が細かすぎて鬱陶しかったら失礼します。
逆に足らなかったらやはり失礼します。的外れだったら
さらに失礼します。では
No.2
- 回答日時:
>(1)if (IsIconic())のIsIconic()は何ですか。
OnPaint() ではアイコン化したときの表示コーディングも
なされています。その判定をされているものです。
Wizerdの自動生成ソースですので、SDIコーディングでも
その類はたくさんあったと思います。
>(2)ダイヤログ内にベタ書きになるのですが、この方法が
>一般的ですか。あるオブジェクトをはめ込んで(ボタンの
>ように)、その中に描画する方法はありませんか。
質問に合わせた回答のつもりだったんですが。そんな特殊
でしたか。
ボタンに描画するなら以下(参照URL)で↓
スタティックコントロールの描画のことをおっしゃっているの
でしたら、ピクチャーコントロールをリソースエディタで
ダイアログに貼り付けて、プロパティを開き、
[一般]タブで
[タイプ]=『ビットマップ』、
[イメージ]=ビットマップリソースID(例:IDB_BITMAP1)
として下さい。
どちらも、リソースからビットマップを利用しているのが
前提です。
SDI描画のときはファイルから直接行っていたのだったら、、
、ん、また補足にでもテキトーに。
参考URL:http://www.geocities.co.jp/SiliconValley-PaloAlt …
この回答への補足
どうもありがとうございます。IsIconic()な納得しました、
うまく質問を伝えれていないのですが、
例えば、ダイヤログ内にグラフを書く領域を設定し、ダイヤログ内の各種ボタンでインタラクティブにグラフを書く、といったことをやりたいのです。SDI程大げさにしたくないし、SDIではボタン類をはめ込むことができない(する方法もある?)ためにダイヤログを使いたいのです。
たびたび申し訳ありませんが、よろしくお願い致します。
No.1
- 回答日時:
SDIでビットマップの表示部分ができているのなら、
View の OnDraw() 内のコードをダイアログの
OnPaint() に持って来れば、表示はされます。
(OnDraw のパラメータ 『pDC->』部分を『dc.』に
変える )
・・・・・・
void CXxxDlg::OnPaint()
{
if (IsIconic())
{
~~~~(略)~~~~
}
else
{
~~~~(こっから)~~~~
CPaintDC dc(this); // ←追加
// ここに追加
~~~~(ここまで)~~~~
CDialog::OnPaint();
}
}
・・・・・・
一応参考URLも。
参考URL:http://www.nara-edu.ac.jp/~asait/visual_cpp/dial …
この回答への補足
遅くなってすいません。ありがとうございました。表示することができました。
まだよくわからないのですが、
(1)if (IsIconic())のIsIconic()は何ですか。
(2)ダイヤログ内にベタ書きになるのですが、この方法が一般的ですか。あるオブジェクトをはめ込んで(ボタンのように)、その中に描画する方法はありませんか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- プリンタ・スキャナー Brother MFC-7460DNの一時停止解除について 1 2022/12/03 12:38
- プリンタ・スキャナー 封筒印刷 差出人印刷ずれる 4 2022/05/01 10:12
- プリンタ・スキャナー BURATHER複合機・コントロールセンター4が外枠だけ表示 2 2022/05/26 11:16
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- プリンタ・スキャナー ブラザー複合機のトナー交換およびトナー残量の検知の仕組みを教えて下さい。 1 2022/07/09 12:28
- 一眼レフカメラ 新品の標準レンズ 画角の中央当たりにゴミ?が写る。対処法は? 9 2022/09/12 08:27
- 写真 写真(画像)編集スキルを質問する時 1 2022/12/07 14:14
- マルウェア・コンピュータウイルス ウィルス除去ソフトとサイト表示 4 2022/10/25 14:49
- WordPress(ワードプレス) WordpressでYouTubeの埋め込みができない。 1 2022/10/26 01:08
- プリンタ・スキャナー ブラザー プリンターMFC-J4720N 2 2022/07/17 20:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UpdateData( FALSE); による文...
-
TextBoxに文字を書いても表示さ...
-
VB6,リストボックスの特定行の...
-
[VB.net] DataGridViewの列ヘッ...
-
WM_PAINT
-
VC++プログラムをつかったBMP画...
-
Form1 Load で実行されない。
-
panelのスクロール表示について
-
MFCタブコントロールのグラデー...
-
OneNote 2010 文字と描画がずれる
-
C# ゲーム作成 FPSと描画...
-
MFCでOnPaintのタイミング
-
VC++6.0 MFCダイヤログベースで...
-
FPS処理について
-
Win32 API 途中から描画がおか...
-
C# ラバーバンドの描画を快適に...
-
C言語(dxlib)のDrawboxについ...
-
InvalidateRectの使い方について
-
CDC(LineTo)で描画した線を透過...
-
Labelの文字をスクロールする際...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MFCでOnPaintのタイミング
-
[VB.net] DataGridViewの列ヘッ...
-
word
-
NVIDIAのシェーダーキャッシュ
-
TextBoxに文字を書いても表示さ...
-
UpdateData( FALSE); による文...
-
VB6,リストボックスの特定行の...
-
PCで「使用可能な場合はグラフ...
-
VC++プログラムをつかったBMP画...
-
VBAにGDI+を参照させる方法
-
FlexGridの一部のみ表示を更新...
-
pset関数について
-
エクセルでガンチャートを作成...
-
C言語(dxlib)のDrawboxについ...
-
Form1 Load で実行されない。
-
InvalidateRectの使い方について
-
MFCのタイマーのつかい方を教え...
-
CStaticコントロールの静的イメ...
-
Windowのちらつき防止
-
GDI+で高速な描画
おすすめ情報