ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2017年11月25日(土) 08:46

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 7 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2006年9月01日(金) 02:17 
オフライン

登録日時: 2005年6月02日(木) 00:12
記事: 24
住所: 愛知県岡崎市
Vistaになると操作感が変わるらしいですね。登場する前に
ひとつ世界規模のプログラミング交流戦をやりませんか?
引用:
課題
通常マウスの1番目と2番目のボタンでクリックする
[WIN]スタート
これを3番目と4番目のボタンでクリックする
[オリジナル]スタート
このスタートメニューを作る

ルール
・オープンソース
・外部ライブラリ使用可能
・ActiveBasicかPureBasicでメインソースを書くこと
・チーム製作可

呼びかけ
・ActiveBasicフォーラム
・PureBasicフォーラム(Japan,English)
・PureBasic日本ユーザー会(Mixi)

期限
・2006/11/31
・ソースと実行EXEなど一式、説明文
・中途半端になった場合は イメージをPDFなどにして提出

賞品(最高をUSD100ドル前後)
質問や提案はこちらへ - 第一回プログラミングコンテスト(AB&PB)
http://forum.oryaaaaa.com/viewtopic.php?p=421

世界へ呼びかけます。開発期間が最高3ヶ月あるので
おそらく海外から何人か参加します。
http://www.purebasic.fr/english/viewtopic.php?t=23477


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年9月01日(金) 03:51 
オフライン

登録日時: 2005年6月02日(木) 00:12
記事: 24
住所: 愛知県岡崎市
なんにもヒントが無いと難しいと思うので、手順

AB苦手なんです
コード:
;GetAsyncKeyState
;http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_getasynckeystate.asp?frame=true
Repeat
  GetCursorPos_(mouse.POINT) 
  Debug mouse\x 
  Debug mouse\y
  Delay(500)
  If GetAsyncKeyState_(5) > 0
    Debug "CLICK"
  EndIf 
ForEver
スタートにマウスを移動して、3番目4番目のマウスをクリックする
のを検知する方法ですが、GetCurosrPosのAPIを使って位置を取得
それから GetAsncKeyStateのAPIを使って、どのボタンが押された
か調べます。通常、仮想キーコード表をみると3番4番は無いです。
しかしMSDNでGetAsncKeyStateのAPIを調べると、それは物理的
な位置を示しているという説明の通り、4は真ん中、5は戻る、6は
進むというリザーブされている番号になります。これを検知したとき
オリジナルメニューが表示されるようにします。

お詫び (英語板)
交流戦を直訳で Exchange としてしまい、英語環境で使えないという
書き込みが多数ありました。実際は Frendly Matchの間違いです。
辞書で"親善試合"で調べるべきでした。申し訳ありません。


最後に編集したユーザー Oryaaaaa on 2006年9月01日(金) 04:17 [ 編集 1 回目 ]

通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年9月01日(金) 04:04 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
住所: 埼玉県東松山市
ABに直に書き直すとこんな具合ですか?<<サンプルコード
コード:
'GetAsyncKeyState 
'http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_getasynckeystate.asp?
#console'ABとPBではDebugコマンドの動作が違うので代用するためのもの
Dim frame As BOOL
Dim mouse As POINTAPI
frame=true 
Do
    GetCursorPos(mouse) 
    Print mouse.x
    Print mouse.y
    'Delay(500) 'すみません、こいつの定義、わかりません。
    If GetAsyncKeyState(5) > 0 then
        'ここらへんに自前スタートメニューの描画関数とか置くんだろうと思います。
        Print "CLICK"
    End If 
Loop

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年9月01日(金) 04:22 
オフライン

登録日時: 2005年6月02日(木) 00:12
記事: 24
住所: 愛知県岡崎市
そそ、そんな感じです。誤訳ミスしたとはいえ、ABやりたい人
世界に多いと実感しました。たった数時間だったのに・・・

Delay(500) 500ミリ秒停止すると言う意味です。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年9月01日(金) 18:26 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
住所: 埼玉県東松山市
すると
コード:
'http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_getasynckeystate.asp? 
#console'ABとPBではDebugコマンドの動作が違うので代用するためのもの 
Dim frame As BOOL 
Dim mouse As POINTAPI 
frame=true 
Do 
    GetCursorPos(mouse) 
    Print mouse.x 
    Print mouse.y 
    Sleep(500)
    If GetAsyncKeyState(5) > 0 then
        Print "CLICK" 
    End If 
Loop
こんな具合か。
[hide=適当に作ってみる。]
コード:
Dim mouse As POINTAPI
Dim Desk As RECT
Dim hMainWnd As HWND
Dim Start As RECT
Dim hFont_MainWnd As HFONT
Dim h3DFaceBrush As HBRUSH
Dim _RadSys_wcl As WNDCLASSEX
Dim WndThread As Long
GetWindowRect(GetDesktopWindow(),Desk)
Start.left=0
Start.top=Desk.bottom-600
Start.bottom=Desk.bottom-31-Start.top
Start.right=400
If Start.top<0 then Start.top=0
If Start.right>Desk.right then Start.right=Desk.right
hFont_MainWnd=CreateFont(-12,0,0,0,400,0,0,0,128,3,2,1,32,"fixedSys")
h3DFaceBrush=CreateSolidBrush(&HFFFFFF)
FillMemory(VarPtr(_RadSys_wcl),Len(_RadSys_wcl),0)
_RadSys_wcl.cbSize=Len(_RadSys_wcl)
_RadSys_wcl.hInstance=GetModuleHandle(0)
_RadSys_wcl.style=CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS
_RadSys_wcl.hCursor=LoadCursor(NULL,MAKEINTRESOURCE(IDC_ARROW))
_RadSys_wcl.hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_APPLICATION))
_RadSys_wcl.hIconSm=LoadIcon(NULL,MAKEINTRESOURCE(IDI_WINLOGO))
_RadSys_wcl.lpszClassName="NORMAL0"
_RadSys_wcl.lpfnWndProc=AddressOf(MainWndProc)
_RadSys_wcl.hbrBackground=h3DFaceBrush
RegisterClassEx(_RadSys_wcl)
CreateWindowEx(WS_EX_TOOLWINDOW,"NORMAL0","test",&H10cf0000,Start.left,Start.top,Start.right,Start.bottom,0,0,GetModuleHandle(0),0)
ShowWindow(hMainWnd,SW_HIDE)
Dim A As DWord,B As DWordPtr
B=VarPtr(A)
WndThread=0
CreateThread(ByVal 0,0,AddressOf(SeeMainWnd),0,0,B)
CloseHandle(B)
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
End

Function DefaultCallProc(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
	DefaultCallProc=DefWindowProc(hWnd,message,wParam,lParam)
End Function

Function EventCall_MainWnd(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
	Select Case message
		Case WM_DESTROY
			MainWnd_Destroy()
		Case WM_CREATE
			hMainWnd=hWnd
		Case WM_MOVE
			ShowWindow(hMainWnd,SW_SHOWNOACTIVATE)
		Case WM_CLOSE
			Dim cancel=0 As Integer
			If cancel=0 Then DestroyWindow(hWnd)
		Case WM_MOVE
			MainWnd_Move(LOWORD(lParam),HIWORD(lParam))
		Case Else
			EventCall_MainWnd=DefWindowProc(hWnd,message,wParam,lParam)
			Exit Function
	End Select
	EventCall_MainWnd=0
End Function

Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
	MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function

Sub MainWnd_Destroy()
	DeleteObject(hFont_MainWnd)
	DeleteObject(h3DFaceBrush)
	PostQuitMessage(0)
End Sub

Sub SeeMainWnd()
	*A
	Do
		If GetAsyncKeyState(5)>0 then
			GetCursorPos(mouse)
			If mouse.x<=111 and mouse.y>=Desk.bottom-30 then Exit Do
		End If
	Loop
	ShowWindow(hMainWnd,SW_SHOW)
	Do
		GetCursorPos(mouse)
		If mouse.y<Start.bottom then Exit Do
		Sleep(20)
	Loop
	Do
		If GetAsyncKeyState(1) or GetAsyncKeyState(2) or GetAsyncKeyState(4) or GetAsyncKeyState(5) or GetAsyncKeyState(6) And &H8000 then
			GetCursorPos(mouse)
			If mouse.x>Start.right then Exit Do
			If mouse.y<Start.top then Exit Do
			If mouse.x<Start.left then Exit Do
			If mouse.y>Start.bottom then Exit Do
		End If
		Sleep(20)
	Loop
	ShowWindow(hMainWnd,SW_HIDE)
	goto *A
End Sub

Sub MainWnd_Move(x As Integer, y As Integer)
	MoveWindow(hMainWnd,Start.left,Start.top,Start.right,Start.bottom,TRUE)
End Sub
[/hide]

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年9月01日(金) 18:59 
オフライン

登録日時: 2005年5月31日(火) 17:14
記事: 231
住所: 茨城県
面白そうな企画ですね。私もできたら参加してみたいと思います。
要はオリジナルのスタートメニュー作成ということですよね?

ところで他言語のWindowsでActiveBasicで生成したexeファイルは動くのでしょうか?


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年9月04日(月) 22:34 
オフライン

登録日時: 2005年5月31日(火) 17:14
記事: 231
住所: 茨城県
自己レスです。英語のWindows XPで動作確認してみたところ、設定を変更すれば使えました。後から気がつきましたが、http://www.purebasic.fr/english/viewtopic.php?t=23477に起動方法が書かれてましたね。
ちなみにVer5 CP1だと、この設定を適用するとエディタの方が起動しなくなります。
もっと英語を話せれば、ABの英語版に協力できるんですがね~。私の今の英語力では無理なので残念です。


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

All times are UTC+09:00


オンラインデータ

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


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

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