|
|
2012/11/14(Wed) 23:35:00|NO.50671
最小化ボタン、閉じるボタンのついたサイズ固定のウィンドウのウィンドウ枠を完全に消してクライアント座標のみの表示にしたいのですが、
SetWindowLong hwnd, $FFFFFFF0, $16CA0000 & -$80000 & -$40000 & -$C00000 & -$400000 & -$800000 & -$20000 & -$200000 & -$100000 & -$20000 & -$80000
で、思いつくスタイルの削除をしてみましたが数ピクセル(vistaだと上下左右に各5px)の枠が残ってしまいます。
残った枠を消してクライアント座標のみの表示にする方法がわかる方がいましたら教えて下さい。
よろしくお願いします。
|
|
2012/11/15(Thu) 00:00:56|NO.50672
bgscrではダメなのでしょうか?
クライアント領域だけの表示だと思いますが
|
|
2012/11/15(Thu) 01:44:04|NO.50673
/*ご参考(自分でキャプションバーを書いてみる)*/
#include "user32.as"
/*
#define DC_ACTIVE $1
#define DC_ICON $4
#define DC_INBUTTON $10
#define DC_SMALLCAP $2
#define DC_TEXT $8
#define DC_GRADIENT $20
*/
: h0 = hwnd
bgscr 1,640,480+21 : h1 = hwnd
ii = 0,0,640,21 : DrawCaption h0,hdc,varptr(ii),$8 | $4 | $1
ii = 640-8-26, 4,640-8,18 : DrawFrameControl hdc,varptr(ii),1,0
ii = 640-8-26-30,4,640-8-30,18 : DrawFrameControl hdc,varptr(ii),1,2
ii = 640-8-26-60,4,640-8-60,18 : DrawFrameControl hdc,varptr(ii),1,1
redraw
oncmd gosub *label_1,$201
gsel
stop
*label_1
; 色んな処理
sendmsg h1,$A1,2
return
|
|
2012/11/15(Thu) 13:27:32|NO.50677
kanahironさん
言葉足らずですみません。
既に作成された(execで開いた)ウィンドウに対して変更を加えたいんです。
fortunehillさん
今回は利用出来ませんが、自分でウィンドウを作成する際には参考にさせていただきます。
ウィンドウの種類がscreen_frameでもscreen_fixedsizeと同じウィンドウスタイルがGetWindowLongで返ってきます。
しかし、実際に実行してみるとscreen_frameの場合だと、枠が消せません。
※ALT+F4でウィンドウを終了して下さい
//screen_frameの場合、枠が消せない
#include "user32.as"
screen 0, 640, 480, screen_frame
GetWindowLong hwnd, -16
mes stat
SetWindowLong hwnd, -16, $16000000
GetWindowLong hwnd, -16
mes stat
|
|
2012/11/15(Thu) 15:29:36|NO.50681
/*再描画されていないだけでは?(キャプション部分は不定)*/
#include "user32.as"
screen 0, 640, 480,
GetWindowLong hwnd, -16
mes strf("%x",stat)
SetWindowLong hwnd, -16, $16000000
GetWindowLong hwnd, -16
mes strf("%x",stat)
showwindow hwnd,3
|
|
2012/11/15(Thu) 16:03:10|NO.50683
/*此れ書くの忘れてた(EXSTYLE)*/
screen 0, 640, 480, screen_frame
GetWindowLong hwnd, -20 :mes strf("%x",stat)
screen 1, 640, 480, screen_fixedsize
GetWindowLong hwnd, -20 :mes strf("%x",stat)
|
|
2012/11/15(Thu) 19:23:33|NO.50688
fortunehillさん
showwindowは色々な定数で試してみましたが、変化なしでした。
ウィンドウの拡張スタイルをGetWindowLongで調べました。
枠が完全に消せるscreen_fixedsizeと比較すると、512($200)が余分である事がわかり、これを0にする事ができれば枠を消せると思うのですが、何故か上手くいきません。
#include "user32.as"
screen 0, 640, 480, screen_frame//最小化ボタン、閉じるボタンのついたサイズ固定のウィンドウ
GetWindowLong hwnd, -20
mes stat//拡張スタイルが768から512($200)になった。
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, $16000000
GetWindowLong hwnd, -20
SetWindowLong hwnd, -20, stat & -$200//512を0にする
GetWindowLong hwnd, -20
mes stat//512のまま…
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 640, 480, SWP_DRAWFRAME & SWP_NOMOVE & SWP_NOSIZE//SetWindowPosでウィンドウの描画をしてみる
GetWindowLong hwnd, -20
mes stat//512のまま…
|
|
2012/11/15(Thu) 22:44:14|NO.50689
stat & $0で拡張スタイルを削除できました。
あとはスクロールバーを消すだけなので解決とさせていただきます。
ご回答下さった方々ありがとうございました。
|
|