http://hsp.tv/play/pforum.php?mode=pastwch&num=46431#46732
以下が修正したソースです、CreateWindowExの戻り値がNULLになってます
元のソースと同様の処理を行わせるにはどうすれば良いでしょうか
#include "user32.as" #include "gdi32.as" #include "modclbk3.hsp" ;"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 newclbk3 Proc, 4, *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 dim callbkarg,4 ;追記 clbkargprotect callbkarg ;追記 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