このサイトは2013/3/20に新しい名前になりました(ニックネーム変更のため)

2011年08月30日

最大化ボタン・×ボタンなどの消し方

最大化ボタン・×ボタンなどの消し方

(1)GetWindowlong関数を使って、ウィンドウのウィンドウスタイルを取得
(2)取得したウィンドウスタイルと変更したいウィンドウスタイルの排他的論理和をとって、ウィンドウスタイルを新しくする。
(3)SetWindowlong関数を使って、ウィンドウのウィンドウスタイルを変更


まあこういうのは、ウィンドウスタイルを変えればいいだけなんですけどね。

HSPのscreen命令では分かりませんが、実際には内部ではCreateWindow関数を使ってウィンドウを作っています。

HWND CreateWindow(
LPCTSTR lpClassName, // 登録されているクラス名
LPCTSTR lpWindowName, // ウィンドウ名
DWORD dwStyle, // ウィンドウスタイル
int x, // ウィンドウの横方向の位置
int y, // ウィンドウの縦方向の位置
int nWidth, // ウィンドウの幅
int nHeight, // ウィンドウの高さ
HWND hWndParent, // 親ウィンドウまたはオーナーウィンドウのハンドル
HMENU hMenu, // メニューハンドルまたは子ウィンドウ ID
HINSTANCE hInstance, // アプリケーションインスタンスのハンドル
LPVOID lpParam // ウィンドウ作成データ
);
で、HSPではウィンドウスタイルの初期値に$16CA0000が設定されています。

最大化ボタンを消したいなら(正確には押せなくなるだけですが)こんな感じです。

#include "user32.as"
#define WS_MAXSIZEBOX 0x00010000//最大化ボタンの有無に関してのウィンドウスタイルは0x00010000です。

GetWindowlong hwnd,-16 //ウィンドウスタイルの取得(第2パラに-16を指定するとstatにウィンドウスタイルが代入されます。)
S=stat
mes strf("$%X",S)
SetWindowlong hwnd,-16,S ^ ( WS_MAXSIZEBOX ) //取得したウィンドウスタイルと最大かボタンのウィンドウスタイルの排他的論理和をとると、最大化ボタンがなくなる。

あと、最大化ボタンも最小化ボタンもばつボタンもいらないなら、それを丸ごとけしちゃうウィンドウスタイルもあります。
(注:右上の最大化ボタンとかの集合のことをコントロールメニューボックスという)
下のソースは×ボタンがなくなるからAlt+F4で終了してね

#include "user32.as"
#define WS_SYSMENU 0x00080000//コントロールメニューボックスの有無に関してのウィンドウスタイルは0x00080000です。

GetWindowlong hwnd,-16
S=stat
mes strf("$%X",S)
SetWindowlong hwnd,-16,S ^ ( WS_SYSMENU )

まあウィンドウスタイルについてはこのくらいでしょう。ウィンドウスタイルと似たものに拡張ウィンドウスタイルっていうのがあるけど違うよ

あとよく使うウィンドウスタイルは
WS_THICFRAME : 0x00040000 //サイズ変更境界
WS_BORDER :0x00800000 //境界を持つか

ぐらいかな。

ウィンドウスタイルの変更は結構かんたんだからどこでも使えそう。
posted by ? at 22:58| Comment(0) | WINAPIメモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。