アイコンを手動で挿入
アイコンを手動で挿入
メインのハンドルが分かっていて、尚且つアイコンがあり、アイコンを挿入する為だけにプロジェクト化するのが面倒な方へ。
BASIC PROMPTの場合のコード↓
※PROMPTのハンドル=_PromptSys_hWnd
***.abp に下の数行を追記
Const IDI_ICON1=101
#resource "icon.rc"
SendMessage(_PromptSys_hWnd,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),IDI_ICON1))
icon.rc (上の青文字部分と同じにする。)を生成し、内容を次のようにする
IDI_ICON1 ICON "main.ico"
main.ico (上の緑文字部分と同じにする)を同じフォルダ内に入れる。アイコンはActiveBasicで読み込める形式のものなら何でも構わない。48×48は場合により不可能かもしれないが、試した限りでは可能。96×96のアイコンはコンパイラ時にエラーが起きて不可能。
なお、この方法ではリソースに手動でアイコンを追加してロードしてコンパイルする方法なので、実行ファイルのみの公開時にアイコンを添付する必要は無し。
何かおかしな点がございましたらレスにてお願いします。
BASIC PROMPTの場合のコード↓
※PROMPTのハンドル=_PromptSys_hWnd
***.abp に下の数行を追記
Const IDI_ICON1=101
#resource "icon.rc"
SendMessage(_PromptSys_hWnd,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),IDI_ICON1))
icon.rc (上の青文字部分と同じにする。)を生成し、内容を次のようにする
IDI_ICON1 ICON "main.ico"
main.ico (上の緑文字部分と同じにする)を同じフォルダ内に入れる。アイコンはActiveBasicで読み込める形式のものなら何でも構わない。48×48は場合により不可能かもしれないが、試した限りでは可能。96×96のアイコンはコンパイラ時にエラーが起きて不可能。
なお、この方法ではリソースに手動でアイコンを追加してロードしてコンパイルする方法なので、実行ファイルのみの公開時にアイコンを添付する必要は無し。
何かおかしな点がございましたらレスにてお願いします。
ありがとうございました
以前はリリースコンパイル時にアイコンの選択が可能だったのに、どうしたんだろうと悩んでいました。
ABの仕様が変わったとは知りませんでした。
これで大いに助かりました。
有難う御座いました。
ABの仕様が変わったとは知りませんでした。
これで大いに助かりました。
有難う御座いました。
ウィンドウを表示する方法から教えてください。
プロジェクトを作成しないで、ウィンドウを作成する方法を教えて下さい。
実はAB2.62からAB4系へプログラムを移植する方法を検討しているのですが、
ウィンドウもロクに表示できないで困っていました。
AB4系では出来ないものと諦めていたところ、この投稿があったのでやった!って思い投稿しました。
実はAB2.62からAB4系へプログラムを移植する方法を検討しているのですが、
ウィンドウもロクに表示できないで困っていました。
AB4系では出来ないものと諦めていたところ、この投稿があったのでやった!って思い投稿しました。
Re: ウィンドウを表示する方法から教えてください。
[ここをクリックすると内容が表示されます]
約100行です。即効で作ったのですがコンパイルは通ります。一応動きます。コード: 全て選択
'背景色を設定
Dim h3DFaceBrush As HBRUSH
h3DFaceBrush=CreateSolidBrush(GetSysColor(COLOR_3DFACE))
'ウインドウのハンドル名を決定、フォントを確定
Dim hMain As HWND
Dim hFont_Main As HFONT
hFont_Main=CreateFont(-12,0,0,0,400,0,0,0,128,3,2,1,32,"MS Pゴシック")
'ウィンドウクラスの元になる変数を宣言
Dim WinClass As WNDCLASSEX
'初期値設定処理
FillMemory(VarPtr(WinClass),Len(WinClass),0)
'クラスのサイズを設定
WinClass.cbSize=Len(WinClass)
'インスタンスハンドルを標準に設定
WinClass.hInstance=GetModuleHandle(0)
'幅や高さの変更時に再絵画、クリック通知
WinClass.style=CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS
'クラス名設定
WinClass.lpszClassName="NORMAL0"
'メインループの位置を設定
WinClass.lpfnWndProc=AddressOf(MainProc)
'背景色を設定
WinClass.hbrBackground=h3DFaceBrush
'ウインドウクラス生成
RegisterClassEx(WinClass)
'ウインドウ生成
CreateWindowEx(&H00000000,"NORMAL0","Test",&H10cf0000,-2147483648,-2147483648,200,100,0,0,GetModuleHandle(0),0)
'アイコンを入れる場合はあらかじめ宣言しておく
'#resource "resource.rc"
'Const IDI_ICON1=101
'ボタンの識別名を設定・識別数値を決定
Const CommandButton1=10001
Const CommandButton2=10002
'メインループ
Function MainProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainProc=EventCall_Main(hWnd,dwMsg,wParam,lParam)
End Function
Function EventCall_Main(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Select Case message
Case WM_DESTROY
Main_Destroy()
Case WM_CREATE
hMain=hWnd
'アイコンを入れる場合
'SendMessage(hMain,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),IDI_ICON1))
'この中にボタンやメニューなどを作らせる関数を置く。
'例。
CreateWindowEx(&H00000000,"BUTTON","1",&H50000000,0,0,88,21,hWnd,CommandButton1 As HMENU,GetModuleHandle(0),0)
SendMessage(GetDlgItem(hWnd,CommandButton1),WM_SETFONT,hFont_Main As WPARAM,0)
CreateWindowEx(&H00000000,"BUTTON","2",&H50000000,88,0,88,21,hWnd,CommandButton2 As HMENU,GetModuleHandle(0),0)
SendMessage(GetDlgItem(hWnd,CommandButton2),WM_SETFONT,hFont_Main As WPARAM,0)
'ここまで
Main_Create()
Case WM_CLOSE
Dim cancel=0 As Integer
If cancel=0 Then DestroyWindow(hWnd)
Case WM_COMMAND
'この中にボタンがクリックされたときなどに呼び出す関数を置く。
'例。
Select Case LOWORD(wParam)
Case CommandButton1
Select Case HIWORD(wParam)
Case BN_CLICKED
Main_CommandButton1_Click()
End Select
Case CommandButton2
Select Case HIWORD(wParam)
Case BN_CLICKED
Main_CommandButton2_Click()
End Select
End Select
'ここまで
Case Else
EventCall_Main=DefWindowProc(hWnd,message,wParam,lParam)
Exit Function
End Select
EventCall_Main=0
End Function
Sub Main_Create()
'ウインドウが作られたときの動作(ボタン作成等はEventCall_Main関数内で書いておく。ここでは変数の上下など。
End Sub
Sub Main_CommandButton1_Click()
'ボタン1がクリックされたときの動作
End Sub
Sub Main_CommandButton2_Click()
'ボタン2がクリックされたときの動作
End Sub
Sub Main_Destroy()
'ウインドウが消えるときにする動作
DeleteObject(hFont_Main)
DeleteObject(h3DFaceBrush)
PostQuitMessage(0)
End Sub
Dim msgMain As MSG, iResult As Long
Do
iResult=GetMessage(msgMain,0,0,0)
If iResult=0 or iResult=-1 Then Exit Do
TranslateMessage(msgMain)
DispatchMessage(msgMain)
Loop
ExitProcess(0)
うまくいきました?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
久しぶりにほめてもらった気がします。うん。
で、こんな長々としたコード、どっから引っ張ったかって言うとCallBack.wbpを当たり前のように解析して坦々とコピペ繰り返して出来ました。(作業時間:約30分)
なんか隠れた部分があるとドンドン表へ出そうとする習性があるようで。
この前は某チャットのソースコードをごっそりいただきました。言語がJavaだったのが残念ですかね。
で、こんな長々としたコード、どっから引っ張ったかって言うとCallBack.wbpを当たり前のように解析して坦々とコピペ繰り返して出来ました。(作業時間:約30分)
なんか隠れた部分があるとドンドン表へ出そうとする習性があるようで。
この前は某チャットのソースコードをごっそりいただきました。言語がJavaだったのが残念ですかね。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
記念すべき投稿記事:100件目はkonisiさんに対する感謝の投稿でした。
これからも相手に対する感謝の気持ちを忘れないで頑張っていきたいと思います。
(おじさんは字を読む事さえ嫌になります・・・がんばらねば)
これからも相手に対する感謝の気持ちを忘れないで頑張っていきたいと思います。
ソースは書けば書くほど勉強になるので、非常に良い学習方法だと思います。konisi さんが書きました:久しぶりにほめてもらった気がします。うん。
で、こんな長々としたコード、どっから引っ張ったかって言うとCallBack.wbpを当たり前のように解析して坦々とコピペ繰り返して出来ました。(作業時間:約30分)
なんか隠れた部分があるとドンドン表へ出そうとする習性があるようで。
この前は某チャットのソースコードをごっそりいただきました。言語がJavaだったのが残念ですかね。
(おじさんは字を読む事さえ嫌になります・・・がんばらねば)
僕は記念すべき第100回目の投稿の記事は誰になんていっているのかなーって思いました。とか書いているうちにもうすぐ77回目なんですねー。参加するようになって早投稿回数70回突破、早い物です本当に。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。