ウインドウ無しでbmpのみを表示できますか?

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: ウインドウ無しでbmpのみを表示できますか?

by arrems » 2007年1月10日(水) 21:34

なるほど。
出来てしまいそうですがちょっと実用性に欠けてしまいますね^^;
とりあえずこの質問は初心者の僕には早すぎるようなので、もっと勉強してから出直します。
貴重なサンプルを皆さんに頂いているのでシッカリ勉強して使いこなせるよう頑張ります!
ありがとうございました。

by Tatsuro » 2007年1月10日(水) 00:17

かなり乱暴ですが

コード: 全て選択


Dim hDC As HDC
hDC=GetDC(0)'デスクトップのHDCを取得
'ここから描画するための文を書く
TextOut(hDC,100,100,"変なところに落書きしてみるテスト",32)'(ただの例です)
'ここまで
ReleaseDC(0,hDC)'デスクトップのHDCを開放
これで描けてしまうような気がします。
これは、本当にwindowを作っていないので、その部分を使っているプログラムが再描画を行うと消えるし、プログラムが終了しても放置されます。
従って、プログラムがwindowを作成するときにそこに表示してやれば勝手に消えます。

by arrems » 2007年1月01日(月) 18:54

> あるプログラムを組むときに、どういった関数を使っていくかを理解した上でサンプルなどをコピーするのは良いが、
> 「よくわからないけど、とりあえずコピーしておけばいいか」という考えでは上達できない。

ごもっともで。
そもそも、誰かの「サンプル」であってもそれは「知的財産」だと僕は考えていますから、それをそのまま使うような事はしませんし、上達したいと思っているのでそのソースをしっかり理解したいと思っています。

大変貴重なご意見をありがとうございました。

by ゲスト » 2007年1月01日(月) 18:41

>楽する事はとても大切な事だと思います。
>電卓を使わずに手計算で平方根を求める事はできますが、電卓にその機能があるならそれを使った方がずっと速い。それと同じ理屈で。

それとはまた違う。例えば、√6 の近似値の求め方を知らずに電卓を使っていると、
電卓なしでは近似値は求められなくなってしまう。
98765432*87654321 の計算の仕方を分かっていて、手間を省くために電卓を使うのは良い。
あるプログラムを組むときに、どういった関数を使っていくかを理解した上でサンプルなどをコピーするのは良いが、
「よくわからないけど、とりあえずコピーしておけばいいか」という考えでは上達できない。

by konisi » 2007年1月01日(月) 12:01

楽する事はとても大切な事だと思います。
電卓を使わずに手計算で平方根を求める事はできますが、電卓にその機能があるならそれを使った方がずっと速い。それと同じ理屈で。


自分の失敗を元に助言しておくと、アイデアは出るうちに紙に書いておけって事ですかね。
あれも出来る、これも出来るってなってくると何を作っていいか分からなくなってしまうので。

by arrems » 2007年1月01日(月) 11:21

皆さんご親切にして頂いてありがとうございます。

>勉強しようという姿勢をあまり感じないので

7様、御もっともでございます・・・。ちょっと楽しようとしすぎでした・・・。とりあえず講座を全てクリアしてから出直します。大変失礼しました。

その他のサンプル頂いた方、とても参考になります。先ずは初心者講座をクリアしてから取り組んでみたいと思いますので、その時つまづいたらまたご教授お願いします。

やっぱり昔のBASICしかやった事の無い人間にはもう一度1からやり直す事が大事みたいですね^^;

むむむ...。

by 7 » 2006年12月31日(日) 19:01

今日はなにやら皆さん気前がいいですね...。 追記。

サンプルがウィンドウ作成時になってますけど、ShowTitleBitmap関数はウィンドウと関係ありません。ビットマップを表示したいタイミングで関数をコールしてください。

by konisi » 2006年12月31日(日) 18:05

僕の場合は、GetCapture関数+GetDC関数で何とか表示しますが。(ためしに作ってみたら割とうまくいったので。)

だいたいこんなイメージ

コード: 全て選択

#include "test.idx"

'NoWindow Base

Function draw(X As Long,Y As Long,CX As Long,CY As Long)
    Dim hdc As HDC
    hdc=GetDC(GetCapture())
    Dim memdc As HDC
    memdc=CreateCompatibleDC(hdc)

    Dim hBmp As VoidPtr
    hBmp=LoadImage(GetModuleHandle(0),IDB_BITMAP1 As *Byte,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE)
    SelectObject(memdc,hBmp)

    Dim hBrush As VoidPtr, hOldBrush As VoidPtr
    hBrush=GetStockObject(LTGRAY_BRUSH)
    hOldBrush=SelectObject(hdc,hBrush)

    BitBlt(hdc,X,Y,CX,CY,memdc,0,0,SRCCOPY)

    SelectObject(hdc,hOldBrush)

    DeleteDC(memdc)

    DeleteObject(hBmp)
End Function

draw(0,0,320,320)
Sleep(10000)
ExitProcess(0)
追記 2006/12/31 20時頃
bmpを表示するとかそういう割と応用的な事よりも、1週間目のビギナーさんなら基礎基本をしっかり固める方が先だと思います。

Re: ウインドウ無しでbmpのみを表示できますか?

by MML » 2006年12月31日(日) 13:51

> ビットマップを消すときのチラつきが気にはなりますけどね~...。他のアプリケーションがどうやって解決しているのか気になりますね。
枠なしのウィンドウにBMPをのっける。という方法を僕は前とっていました。
しかし、最近はロゴまで作る暇がないのでやってはいませんが(^^;

手順は以下です。

1.枠なしのウィンドウを作る。
2.BMPを枠なしのウィンドウに描画
3.何秒か表示(というかプログラムを実行させるための準備)
4.枠なしのウィンドウを削除

こんな感じですかね。
しかし、ActiveBasicではやったことがないので...
コードは今すぐにはかけません。
完成したら載せようと思います。

Re: ウインドウ無しでbmpのみを表示できますか?

by 7 » 2006年12月31日(日) 13:36

> 今回の質問は、ウインドウの表示を消してbmpだけを表示したいと言う事です。
> ゲームの開始時にウインドウ無しでゲームロゴみたいなものが出てくるものがあります。そんな事ってできるのでしょうか?
出来ました。ビットマップを表示するというか、ディスプレイに描写するっていう感じなんですけど。
ビットマップを消すときのチラつきが気にはなりますけどね~...。他のアプリケーションがどうやって解決しているのか気になりますね。

> もし出切るのならサンプルコードを教えてください。
http://www.activebasic.com/help_center/ ... index.html
ここのコードを参考にしていくといつか出来ます。それなりの知識と応用力が必要ですけど...。
勉強しようという姿勢をあまり感じないので、とりあえずStep9をやっつけてみてはどうでしょう。
そして分からないことがあったらまた質問してください。

ウインドウ無しでbmpのみを表示できますか?

by arrems » 2006年12月31日(日) 10:20

1週間前からAB始めましたarremsと申します。
プログラム知識は無いに等しいので色々とお世話になります。

今回の質問は、ウインドウの表示を消してbmpだけを表示したいと言う事です。
ゲームの開始時にウインドウ無しでゲームロゴみたいなものが出てくるものがあります。そんな事ってできるのでしょうか?もし出来るのならサンプルコードを教えてください。

ページトップ