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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0610
ライセンmesbox内に画像を表示させて・・・10未解決


ライセン

リンク

2007/6/10(Sun) 15:34:28|NO.8884

ペイントのように、ウィンドウより大きい画像の場合はmesboxのようなものの中で、
スクロールバーで移動させて編集させる事ができますが、それをHSPでやることはできるのでしょうか?

試しにgcopyなどでやってみましたが、できませんでした。

もし方法が無ければ、自分で作ろうと思います。



この記事に返信する


不如帰

リンク

2007/6/14(Thu) 19:37:34|NO.8922

WIN32APIやwinobj命令などで、スクロールバーをして、oncmd命令で操作を受信して、
grollなどすればいいと思います。



a

リンク

2007/6/18(Mon) 04:25:10|NO.9008




a

リンク

2007/6/18(Mon) 09:47:25|NO.9009

用語は正しく使ってほしいですな。

>WIN32APIやwinobj命令などで、スクロールバーをして、

スクロールバーをしてって何?

>oncmd命令で操作を受信して、

受信?????

出来ないなら無理に答えなくていいんです。
どうせ答えるなら一般的な言い回しで説明してください。
自分で勝手に解釈した言い回しで他人に説明すると不要な混乱を招きます。



不如帰

リンク

2007/6/18(Mon) 16:05:02|NO.9014

>aさん
失礼しました。
以後気を付けます。



ライセン

リンク

2007/6/19(Tue) 17:27:41|NO.9025

ありがとうございます。
スクロールバーは付けられたんですが、付ける場所を変更できないのでしょうか?
いろいろといじっていましたが、できませんでした・・・



pizza

リンク

2007/6/19(Tue) 21:59:52|NO.9032

ぷまさんのモジュールでスクロールバーを付けたウィンドウを
子ウィンドウとして貼り付けるのが簡単だと思います。


//ここより前にぷまさんのモジュールを挿入してください。 #uselib "user32.dll" #func SetParent "SetParent" int, int #func SetFocus "SetFocus" int #define WS_THICKFRAME 0x00040000 #define WS_CHILD 0x40000000 #define WS_POPUP 0x80000000 #define GWL_STYLE (-16) screen 0 hwnd0 = hwnd // bufferに画像ロード buffer 2 dialog "", 16 if stat == 0 : end picload refstr // bgscrを非表示で初期化 bgscr 1, ginfo_winx, ginfo_winy, 2 gcopy 2, 0, 0, ginfo_winx, ginfo_winy hwnd1 = hwnd ScrollBar // スクロールバーをつける SetParent hwnd, hwnd0 // screen 0に貼り付ける // ウィンドウスタイル調整 tf = WS_THICKFRAME // 0ならサイズ可変のまま GetWindowLongA hwnd, GWL_STYLE SetWindowLongA hwnd, GWL_STYLE, stat|WS_CHILD & (WS_POPUP|tf^0xFFFFFFFF) // サイズと位置(クライアント座標) width 200, 200, 100, 100 gsel 1, 1 // 表示 gsel 0, 1 // アクティブに // マウスホイールのためにフォーカスを持たせる SetFocus hwnd1 stop



ライセン

リンク

2007/6/23(Sat) 18:42:12|NO.9082

下のようなスクリプトをにしてみたんですが、90行目のGetWindowLongAでエラーが出てしまいます。
どうしたら良いでしょうか?



#module "scrlbar" #uselib "user32" #func GetWindowLongA "GetWindowLongA" int,int #func SetWindowLongA "SetWindowLongA" int,int,int #func ShowScrollBar "ShowScrollBar" int,int,int #func SetScrollInfo "SetScrollInfo" int,int,var,int #func SetScrollPos "SetScrollPos" int,int,int,int #func SetWindowPos "SetWindowPos" int,int,int,int,int,int,int #deffunc ScrollBar oncmd gosub *WMSIZE, 5 oncmd gosub *SCROLL, $114 oncmd gosub *SCROLL, $115 si= 28, 31, 0,0,0,0,0 // SCROLLINFO構造体 wx.ginfo_sel= ginfo_sizex+ginfo_sx-ginfo_winx wy.ginfo_sel= ginfo_sizey+ginfo_sy-ginfo_winy ; WS_VSCROLL|WS_HSCROLL|WS_SIZEBOX GetWindowLongA hwnd,-16 : SetWindowLongA hwnd,-16,stat|$340000 SetWindowPos hWnd, 0, 0, 0, 0, 0, $37 ; screen 0, bgscr用 return 1 *WMSIZE //ウィンドウサイズが変更された時の処理 sel=ginfo_sel: gsel ginfo_intid repeat 2 si.3= ginfo(26+cnt), ginfo(12+cnt), ginfo(8+cnt) SetScrollInfo hWnd, cnt, si, 1 loop groll ginfo_vx, ginfo_vy mref bm,67 : bm.20=ginfo_winx, ginfo_winy hHide= wx.ginfo_intid= ginfo_sizex ;gsel selを確実に実行させるため vHide= wy.ginfo_intid= ginfo_sizey wnd=hwnd : gsel sel ;何故かスクロールバーが描画されない環境があるため if hHide=1: ShowScrollBar wnd, 0, 0:else: SetWindowPos Wnd, 0,0,0,0,0,$37 if vHide=1: ShowScrollBar wnd, 1, 0:else: SetWindowPos Wnd, 0,0,0,0,0,$37 return 1 *SCROLL //スクロールバー操作時の処理 sel=ginfo_sel : gsel ginfo_intid m=iparam=$115 : nPos=ginfo(8+(m=1)) Code= wParam &$ffff repeat 1 if Code= 5 : nPos=wParam>>16&$ffff : break ;TB_THUMBTRACK if Code= 0 : nPos-4 : break ;TB_LINEUP if Code= 1 : nPos+4 : break if Code= 2 : nPos-32: break if Code= 3 : nPos+32 loop SetScrollPos hWnd, m, nPos, 1 if m : groll ginfo_vx, nPos :else: groll nPos, ginfo_vy gsel sel : return 1 #global #uselib "user32.dll" #func global SetLong "SetWindowLongA" int, int, int #cfunc global GetLong "GetWindowLongA" int, int #define global StyleAdd(%1, %2=0, %3=0)ujw=((%3)&2)*-2-16 :\ SetLong %1, ujw, GetLong(%1, ujw)|(%2)^((%3)&1)*(%2) #define 拡張 2 #define 削除 1 //以下pizzaさん提供 #uselib "user32.dll" #func SetParent "SetParent" int, int #func SetFocus "SetFocus" int #define WS_THICKFRAME 0x00040000 #define WS_CHILD 0x40000000 #define WS_POPUP 0x80000000 #define GWL_STYLE (-16) screen 0 hwnd0 = hwnd buffer 2 dialog "", 16 if stat == 0 : end picload refstr bgscr 1, ginfo_winx, ginfo_winy, 2 gcopy 2, 0, 0, ginfo_winx, ginfo_winy hwnd1 = hwnd ScrollBar SetParent hwnd, hwnd0 tf = WS_THICKFRAME GetWindowLongA hwnd, GWL_STYLE SetWindowLongA hwnd, GWL_STYLE, stat|WS_CHILD & (WS_POPUP|tf^0xFFFFFFFF) width 200, 200, 100, 100 gsel 1, 1 gsel 0, 1 SetFocus hwnd1 stop



f

リンク

2007/6/23(Sat) 18:53:01|NO.9084

これは

GetWindowLongA hwnd, GWL_STYLE SetWindowLongA hwnd, GWL_STYLE, stat|WS_CHILD & (WS_POPUP|tf^0xFFFFFFFF)
は、モジュール内で定義されてるのを呼び出してるからじゃね?


GetLong hwnd, GWL_STYLE SetLong hwnd, GWL_STYLE, stat|WS_CHILD & (WS_POPUP|tf^0xFFFFFFFF)
モジュール外で定義されてるこっちにすればエラーは出ないようだが。



pizza

リンク

2007/6/24(Sun) 12:20:39|NO.9102

すみません、モジュールのバージョンを書いていませんでした。

http://smile.poosan.net/perl-bin/hsp/ver3/hsp3.cgi?print+200511/05110003.txt
のVer 0.98β1 (一番下)を使って下さい。



f

リンク

2007/7/7(Sat) 02:22:25|NO.9289

age



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