HINSTANCE hInst;
CREATESTRUCT *lpcrea;
lpcrea = (CREATESTRUCT *)lParam;
hInst = lpcrea->hInstance;
と
HINSTANCE hInst;
hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
は、どういう意味なのか、どこが違うのか教えてください。
メインのウインドウのインスタンスをグローバル宣言して
いなかった場合に、プロージャ内でメインのウインドウの
インスタンスを得ているんだと思うんだけど、細かい部分の
説明をしてほしいです。
No.2ベストアンサー
- 回答日時:
No.1 の wr250zb さんと同じような回答しかできませんが、参考まで。
GetWindowLong() を使う場合には、ウィンドウハンドルが取得できているもの全てに
対してインスタンスハンドルを取得できますが、lParam からインスタンスハンドルを
取得するのは、WndProc が属するアプリケーションだけで、かつ、WM_CREATE メッセージが
発生したときだけ、という制限があります。
試したわけではないのと、純粋な Win32 アプリケーションを組まなくなって久しいので
自信がありませんが、WM_CREATE メッセージが出ているときにはウィンドウが生成中なので
GetWindowLong() を使ってインスタンスハンドルを取得できないかもしれません。
WinMain() と WndProc() が同じスコープにあれば、静的な変数を媒介してインスタンス
ハンドルを受け渡せば良いのかもしれませんが。
ありがとうございます。
WM_CREATE の前でなら GetWindowLong() しか使えず、
WM_CREATE の後でならどちらも使えるということですね。
CREATESTRUCT は WM_CREATE の後でも使えました。
WM_CREATE の中で GetWindowLong() を使うこともできました。
No.1
- 回答日時:
どちらもアプリケーションのインスタンスハンドルを取得しています。
CREATESTRUCTで取るのはWM_CREATEメッセージが来たとき
のパラメータ(lParam)からアクセスしています。
GetWindowLongはhWndで指定したウィンドウに対して
指定した(この場合GWL_HINSTANCE)種類の4バイト
データを要求しています。指定した値の種類がGWL_HINSTANCEなんでインスタンスハンドル値が
戻って来ます。
で、細かい部分とは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(OS) Mac OSの操作について 2 2022/06/08 09:19
- Excel(エクセル) 別インスタンスのエクセルを制御したい 1 2023/05/10 02:03
- Java インスタンス ダウンキャストについて以下の解釈であっているか教えて欲しいです。 サブクラスをスーパー 1 2022/03/27 18:53
- その他(OS) MacのFinder操作について 2 2022/07/13 07:29
- Illustrator(イラストレーター) ウインドウの固定 1 2022/05/02 17:11
- Chrome(クローム) Google Chromeのブラウザ(PC)ウインドウの移動について 3 2022/07/19 15:14
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング、アーキテクチ...
-
インスタンスとポインタ
-
フォームの生成と破棄
-
【VB.NET】別Formのボタンが押...
-
VB6.0で、フォームから、別のフ...
-
VB6.0のHideのバグ?
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
VBScriptでMsgBoxのYesNoボック...
-
テキストボックスの中身をリセ...
-
YOASOBI
-
【Photoshop】レイヤー効果の境...
-
別のアプリケーションのテキス...
-
RPG(AS400)の本、サイトってあ...
-
PythonのTkinterイベントについて
-
五芒星は、悪魔崇拝とどういう...
-
VBAユーザーホームテキストボッ...
-
PYTHONのtkinterについて
-
×ボタンを無効化したいのですが...
-
キープレスとボタンクリックの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミング、アーキテクチ...
-
【VB.NET】別Formのボタンが押...
-
CreateDialogについて
-
DataTableの件数を取得したい
-
VB6.0で、フォームから、別のフ...
-
VB6.0のHideのバグ?
-
「Me」を「Form1」にするとエラ...
-
new演算子について教えていただ...
-
インスタンスとポインタ
-
フェードイン-(待機)-フェー...
-
Win32 API ウィンドウ
-
画像を一定時間ごとに切り替え...
-
Python でシャットダウンのコマ...
-
フォームの生成と破棄
-
CREATESTRUCT と GetWindowLong
-
インスタンスからハンドルを得...
-
【Flash As3.0 音データをイ...
-
ActionScript3.0で画面を揺らす...
-
アドビ フラッシュ CS3 「だ...
-
photoshopで書いた四角の枠の中...
おすすめ情報