イメージボックスにアイコンを表示
イメージボックスにアイコンを表示
早速ですが、イメージボックスにアイコンを、表示させることはできます。(RADで)
ですが、それは32*32のアイコンだけ表示され、
16*16のアイコンを表示しようとすると、32*32に拡大されて表示されます。
これは、ActiveBasicの仕様なのでしょうか。
もし、仕様なら、無理矢理でも表示させる方法は、無いのでしょうか。
環境は、以下の通りです。
OS:WindowsMe
ABのバージョン:4.24
返信、よろしくお願いいたします。
ですが、それは32*32のアイコンだけ表示され、
16*16のアイコンを表示しようとすると、32*32に拡大されて表示されます。
これは、ActiveBasicの仕様なのでしょうか。
もし、仕様なら、無理矢理でも表示させる方法は、無いのでしょうか。
環境は、以下の通りです。
OS:WindowsMe
ABのバージョン:4.24
返信、よろしくお願いいたします。
プログラムの中からなら表示する方法を見つけました。
http://resume-next.hp.infoseek.co.jp/data/Win3.html
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
良かった。。。
> プログラムの中からなら表示する方法を見つけました。
> http://resume-next.hp.infoseek.co.jp/data/Win3.html
>
それです。
ありがとうございます。
あとですね、コマンドボタンに、アイコンと文字列を表示する方法は、ありませんか?
> 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
>
ありがとうございます。
あとですね、コマンドボタンに、アイコンと文字列を表示する方法は、ありませんか?
コマンドボタンに画像を貼り付ける方法は、僕は試行錯誤しているところで分かりません。
※その時はコマンドボタンそのものを擬似的に作って、自分で描画するっていう方法に切り替えました。
※その時はコマンドボタンそのものを擬似的に作って、自分で描画するっていう方法に切り替えました。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
相当面倒ですが、SetPixel関数で直に描画したほうが早いかもしれません。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
BackSearchABの中にありました。
コード: 全て選択
SendMessage(GetDlgItem(hMainWnd, CB_TEST), _
BM_SETIMAGE, IMAGE_ICON, _
LoadIcon(CreateStruct.hInstance, IDI_ICON1))
こんなんでどうでしょうか?
hBmpはDestroyイベントででもDeleteObjectで破棄してください。
コード: 全て選択
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
Re: とりあえず。
> NoWestさんのコードで、とりあえずは表示できました。
> ありがとうございます。
> ただ気になったのが、16*16のビットマップをIDB_BITMAP1に指定して、
> デバッグすると、そのビットマップの中に、”TEST”が表示されるようです。
> 結果、ビットマップの中に”T"しか、表示されませんでした。
> 環境が、原因でしょうか。。。
>
> これから、このコードを改良してみます。
> うまく表示されたら、報告します。
NoWestさんじゃないですがコードの解説を。
Buttonにはもともとビットマップを貼り付ける機能があるので、
文字入りのビットマップを作成して表示させるというものです。
ですので用意するビットマップにはあらかじめ文字を表示するためのスペースを
用意しておき、
ビットマップと文字の両方を表示させる機能がボタンにあればいいのですが、
どちらかしかできないのでNoWestさんのやり方が一番簡単だと思います。
> ありがとうございます。
> ただ気になったのが、16*16のビットマップをIDB_BITMAP1に指定して、
> デバッグすると、そのビットマップの中に、”TEST”が表示されるようです。
> 結果、ビットマップの中に”T"しか、表示されませんでした。
> 環境が、原因でしょうか。。。
>
> これから、このコードを改良してみます。
> うまく表示されたら、報告します。
NoWestさんじゃないですがコードの解説を。
Buttonにはもともとビットマップを貼り付ける機能があるので、
文字入りのビットマップを作成して表示させるというものです。
ですので用意するビットマップにはあらかじめ文字を表示するためのスペースを
用意しておき、
の5,5の部分をビットマップがかぶらなくなるX、Y座標にあわせてみて下さい。TextOut(hBmpDC,5,5,"TEST",4)
ビットマップと文字の両方を表示させる機能がボタンにあればいいのですが、
どちらかしかできないのでNoWestさんのやり方が一番簡単だと思います。
それしか無さそう・・・
どうやら、ビットマップをうまく編集する意外に、方法は無さそうですね。。。
とりあえず、その方法で行きます。
ありがとうございました。
とりあえず、その方法で行きます。
ありがとうございました。