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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0822
機械天使最大化ボタン9解決


機械天使

リンク

2011/8/22(Mon) 15:46:27|NO.40772

通常ウィンドウの右上に3つのボタンありますよね?
真ん中の最大化ボタンはなぜ使えないようになっているのでしょうか?
最初から使えるようにはできないのでしょうか。



この記事に返信する


ひらまる

リンク

2011/8/22(Mon) 17:19:42|NO.40775

えーと
本来ウィンドウを表示するのにも他のプログラムでは、
結構長くて難解な処理をしなくてはいけません。
HSPではそこを自動でやってくれるため、何も書かなくてもウィンドウが表示されます。

そしてもちろん、このウィンドウを拡張する方法も用意されています。
他の言語と同じように、ウィンドウにメッセージを送ったり、スタイルを変更する方法です。
これらは、「ウィンドウメッセージ」「ウィンドウスタイル」などで検索するとヒットします。
メッセージやスタイルは、WM_○○のように指定されていますが、実際は数値です。
今日は調子が悪いので、その辺の事情も検索して調べてください。

そして問題は、ウィンドウメッセージの送り方とウィンドウスタイルの設定方法ですが、
今回は最大化ボタンを付けたいということで、ウィンドウスタイルの設定になります。

ウィンドウスタイルの設定は、
user32.dllに定義されている、setWindowLongAによって可能です。
通常、getWindowLongAでウィンドウのスタイルを取得し、
setWindowLongAで取得したスタイルに新たなスタイルを追加します。

さて、いつもなら詳しいソースも載せるところなのですが、
なんか自分で書いた最大化可能のソースが
(なんでこれで最大化できるんだっけ? っていうかウィンドウスタイルが定数じゃなくて、
 直接$10000 | $40000とか書いてあるからわからんちん)
となっているので、ここから先はご自分で調べていただくか、他の方の解答をお待ちください。
参考になれば幸いです。



who

リンク

2011/8/22(Mon) 17:31:17|NO.40776

>>ひらまるさん
それぐらいMSDNで調べろよ…

0x10000 はWS_MAXIMIZEBOX、つまり最大化ボタンをつけるか否か。
0x40000 はWS_THICKFRAME、つまりサイズ変更ができるように枠を設定するか否か。
つまりHSPのウィンドウスタイルからWS_MAXIMIZとWS_THICKFRAMEの論理和の排他的論理和をとれば最大化ボタンをつけてサイズ変個ができるようになるってわけ。

たぶんですけどね。



f(残業中)

リンク

2011/8/22(Mon) 17:33:06|NO.40777

実行中に、画面サイズが突然「変わる」可能性が出来る訳だが

・何時いかなる瞬間にも
・最大化でワークエリアサイズ変更された事を検知して
・自動的に変化したサイズに画面を書き換える


君がそんなプログラムを書きたいのならば、
その気になれば有効に出来る。



最大化されたサイズは、使用者のパソコンの解像度によって「まちまち」で、
縦横比すら一定である保証は無いが・・・。

そんな面倒な事やりたいの?


どうしても、やりたいなら
「HSP 最大化」でググればサンプル程度普通に出てくるんでね。



(ま、画面サイズが変わっても、表示は基本のままでやっちゃうという手の抜き方も有るが・・・。)



機械天使

リンク

2011/8/22(Mon) 18:03:17|NO.40779

回答ありがとうございます。
最大化ボタンの有効化の仕方は、一応出来るのですが、
標準で付いていないことに何か理由があるのかが知りたいんです。



who

リンク

2011/8/22(Mon) 18:18:25|NO.40780

初心者がゲームを作るときに最大化ができたら困るとかそういう理由だと思いますよ。



機械天使

リンク

2011/8/22(Mon) 18:31:36|NO.40781

whoさんありがとうございます。納得しました。
でも最初からできてもいい、というか使えないなら非表示の方が良いと思いますけどね。



f(ビール中)

リンク

2011/8/22(Mon) 18:52:38|NO.40783

実は最大化ボタンだけ消すなんて出来ないんだけどな。
無効には出来るけど。

最小化ボタンと供に消すなら出来るが。



ひらまる

リンク

2011/8/22(Mon) 22:25:01|NO.40803

>whoさん
解説ありがとうございます。

>fさん
なるほど…
仮に最大化だけを消したい場合、
bgscrのような枠のないウィンドウを作って、
自前で枠を描画するという面倒な方法になるのでしょうか…
まぁそこまでして最大化ウィンドウのみを忌み嫌う必要はありませんね(・ω・)
おのれ最大化ウィンドウ! HSPの世界も浸食されてしまったヵ……



れみはる

リンク

2011/10/10(Mon) 19:20:44|NO.42242

そもそもHSPの仕様と言うよりWindowsの仕様ですね



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