ウィンドウのサイズを制限したい

投稿者:アーク <info.nds.laboratry あっとまーくgmail.com> 投稿日:2019/01/16(Wed) 12:42:20 No.2338

お世話になります。アークです。

早速ですが、ウィンドウサイズにリミッタを掛ける必要が有り、
それ自体は下記の様な内容でできてはいるのですが画面がちらつきます。
この画面のちらつきを抑制する方法か、
ウィンドウの最大値を設定する別の方法をご存知の方、
お知恵を拝借できますでしょうか。
----------------------------------------------------------------------
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
    最大幅は、800
    最大高は、600
  終わり
  初期化する手順
    ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    この実質大きさを{400,300}に変える
    この内容を「メイン画面」に変える
  終わり

  大きさが変化した時の手順
    もし(メイン画面の幅>最大幅)なら
      メイン画面の幅を最大幅に変える
    他でもし(メイン画面の高さ>最大高)なら
      メイン画面の高さを最大高に変える
    もし終わり
  終わり

  描画する時の手順
    //
  終わり

  大きさが変わった時の手順
    //
  終わり
終わり
----------------------------------------------------------------------
以上、よろしくお願いします。

Re: ウィンドウのサイズを制限したい

投稿者: 投稿日:2019/01/16(Wed) 18:37:59 No.2339

 こんばんは。

 試してないんですが、ウィンドウの設定項目にある「最大サイズ」でうまくいきませんか?

----------
この最大サイズを{800, 600}に変える
----------

 以上、参考になれば幸いです。

Re^2: ウィンドウのサイズを制限したい

投稿者:アーク <info.nds.laboratry あっとまーくgmail.com> 投稿日:2019/01/16(Wed) 19:32:54 No.2340

陸さん、こんばんは。アークです。

早速のコメントありがとうございます。

〉この最大サイズを{800, 600}に変える
確かにその様な設定項目が有れば簡単で良いのですが…。
以前、V16909の頃には在ったようなのですがそれ以前とそれ以降も使えないようです。
廃止されたのかも知れません。

Re^3: ウィンドウのサイズを制限したい

投稿者:とおりすがりや 投稿日:2019/01/19(Sat) 07:42:09 No.2341

ご期待通りの回答ではないことは重々承知ですが私のできる限りの知識で出した結論を聞いて助けになれたら幸いです。

ウインドウの大きさを自由にした上で制限するやり方は私にはわかりませんでした。

なので次善策としてウインドウの種類を固定するのはどうでしょうか?
そしてウインドウの大きさは、オンラインゲームによくあるような『設定』で選択式にするのはどうでしょうか?
これなら必要以上に小さく、大きくされることはないので用途にあった運用ができると思うのですが。

とおりすがりや さん

投稿者:アーク <info.nds.laboratry あっとまーくgmail.com> 投稿日:2019/01/20(Sun) 00:16:46 No.2346

こんばんは。アークです。

コメントありがとうございます。

作り手の都合でサイズを決める場合はそれでも良いのですが、
今回のソフトはユーザがサイズを決めます。
然もピクセル単位にです。

最大サイズを決めておきたいのはプログラムの作り方が変わってしまうからです。
私に技術力が有れば何処までも自由にさせるのがベストなのですが…。

もう少し考えてみます。

Re^3: ウィンドウのサイズを制限したい

投稿者:通り道 投稿日:2019/01/19(Sat) 16:36:38 No.2343

こんにちは。
> 〉この最大サイズを{800, 600}に変える
> 確かにその様な設定項目が有れば簡単で良いのですが…。
> 以前、V16909の頃には在ったようなのですがそれ以前とそれ以降も使えないようです。
> 廃止されたのかも知れません。
たしかに、今リリースされているバージョンには、ないっぽいですね。
マニュアルへの記載は残っているので、毎度毎度のデグレードではないかと思います。

とりあえず、以下のようにすると、直接プロパティがいじれたので、参考までに。
-----
最大サイズ設定する手順
 【Form】というドットネット型(「System.Windows.Forms.Form」)を作る
 【Size】というドットネット型(「System.Drawing.Size」)を作る
 【最大サイズプロパティ】は、Formの管理型:GetProperty(「MaximumSize」)
 【最大サイズ値】は、Sizeから{800,600}でインスタンスを作る
 最大サイズプロパティ:SetValue(メイン画面,最大サイズ値)
終わり
----
とりあえず、設定する対象や、設定する値はハードコーディングになっていますので、適時、対象のウィンドウを継承した種類の手順にすしたり、引数で渡すようなりして、活用ください。
また、もし、この手順を何度も呼び出したり、あちこちで呼び出すような場合、各ドットネット型の作成と、プロパティの取得は1度だけあればよいので、この手順の外で1度だけ行うようにすると効率的です(部品の種類ごと、プロパティごとには、それぞれ作成・取得する必要があります)

通り道 さん

投稿者:アーク <info.nds.laboratry あっとまーくgmail.com> 投稿日:2019/01/20(Sun) 00:29:56 No.2347

こんばんは。アークです。

コメントありがとうございます。

この様な技も有ったのですね。
早速、組み入れた見たところ手元に有る殆どのバージョンで機能する事を確認しました。
只、やはり画面がちらつきます。
その意味では私がここに提示した低レベルな方式と変わりませんが、
最初に1回だけ宣言して置けば済むのでスマートですね。

エクセルの「ScreenUpdate=False」みたいな事ができれば良いのですが…。

手の内を明かしますとルーラーを作りたかったのですが、
画面サイズに応じてリアルタイムに描画する処理が面倒そうだったので、
予め画像として作って置いたものを表示するようにしました。
それで最大値を設定せざるを得ない状況なのです。

解決しました

投稿者:アーク <info.nds.laboratry あっとまーくgmail.com> 投稿日:2019/01/21(Mon) 22:59:58 No.2350

皆様、お世話になります。アークです。

最後まで残っていた画面のちらつきは、
フォームの有効を瞬間的に「×」に設定する事で解決しました。
これでどのバージョンでも使えます。
ありがとうございました。

今後ともよろしくお願いします。

▲ページの先頭へ

- WebForum -