HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0503
spiderウィンドウクラスの登録4解決


spider

リンク

2012/5/3(Thu) 16:22:36|NO.46431

突如HSPウィンドウクラスを登録して、
それをCreateWindowExやwinobjで使ってみたいな
と思ったので、Cでのやり方を変えたりしてスクリプトを作ったのですが、
上手くいきません。HSPでは無理かもしてないので無理だったら
無理といってください。お願いします。
↓スクリプト
#include "user32.as"
#include "kernel32.as" #define global CS_VREDRAW 0x0001 #define global CS_HREDRAW 0x0002 #define global WS_VISIBLE 0x10000000 #define global WS_SYSMENU 0x00080000 #define global WS_CAPTION 0x00C00000 onexit *exit dim WNDCLASS, 12 GetModuleHandle NULL InstanceHandle = stat LoadIcon NULL, 32512 IconHandle = stat LoadCursor NULL, 32512 CursorHandle = stat _ClassName = "spider" WNDCLASS.0 = 48 WNDCLASS.1 = CS_VREDRAW | CS_HEADRAW WNDCLASS.2 = 0 WNDCLASS.3 = 0 WNDCLASS.4 = 0 WNDCLASS.5 = InstanceHandle WNDCLASS.6 = IconHandle WNDCLASS.7 = CursorHandle WNDCLASS.8 = 6 WNDCLASS.9 = 0 WNDCLASS.10= varptr(_ClassName) WNDCLASS.11= IconHandle RegisterClassEx varptr(WNDCLASS) Atom = stat CreateWindowEx 0, "spider", "てすと", (WS_VISIBLE | WS_SYSMENU | WS_CAPTION), 100, 100, 640, 480, 0, 0, InstanceHandle, lparam stop *exit end

RegisterClassExは戻り値を見ると成功しているようなのですが
CreateWindowExでだめになっているようです。



この記事に返信する


check

リンク

2012/5/3(Thu) 17:30:58|NO.46432

ウィンドウメッセージコールバック関数がないとそれで登録したクラスを使ってウィンドウは作成できない。
HSPじゃ無理に近い。



spider

リンク

2012/5/3(Thu) 17:34:27|NO.46433

わかりました。あきらめます。
所詮思い付きでしたから………
むだな質問すみませんでした。



ヒロソフ

リンク

2012/5/5(Sat) 14:56:21|NO.46458

解決済みのようですが一応情報を

http://hsp.tv/make/tool1.html に載っている
「hscallbk.dll」でHSP上でコールバック関数のようなものを実装できるので
可能かもしれませんが、素直にscreen命令を使ったほうがいいでしょう。

なお http://hsp.tv/make/tool1.html に載っている
hscallbk.dllの開発者であるちょくとさんの
HPのリンクは古いものになっています。(リンク切れになっています)
検索すれば出てきますが一応以下にリンク張っておきます

サイト名:ちょくとのページ
URL:http://chokuto.ifdef.jp/



spider

リンク

2012/5/20(Sun) 15:14:26|NO.46732

かなり前のスレですが、一応報告。
ヒロソフ様、ありがとうございます。
それと、15日間も無視しててすみませんでした。

こんな便利な拡張プラグインがあったのですね。
ウィンドウプロシージャも作れますね。

↓作ってみたスクリプト
#include "user32.as"
#include "gdi32.as" #include "hscallbk.as" //定数を定義 #define global WM_DESTROY 0x0002 #define global WM_CLOSE 0x0010 #define global WM_QUIT 0x0012 #define global GWL_WNDPROC -4 //ダミーの関数を定義 #uselib "" #func _WndProc "" int,int,int,int //コールバック関数登録 setcallbk Proc, _WndProc, *WndProc //"hspwnd0"で使われているウィンドウプロシージャのアドレスの取得 GetWindowLong hwnd, GWL_WNDPROC OldWndProc = stat /*ウィンドウクラスの登録------------------------------------------------------------*/ //----------------------------------------------------------------------------------// ClassName = "spider" g_hInstance = 0 LoadIcon 0, 32512 hIcon = stat LoadCursor 0, 32512 hCursor = stat GetStockObject 0 hBrush = stat dim wcex, 12 wcex.0 = 48 wcex.1 = 0 wcex.2 = varptr(Proc) wcex.3 = 0 wcex.4 = 0 wcex.5 = g_hInstance wcex.6 = hIcon wcex.7 = hCursor wcex.8 = hBrush wcex.9 = 0 wcex.10= varptr(ClassName) wcex.11= hIcon RegisterClassEx varptr(wcex) //----------------------------------------------------------------------------------// CreateWindowEx 0, "spider", "Title", 0x16CF0000, 0x80000000, 0x80000000, 400, 400, 0, 0, g_Instance, 0 hWdw = stat mes hWdw stop *WndProc hWindow = callbkarg(0) Massage = callbkarg(1) wp = callbkarg(2) lp = callbkarg(3) switch (Massage) case WM_CLOSE DestroyWindow hWindow swbreak case WM_DESTROY DestroyWindow hWindow swbreak default CallWindowProc OldWndProc, hWindow, Massage, wp, lp swbreak swend return



ONION software Copyright 1997-2023(c) All rights reserved.