ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 03:41

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 1 件の記事 ] 
作成者 メッセージ
 記事の件名: WinMainのようなもの
投稿記事Posted: 2007年8月24日(金) 18:00 
オフライン

登録日時: 2005年11月13日(日) 15:25
記事: 25
お久しぶりです.
最近ABとCを併用することが多いのですがそのときに無性にWinMainが欲しくなる(コマンドラインとかnCmdShowとか)ので作りました.
留意点はPathGetArgsが何故か先頭にスペースがあるのにそのままにする場合があるのでWhileで進ませています.
あと最初にSysWinMainと書かなくては動かないのが個人的に不満です.
参考元: http://hp.vector.co.jp/authors/VA016117/tinyexe.html

ABでもC++のUnicodeとかみたくStringとBytePtrの切り替えができたらいいのにな…と思ったり

(AB4.23で動作確認)
コード:
Declare Function PathGetArgs Lib "shlwapi" Alias "PathGetArgsA" (ByVal p As BytePtr) As BytePtr

SysWinMain()

Function WinMain(ByVal hInstance As HINSTANCE, ByVal Reserved As HINSTANCE, ByVal sCmdLine As String, ByVal nCmdShow As Long) As DWord
	MessageBox(0, StrPtr(sCmdLine), "WinMain test", MB_OK)
	WinMain = 0
End Function

Sub SysWinMain()
	Dim szCmdLine As BytePtr
	szCmdLine = PathGetArgs(GetCommandLine())
	While GetByte(szCmdLine) = &H20 '&H20=半角スペース
		szCmdLine++
	WEnd
	Dim sinfo As STARTUPINFO
    sinfo.dwFlags = 0
    GetStartupInfo(sinfo)
	If Not(sinfo.dwFlags and STARTF_USESHOWWINDOW) Then sinfo.dwFlags = SW_SHOWDEFAULT
	Dim ret As DWord
	ret = WinMain(GetModuleHandle(0), 0, MakeStr(szCmdLine), sinfo.dwFlags)
	If ret = 0 Then End
	ExitProcess(ret)
End Sub

_________________
みどるべあ
HP:http://hp.vector.co.jp/authors/VA041827/
Mail:middlebear@gmail.com


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 1 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[7人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean