デバイスコンテキスト

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
HOLY

デバイスコンテキスト

#1 投稿記事 by HOLY »

お久し振りです。
超ど素人のHOLYです。

今回は、『画像』についてなのですが・・・

イメージボックスに画像を表示させようと思い、頑張ったのですが、
CreateCompatibleDC関数でつまずいてしまいました。
ABの本は持っているので、『BMPビューワを作ろう』の回を参考にしたのですが、
CreateCompatibleDCのデバイスコンテキストの作成の部分がどうしても出来ません。

本には、
CreateCompatibleDC(hDC)
っと書いてあったので、まねしてみたら
『hDC』は無効な識別です
っとエラーが出てきます。
変数などの定義はなかったと思います。
もしあればそこは指摘してくださいです。

どうすれば解決できるか教えて下さい。
また、素人の僕でも、簡単に画像を扱える方法があればそのサンプルのコードも
御願いします。

やりたいことは、
BMPリソースの中の画像を表示したいのです。

分かりにくいかもしれませんが、優しく御願いします(_ _)
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

ABの本は持っていないのですが、
描画対象のウインドウハンドルをhWndとするときに

コード: 全て選択

Dim hDC As HDC
hDC=GetDC(hWnd)
とすればいけると思います。
最後にReleaseDCで開放するのを忘れないで下さい。

AB4を使用しているなら
http://www.activebasic.com/forum/viewtopic.php?t=672
http://www.activebasic.com/forum/viewtopic.php?t=839
AB3なら
http://www.activebasic.com/forum/viewtopic.php?t=533
を参照してみてください。

追記
もしそのCreateCompatibleDC関数が使われてるのが元の本ではMainWnd_Paint関数内なら、
その引数にhDCが指定されていると思います。
そのhDCの値の取得・開放に関する部分をCallback.wbpから抜粋すると

コード: 全て選択

Dim ps As PAINTSTRUCT
Dim hDC As HDC
hDC=BeginPaint(hWnd,ps)
MainWnd_Paint(hDC)'MainWnd_Paint関数呼び出し
EndPaint(hWnd,ps)
となっています。GetDCで上手くいかなければこちらも試してみてください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
のぶあや
記事: 22
登録日時: 2006年10月14日(土) 10:52
お住まい: 愛知

#3 投稿記事 by のぶあや »

全体的な流れなら以下のようになります。

IDEの再描画命令で書く場合 その他の箇所で書く場合 ソースはこんな感じになります。
HOLY さんが書きました:本には、
CreateCompatibleDC(hDC)
っと書いてあったので、まねしてみたら
『hDC』は無効な識別です
っとエラーが出てきます。
変数などの定義はなかったと思います。
もしあればそこは指摘してくださいです。
たぶん今回のケースは「その他の箇所で書く場合」で解決すると思います。
HOLY

#4 投稿記事 by HOLY »

konisi様、のぶあや様、ありがとうございました。
よくよく探してみると、
Sub MainWnd(hDC As Long)となっていました。
お騒がせして住みませんでした。
返信する