好きなおでんの具材ドラフト会議しましょう

現在私はWin32APIの勉強中です><
現在参考書を片手に、
まず最初に真っ白の何もしないウインドウを作成してみました。

この作成したウインドウでは、マウスでウインドウの角をクリックしながらドラッグすると、ウインドウのサイズを自由に変更できます。

しかし、私はこのウインドウのサイズをこのようにマウス操作で変更することができないようにしたいのですが、どのようにしたらよいのでしょうか?
ご教授よろしくお願いいたします><

A 回答 (2件)

前置き。


今のところスケルトンプログラム(ただウインドウを表示するプログラム)しか出来ないようでしたら、下の関数で、
まあ、とりあえず詳しく説明します。^_^


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 // ウィンドウ作成データ
);

今、あなたが変更したいとおっしゃっているのは
上の
CreateWindow() 関数のウインドウスタイルという
3番目に DWORD dwStyle, // ウィンドウスタイル
と記述されているところを変えなければなりません。

大体は下のようなものが使われています。
WS_OVERLAPPEDWINDOW | WS_VISIBLE

WS_OVERLAPPEDWINDOW は、まあ現在表示されている
ウインドウになるまさしく犯人です。
もう一つの方は気にしないでください。
後、 | はたし算みたいな
記号と覚えておきましょう。
効果は WS_OVERLAPPEDWINDOW の機能に WS_VISIBLE の
機能を加えるみたいな感じです。

積もり積もった前置きはこのぐらいにして
回答。
WS_OVERLAPPEDWINDOW | WS_VISIBLE この部分を
WS_OVERLAPPED | WS_SYSMENU これにすると
閉じるボタン(×)だけ表示されウインドウのサイズは
変更できません。
WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX ^ WS_THICKFRAME | WS_VISIBLE
こちらにすると
最小化は出来ますが、最大化およびサイズの変更は出来ません。

 ^ これについては、さっきの足し算とは逆に
引き算です。

まあ、他にも色々組み合わせはあるのですが希望
のものだと思います。
がんばってください。^_^
    • good
    • 3
この回答へのお礼

迅速なお返事ありがとうございます!!
そしてご丁寧に教えていただき、本当に感謝です。

さっそく試してみたところ、ウインドウサイズを固定することができました。これから頑張って勉強してマスターしたいです。
ありがとうございました!

お礼日時:2007/01/16 20:56

CreateWindow()の第3パラメータのウィンドウスタイルから


WS_SIZEBOX のフラグを削除してください。
    • good
    • 1
この回答へのお礼

迅速なお返事ありがとうございます!
早速試してみたいと思います。

お礼日時:2007/01/16 20:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A