2010-12-01 25 views
1

私はGUIプログラミングを開始していますが、私はWindowsに関する質問があります。いくつかのチュートリアルを読んで、新しいWNDCLASSを作成してRegisterClassを呼び出し、新しいクラスの名前でCreateWindowを実行してウィンドウを作成します。 Buttonや何かを作成するには、CreateWindowのときにクラス名Buttonを使用することもあります。したがって、これは私にこの結論につながります:あなたが新しいWNDCLASSを作成するウィンドウ(境界線付きの種類と最小化/最大化ボタンなど)を作成すること。それ以外の場合は、WNDCLASSを作成する必要はなく、BUTTONなどの事前定義されたクラス名の1つを使用します。これは正しいです?Win32 API GUIプログラミングでのWindows

答えて

6

修正。自分のウィンドウに独自のWNDCLASSを定義する必要がある主な理由は、ウィンドウに送信されるメッセージを処理する独自のウィンドウプロシージャを割り当てることです。ボタンやエディットコントロールなどの標準コントロールには、標準ウィンドウプロシージャで定義されているように、すでに定義された動作が既に用意されているため、あらかじめ定義されたクラス名を使用できます。

0

まず、WINAPIからWindows GUIプログラミングを学びます。これは私が推薦するものではありません。代わりに、まずMFCなどのWindows GUIライブラリを学習することから始めます。 WindowsのGUIプログラミングは難しいです。あなたが最初に学んでいるときよりももっと難しくしないでください。

ウィンドウクラスは、C++クラスがC++オブジェクトと同じように画面上のウィンドウに表示されます。これは、画面上にウィンドウを構成する方法の青写真であり、ハンドルメッセージの機能の場所、使用するデバイスコンテキストの種類などに関する情報が含まれています。

異なる種類のウィンドウには別のウィンドウが必要ですクラス。いわゆる「共通コントロールライブラリ」には、多くのウィンドウクラスが事前定義されています。一般的なコントロールには、典型的なウィンドウで見つけたほとんどのコントロールが含まれます。ボタン、スライダー、テキストボックス、グリッドなど共通のコントロールライブラリは初期化時に既に実行されているため、クラスを自分で登録しなくても、これらの共通のコントロールを作成できます。

画面上のすべてが何らかの種類のウィンドウです。このWebブラウザ、「戻る」ボタン、入力するエディットボックス - それぞれは別々のウィンドウです。それぞれは適切なウィンドウクラスに関連付けられている必要があります。使用するコントロールのほとんどは、共通のコントロールウィンドウクラスに関連付けられます。アプリケーションのメインウィンドウが共通のコントロールや定義済みのウィンドウクラスを持つ他のタイプのウィンドウでないなど、作成しているウィンドウがある場合は、そのクラスを自分で登録する必要があります。

+3

実際、私はあなたが計算機でそれを行う方法を学ぶ前に、あなたが長い分裂を学ぶべきだと思うタイプです。そして私はすでにC++に精通していますので、それほど難しくありません。 – Sareph

+0

@サレフ:それから幸運! –

2

本当に正しいですか?ウィンドウクラスは、ウィンドウの外観と動作を定義します。スタイルを変更してウィンドウメッセージに応答することで、これらをある程度までオーバーライドできますが、あらかじめ定義されたウィンドウクラスの1つが機能しない場合は、独自のウィンドウクラスを定義することをお勧めします。

CreateWindowExドキュメントには、定義済みのウィンドウクラスのリストがあります。

+0

示されたリストは非常に不完全であるが、始めるのに適していることを指摘しておきます。 –

2

はい、正しいです。 controls \ windows (look and)ビヘイビアがあらかじめ定義されています。これらは、システムクラスと呼ばれます。例えば

「ボタン」ボタンを作成するために使用することができ、このクラスです。

MSDN

ボタン::ボタンのクラスからテーブルをご覧下さい。

コンボボックス::コンボボックスのクラスです。

編集::編集コントロールのクラスです。

リストボックス::リストボックスのクラス。

MDIClient :: MDIクライアントウィンドウのクラス。

スクロールバーのクラスです。

静的::静的なコントロールのクラスです。

ここでMSDNを読むことができます。これをクリックしてください:About Window Classes

希望します。

1

「About」ウィンドウのように新しい「ダイアログ」を作成すると、新しいRegisterClass()は必要ありません。 私は、Windows APIの前または代わりにMFCを学ぶことに関するJohn Diblingに同意しません。

MFCはWindows API、つまりMFC IS Windows APIの上に構築されていますが、C++クラスにラップされています。したがって、MFCを理解する必要がある場合は、Windows APIについて知っておく必要があります。

Good Luck。

3

旧式のWin APIプログラミングを使用している場合は、Programming Windows by Charles Petzoldを十分にお勧めできません。最新版は絶版ですが、IMOは狂っています。このです。それは切れているので、中古バージョンではより多くの費用がかかります。あなたが安くなるようにしたい場合は、previous editionを入手してください。これは$ 0.01で利用できます。基本はすべて同じです。

関連する問題