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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0320
iomanipbgscrの可変ウィンドウ6解決


iomanip

リンク

2016/3/20(Sun) 18:45:07|NO.74991

bgscrで可変ウィンドウを作成すると、上に細いバーのようなものができてしまいます。
これをなくすことはできないのでしょうか。


#uselib "user32.dll" #func global GetWindowLong "GetWindowLongA" sptr, sptr #func global SetWindowLong "SetWindowLongA" sptr, sptr, sptr #define global GWL_STYLE 0xFFFFFFF0 #define global WS_SIZEBOX 0x00040000 #define global WS_MAXIMIZEBOX 0x00010000 bgscr 0, ginfo_dispx, ginfo_dispy GetWindowLong hwnd, GWL_STYLE SetWindowLong hwnd, GWL_STYLE, stat | WS_SIZEBOX | WS_MAXIMIZEBOX width 640, 480



この記事に返信する


iomanip

リンク

2016/3/20(Sun) 18:47:58|NO.74992

すみません。
ウィンドウスタイルのWS_MAXIMIZEBOXはいりませんでした。



チャーくん

リンク

2016/3/20(Sun) 21:19:28|NO.74994

Windows 10ですか…?
黒とかで塗りつぶすとわかりますね。

クッソ汚いのでよろしければ…

#include "user32.as" #uselib "dwmapi.dll" #func DwmGetColorizationColor "DwmGetColorizationColor" int,int Colorization = 0 OpaqueBlend = 0 DwmGetColorizationColor varptr(Colorization),varptr(OpaqueBlend) alpha = (Colorization >> 24) & $ff aero_r = (Colorization >> 16) & $ff aero_g = (Colorization >> 8) & $ff aero_b = Colorization & $ff #include "mesW.hsp" #enum MAIN =0 #enum BASE #enum MASK dx=ginfo_dispx:dy=ginfo_dispy bgscr MAIN,dx,dy color:boxf hwindow.MAIN=hwnd oncmd gosub *clicked,0x0201 screen BASE,dx,dy,0,50,50,640,480 hwindow.BASE=hwnd GetWindowLong hwindow.BASE,-16 SetWindowLong hwindow.BASE,-16,stat | $10000 | $40000 SetWindowLong hwindow.MAIN,-8,hwindow.BASE oncmd gosub *movsiz,0x0003 oncmd gosub *movsiz,0x0005 gosub *movsiz gsel MAIN,1 stop *clicked sendmsg hwindow.BASE,$00A1,2,0 return *movsiz gsel BASE IsZoomed hwnd:max=stat:IsIconic hwnd:min=stat wx=ginfo_winx:wy=ginfo_winy wx1=ginfo_wx1:wy1=ginfo_wy1 wx2=ginfo_wx2:wy2=ginfo_wy2 gsel MAIN if max { width wx,wy+24,0,0 } else { SetWindowPos hwindow.MAIN,0,wx1+7,wy1,wx,wy,1 width wx+2,wy+32 } redraw 0 color aero_r,aero_g,aero_b:boxf color 31,31,31:boxf 1,1,wx,wy+30 color 48,48,48 boxf wx-46*3-3-1,1,wx-1,29 redraw return

MAIN…表示されてる枠なしウィンドウ
BASE…裏にいる枠ありウィンドウ

・Aero スナップもできます

・ウィンドウ上部でのウィンドウサイズの変更ができません
・閉じるとかはついてないのでセルフです
・移動させるときに後ろのウィンドウが見えます
 (後ろのウィンドウにコピーなりすればマシだと思います)
・ウィンドウ下部をクリックしてもクリックできてしまいます
 (必要に応じて、*clickedの下を if mousey<=30 :sendmsg 〜みたいにしてください)

本当に雑ですみません。



チャーくん

リンク

2016/3/20(Sun) 23:49:57|NO.74997

ごめんなさい!!
ウィンドウ下部をクリックしても ウ ィ ン ド ウ の 移 動 ができてしまいます
でした。



iomanip

リンク

2016/3/21(Mon) 09:13:42|NO.75002

おーありがとうございます!
ちょっとやり方がずるいような気もするけど(^▽^;)



cats

リンク

2016/3/21(Mon) 11:15:02|NO.75008

WM_NCHITTESTメッセージを監視して、適当な値を返せば簡単に枠無しの可変ウィンドウが作れますよ。



iomanip

リンク

2016/3/21(Mon) 17:02:02|NO.75014

catsさん、ありがとうございます!

#define WM_SIZE 0x00000005 #define WM_NCHITTEST 0x00000084 #define HTLEFT 0x0000000A #define HTRIGHT 0x0000000B #define HTTOP 0x0000000C #define HTTOPLEFT 0x0000000D #define HTTOPRIGHT 0x0000000E #define HTBOTTOM 0x0000000F #define HTBOTTOMLEFT 0x00000010 #define HTBOTTOMRIGHT 0x00000011 #define HTCLIENT 0x00000001 #define HTCAPTION 0x00000002 #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 480 #define CAPTIONHEIGHT 30 #define BORDERWIDTH 4 bgscr 0, ginfo_dispx, ginfo_dispy, screen_hide width SCREEN_WIDTH, SCREEN_HEIGHT oncmd gosub *OnNCHITTEST, WM_NCHITTEST oncmd gosub *OnSIZE, WM_SIZE gosub *OnSIZE gsel 0, 1 stop #define LEFT 0x00000001 #define RIGHT 0x00000002 #define TOP 0x00000004 #define BOTTOM 0x00000008 *OnNCHITTEST dim area mposx = ginfo_mx - ginfo_wx1 mposy = ginfo_my - ginfo_wy1 if (mposx <= BORDERWIDTH) : area |= LEFT if (mposx >= ginfo_winx - BORDERWIDTH): area |= RIGHT if (mposy <= BORDERWIDTH) : area |= TOP if (mposy >= ginfo_winy - BORDERWIDTH): area |= BOTTOM if (area & LEFT) { if (area & TOP) : return HTTOPLEFT if (area & BOTTOM) : return HTBOTTOMLEFT return HTLEFT } if (area & RIGHT) { if (area & TOP) : return HTTOPRIGHT if (area & BOTTOM) : return HTBOTTOMRIGHT return HTRIGHT } if (area & TOP) : return HTTOP if (area & BOTTOM) : return HTBOTTOM if (mposy <= CAPTIONHEIGHT) : return HTCAPTION return HTCLIENT *OnSIZE color 100, 100, 100 boxf 0, 0, ginfo_winx, CAPTIONHEIGHT color 255, 255, 255 pos 15, 4 font "", 22 mes "たいとるばー" return
おかげさまで何とか、実現することができました!



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