ab.com コミュニティ https://www.activebasic.com/forum/ |
|
アイコンを手動で挿入 https://www.activebasic.com/forum/viewtopic.php?t=431 |
ページ 1 / 1 |
作成者: | konisi [ 2005年11月04日(金) 15:47 ] |
記事の件名: | アイコンを手動で挿入 |
メインのハンドルが分かっていて、尚且つアイコンがあり、アイコンを挿入する為だけにプロジェクト化するのが面倒な方へ。 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のアイコンはコンパイラ時にエラーが起きて不可能。 なお、この方法ではリソースに手動でアイコンを追加してロードしてコンパイルする方法なので、実行ファイルのみの公開時にアイコンを添付する必要は無し。 何かおかしな点がございましたらレスにてお願いします。 |
作成者: | ひげ3 [ 2005年11月29日(火) 16:59 ] |
記事の件名: | ありがとうございました |
以前はリリースコンパイル時にアイコンの選択が可能だったのに、どうしたんだろうと悩んでいました。 ABの仕様が変わったとは知りませんでした。 これで大いに助かりました。 有難う御座いました。 |
作成者: | マティ [ 2005年11月29日(火) 18:16 ] |
記事の件名: | ウィンドウを表示する方法から教えてください。 |
プロジェクトを作成しないで、ウィンドウを作成する方法を教えて下さい。 実はAB2.62からAB4系へプログラムを移植する方法を検討しているのですが、 ウィンドウもロクに表示できないで困っていました。 AB4系では出来ないものと諦めていたところ、この投稿があったのでやった!って思い投稿しました。 |
作成者: | konisi [ 2005年11月29日(火) 22:17 ] |
記事の件名: | 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) うまくいきました? |
作成者: | マティ [ 2005年11月29日(火) 22:43 ] |
記事の件名: | |
konisiさんありがとうございます。AB4.11.03で動作を確認できました。 AB2.62からの移行用プログラムの作成で参考にさせて頂きます。 |
作成者: | konisi [ 2005年11月29日(火) 22:53 ] |
記事の件名: | |
久しぶりにほめてもらった気がします。うん。 で、こんな長々としたコード、どっから引っ張ったかって言うとCallBack.wbpを当たり前のように解析して坦々とコピペ繰り返して出来ました。(作業時間:約30分) なんか隠れた部分があるとドンドン表へ出そうとする習性があるようで。 この前は某チャットのソースコードをごっそりいただきました。言語がJavaだったのが残念ですかね。 |
作成者: | マティ [ 2005年11月29日(火) 23:15 ] |
記事の件名: | |
記念すべき投稿記事:100件目はkonisiさんに対する感謝の投稿でした。 これからも相手に対する感謝の気持ちを忘れないで頑張っていきたいと思います。 引用: 久しぶりにほめてもらった気がします。うん。
ソースは書けば書くほど勉強になるので、非常に良い学習方法だと思います。で、こんな長々としたコード、どっから引っ張ったかって言うとCallBack.wbpを当たり前のように解析して坦々とコピペ繰り返して出来ました。(作業時間:約30分) なんか隠れた部分があるとドンドン表へ出そうとする習性があるようで。 この前は某チャットのソースコードをごっそりいただきました。言語がJavaだったのが残念ですかね。 (おじさんは字を読む事さえ嫌になります・・・がんばらねば) |
作成者: | konisi [ 2005年11月30日(水) 03:08 ] |
記事の件名: | |
僕は記念すべき第100回目の投稿の記事は誰になんていっているのかなーって思いました。とか書いているうちにもうすぐ77回目なんですねー。参加するようになって早投稿回数70回突破、早い物です本当に。 |
作成者: | ひげ3 [ 2005年11月30日(水) 21:41 ] |
記事の件名: | 再度、皆さんに感謝 |
現在、AB2.54からAB4に移植中です。 N88BASICで育ったおじさんに、AB4は滅茶苦茶ハードルが高い状態です。 Konisiさん、Oriosさん、あちこちを参考にようやく1件片付きました。 マティさんも頑張って下さい。 そして、ABサポートの方方には感謝、感謝です。 |
作成者: | イグトランス [ 2005年12月01日(木) 18:04 ] |
記事の件名: | |
RADツールを使わずにウィンドウを作ると100行というのを見ると, 「RADツールはそれだけのコードを肩代わりしてくれるのか」と, かえってRADツールへのありがたみを改めて実感します。 ということで私の200件目の投稿でした。 どうみても200件目と言いたかっただけです。 本当にありがとうございました。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |