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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
1208
kenWindows10でウインドウの表示がずれる現象12解決


ken

リンク

2016/12/8(Thu) 01:17:42|NO.77489

はじめまして。HSPでいくつかのアプリを作成してツールとして使っています。今日、レノボのノートを購入し、これまで使っていたHSPのアプリを起動させたんですが、なぜか初めて起ち上げたアプリのscreen内の表示がおかしいのです。
リサイズ出来ないscreenの横方向が伸びて、ボタン等のオブジェクトは元の位置なのですが、システムカラーの背景やmesで描写した文字がscreenが伸びた分横にスライドして表示されるのです。したがってscreenの左端は白くなります。
しかし、そのアプリから起動させた別のHSPアプリではそのような現象は見られません。この現象は特定のアプリではなく、他のHSPで作成したアプリでも起こります。ランチャーを目的として使うアプリで起こっています。
HSPはVer3.4で作成しました。OSはWindows10 Homeです。複数のWindows10のPCで使用してきましたが、このような現象は見られませんでした。
screen 0で作成したことが原因かと考え他のインデックスに変えて実行ファイルを作成してもこの現象は起こります。
ただ、これまで使っていたPCのOSはWindows8.1や7からアップグレードしたもので、今回購入したものは純粋のwindows10だというところが違うところです。ご教授よろしくお願いします。



この記事に返信する


MillkeySoftware

リンク

2016/12/8(Thu) 04:01:37|NO.77493

使用したHSPのバージョンは、HSP Ver 3.4 である。
問題の発生するソフトは、ランチャーというソフトである。
試しに別のバージョンの HSP でも実行してみたが、同じ現象が発生してしまう。

質問の中に答えが存在しているような。。。
>>しかし、そのアプリから起動させた別のHSPアプリではそのような現象は見られません。
>>ランチャーを目的として使うアプリで起こっています。←これが答えだと思うよ。

普通に、下記のようなスクリプトの場合、表示の問題は発生するの?

screen 0,800,600,0 color 255,255,255 boxf

上記で問題が発生しない場合スクリプトが使用している命令系の処理の違いかな。



掘木

リンク

2016/12/8(Thu) 07:53:49|NO.77494

もしかしてらそのランチャーのウィンドウサイズの横、かなり小さくないです?
規定の最小横幅を下回るウィンドウは自動的にその大きさに切り上げられてしまいます。



ken

リンク

2016/12/8(Thu) 09:35:18|NO.77495

早速のご返答ありがとうございます。今職場なので、確認できませんが私のルーティーンでは記述通りだと思います。今晩確認してみます。



ken

リンク

2016/12/8(Thu) 09:42:43|NO.77496

堀木さま。その通りです。ウインドウサイズはコンパクトです。起動する順というより、ウインドウサイズが小さい表示の場合にそのような現象が出ているように考えられます。
ところで、今までそのようなウインドウ表示を行っていても問題とならなかったのなぜなんでしょうか?
微妙にOSの処理が変わったのかもしれませんね。今日、家に帰ったらウインドウサイズを変えて試してみます。
HSPは10年以上使わせていただいていますが、作っているのがちょっとしたツールばかりなので、どうしてもコンパクトな表示にこだわって小さいものばかり作っていました。
他のアプリも同じような現象が起きる可能性がありますね。



ken

リンク

2016/12/8(Thu) 11:28:54|NO.77497

screenのサイズは横200px 縦250pxでした。横の最小値は100pxなので最小値以下を指定したからではないようです。

#include "../stdlib/exwinstyle.as"

wx=200:wy=250
screen 0,wx,wy,0:Centerwin
.
.
.
スクリプトはこのような感じです。



MillkeySoftware

リンク

2016/12/8(Thu) 12:48:24|NO.77498

問題を切り分けるために、提示されたスクリプトまでのコードを抜粋しましたけど、下記でも表示上の問題は発生するのかな?

#uselib "user32.dll" #func global SetWindowPos "SetWindowPos" int,int,int,int,int,int,int #func global GetWindowRect "GetWindowRect" int,int #func global GetSystemMetrics "GetSystemMetrics" int #define global SWP_NOSIZE 1 #define global SWP_NOZORDER 4 #define global SM_CXSCREEN 0 #define global SM_CYSCREEN 1 #module #deffunc Centerwin ;******************************************************************************* ; ウィンドウを中央に設定 (Centerwin) ; ; 戻り値 : statは常に0 ; ; ・書式 Centerwin ; ・引数 なし ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; screen 0,640,480,0 : Centerwin ;******************************************************************************* GetSystemMetrics SM_CXSCREEN : CSX=stat GetSystemMetrics SM_CYSCREEN : CSY=stat dim rc,4 GetWindowRect hwnd,varptr(rc) w = rc(2)-rc(0) h = rc(3)-rc(1) SetWindowPos hwnd,0,(CSX-w)/2,(CSY-h)/2,0,0,SWP_NOSIZE|SWP_NOZORDER return 0 #global screen 0,200,250,0 : color 255,0,0 : boxf : Centerwin
検証用のモジュールは説明の為、作者「さくら」さんの exwinstyle.as の一部を使用しています。



ken

リンク

2016/12/10(Sat) 08:57:20|NO.77538

会社に3台シンクパッドが入ったのですべてで試しましたが、結果は同じでした。また、HSP3.4を入れてスクリプトエディタから実行した結果も、実行ファイルでの結果と同じでした。
新たにscreen 0,255,300,4のようなウィンドウだけを表示させるスクリプトを実行させてみましたが表示は、300px程度の正方形のウインドウが表示されるような状態です。ただ、実行ファイルでも正常に表示される以前作ったスクリプトを実行すると正常に表示されます。
今少し、時間をかけて調査したいと思います。その結果はお知らせいたします。
もし、同じような現象がみられる方がおられましたら、お知らせください。
ただ、メーラーのWindows Livemailもメールタイトルを表示するリスト部分で文字の上半分が切れて表示されるなどの現象もみられ、レノボ特有の現象かもしれないなとも感じています。



MillkeySoftware

リンク

2016/12/10(Sat) 13:03:58|NO.77542

Lenovo 特有の現象なのかなー。
同じPC / 同じ構成のPC でまったく同じ現象というと、OS 側の問題なのかドライバーと DPI との問題とも考えられるし。

PCのグラフィックスドライバーを最新に更新してみるとかでも問題の解消になりえると思うけど、期待しない方がいい。
(会社のPCだと、責任問題にも発展すると困ると思うので、会社でのPCのドライバー更新は、管理者に任せてね。)

HSPとしては、たぶん問題はないと思うよ。
ただシステム側からのサイズ情報が正しく取得できていないので、ウィンドウ内部のズレが発生してしまうと思う。



ken

リンク

2016/12/11(Sun) 02:59:18|NO.77557

結局、通常のウインドウでは横250pxがミニマム。縦は自由。250px以下のウインドウを表示させたいときはツールウインドウを使うしか方法がないようです。
小さなウインドウはランチャーが主な用途だったので、ツールウインドウを使うことで解決ということにしました。



ken

リンク

2016/12/11(Sun) 03:00:14|NO.77558

解決です



MillkeySoftware

リンク

2016/12/11(Sun) 12:46:42|NO.77565

すでに解決済みですが、ひとつだけ。
ウィンドウ自体の最小化・最大化・閉じるボタンについては、Windows 10 よりサイズが変更されています。
(以前のWindows より多少大きくなっています)

そのサイズ設定によってもウィンドウとクライアント領域が比例しないという問題も存在します。
この設定は「設定」→「システム」→「ディスプレイ」→「ディスプレイの詳細設定」→「テキストやその他項目のサイズ調整」で調整できます。
(この際の規定サイズは 9 です。)

Windows 8.1 以前に作られた極小ウィンドウなどの場合、サイズが確実に足りませんので、クライアント領域の左側に空白空間が発生します。
(注 : もともと丁度収まるように作られてるウィンドウの場合など)

解決済みですが、同じような状況になる方もいるかと思いますので、その情報として書きました事をお詫びいたします。



ken

リンク

2016/12/12(Mon) 13:34:44|NO.77567

コメントありがとうございます。私もその点については以前から気になっておりました。Win2000からxpの時も経験があります。
今回の件は、ディスプレイドライバが原因じゃないかと思っています。この件があってから、これまで旧PCで使っていたフリーソフト等を入れてみましたが、私が報告したような現象は見られませんでしたが、
Windowsのオブジェクト(チェックボックスなど)と模写した文字のレイアウトが崩れてしまうものが散見されました。PCはレノボのThinkPadで解像度が2560px x1440pxとうい代物で、システムフォントを使っているんだろうと思われるアプリは総崩れって感じです。
ディスプレイの解像度を1920あたりに落としても整ったレイアウトにならないです。今後はこのようなことも頭に入れてスクリプトを書かなければいけないのかな思っています。



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