イメージボックスにアイコンを表示

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
BASIC32
記事: 30
登録日時: 2005年10月29日(土) 11:57
お住まい: 札幌市

イメージボックスにアイコンを表示

#1 投稿記事 by BASIC32 »

早速ですが、イメージボックスにアイコンを、表示させることはできます。(RADで)
ですが、それは32*32のアイコンだけ表示され、
16*16のアイコンを表示しようとすると、32*32に拡大されて表示されます。
これは、ActiveBasicの仕様なのでしょうか。

もし、仕様なら、無理矢理でも表示させる方法は、無いのでしょうか。
環境は、以下の通りです。
OS:WindowsMe
ABのバージョン:4.24

返信、よろしくお願いいたします。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#2 投稿記事 by C1000 »

プログラムの中からなら表示する方法を見つけました。
http://resume-next.hp.infoseek.co.jp/data/Win3.html

コード: 全て選択

'グローバル変数
Dim hImage As DWord

'ウィンドウ作成時
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
hImage=LoadImage(GetModuleHandle(0),IDI_ICON1,IMAGE_ICON,16,16,LR_DEFAULTCOLOR)
SendMessage(GetDlgItem(hMainWnd,ImageBox1),STM_SETIMAGE,IMAGE_ICON,hImage)
End Sub
BASIC32
記事: 30
登録日時: 2005年10月29日(土) 11:57
お住まい: 札幌市

良かった。。。

#3 投稿記事 by BASIC32 »

> プログラムの中からなら表示する方法を見つけました。
> http://resume-next.hp.infoseek.co.jp/data/Win3.html
>

コード: 全て選択

'グローバル変数
> Dim hImage As DWord
> 
> 'ウィンドウ作成時
> Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
> hImage=LoadImage(GetModuleHandle(0),IDI_ICON1,IMAGE_ICON,16,16,LR_DEFAULTCOLOR)
> SendMessage(GetDlgItem(hMainWnd,ImageBox1),STM_SETIMAGE,IMAGE_ICON,hImage)
> End Sub
> 
それです。
ありがとうございます。

あとですね、コマンドボタンに、アイコンと文字列を表示する方法は、ありませんか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#4 投稿記事 by konisi »

コマンドボタンに画像を貼り付ける方法は、僕は試行錯誤しているところで分かりません。

※その時はコマンドボタンそのものを擬似的に作って、自分で描画するっていう方法に切り替えました。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
BASIC32
記事: 30
登録日時: 2005年10月29日(土) 11:57
お住まい: 札幌市

画像だけなら。。。

#5 投稿記事 by BASIC32 »

画像だけをコマンドボタンに表示する方法なら、コードの切れ端の中の、
BackSearchAB.chm の中を探せば、見つかりますよ。
ゲスト

#6 投稿記事 by ゲスト »

ビットマップ作って貼り付ければいいのでは?
BASIC32
記事: 30
登録日時: 2005年10月29日(土) 11:57
お住まい: 札幌市

#7 投稿記事 by BASIC32 »

> ビットマップ作って貼り付ければいいのでは?
確かに、そうですが、
GetWindowText 関数等で、文字を取得できない事や、
ResouceHacker等で、文字入りビットマップを見られたくないので。。。
なるべく、文字とアイコン(orビットマップ)を、ボタンに表示させる方法が、
いいのですが。。。
わがままばかりで、すみません。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#8 投稿記事 by konisi »

相当面倒ですが、SetPixel関数で直に描画したほうが早いかもしれません。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#9 投稿記事 by C1000 »

BackSearchABの中にありました。

コード: 全て選択

SendMessage(GetDlgItem(hMainWnd, CB_TEST), _
BM_SETIMAGE, IMAGE_ICON, _
LoadIcon(CreateStruct.hInstance, IDI_ICON1))
NoWest
記事: 264
登録日時: 2005年5月31日(火) 10:52
お住まい: 高知
連絡する:

#10 投稿記事 by NoWest »

こんなんでどうでしょうか?

コード: 全て選択

Dim hBmp As HBITMAP

Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
	Dim hDC As HDC
	hDC=GetDC(hMainWnd)

	Dim hBmpDC As HDC
	hBmpDC=CreateCompatibleDC(hDC)

	hBmp=LoadBitmap(CreateStruct.hInstance,IDB_BITMAP1)

	DeleteObject(SelectObject(hBmpDC,hBmp))
	ReleaseDC(hMainWnd,hDC)

	SetBkMode(hBmpDC,TRANSPARENT)
	TextOut(hBmpDC,5,5,"TEST",4)

	SendMessage(GetDlgItem(hMainWnd,CommandButton1),BM_SETIMAGE,IMAGE_BITMAP,hBmp)

	DeleteDC(hBmpDC)
End Sub
hBmpはDestroyイベントででもDeleteObjectで破棄してください。
BASIC32
記事: 30
登録日時: 2005年10月29日(土) 11:57
お住まい: 札幌市

とりあえず。

#11 投稿記事 by BASIC32 »

NoWestさんのコードで、とりあえずは表示できました。
ありがとうございます。
ただ気になったのが、16*16のビットマップをIDB_BITMAP1に指定して、
デバッグすると、そのビットマップの中に、”TEST”が表示されるようです。
結果、ビットマップの中に”T"しか、表示されませんでした。
環境が、原因でしょうか。。。

これから、このコードを改良してみます。
うまく表示されたら、報告します。
ノッチ
記事: 82
登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市

Re: とりあえず。

#12 投稿記事 by ノッチ »

> NoWestさんのコードで、とりあえずは表示できました。
> ありがとうございます。
> ただ気になったのが、16*16のビットマップをIDB_BITMAP1に指定して、
> デバッグすると、そのビットマップの中に、”TEST”が表示されるようです。
> 結果、ビットマップの中に”T"しか、表示されませんでした。
> 環境が、原因でしょうか。。。
>
> これから、このコードを改良してみます。
> うまく表示されたら、報告します。

NoWestさんじゃないですがコードの解説を。
Buttonにはもともとビットマップを貼り付ける機能があるので、
文字入りのビットマップを作成して表示させるというものです。
ですので用意するビットマップにはあらかじめ文字を表示するためのスペースを
用意しておき、
TextOut(hBmpDC,5,5,"TEST",4)
の5,5の部分をビットマップがかぶらなくなるX、Y座標にあわせてみて下さい。

ビットマップと文字の両方を表示させる機能がボタンにあればいいのですが、
どちらかしかできないのでNoWestさんのやり方が一番簡単だと思います。
BASIC32
記事: 30
登録日時: 2005年10月29日(土) 11:57
お住まい: 札幌市

それしか無さそう・・・

#13 投稿記事 by BASIC32 »

どうやら、ビットマップをうまく編集する意外に、方法は無さそうですね。。。
とりあえず、その方法で行きます。
ありがとうございました。
返信する