5

ResourceHacker では、実行可能ファイル (Windows) を開くと、ダイアログに関連付けられた識別子が表示されます。彼らがどこから来たのか誰か知っていますか?つまり、HWND から ID を取得するために C++ プログラムで同じことを行うにはどうすればよいでしょうか?

ところで、GetWindowLong(hwnd, GWL_ID) は 0 を返します。

ありがとう

4

2 に答える 2

12

はダイアログ内のコントロールの識別子を返しますが、ダイアログには識別子がないGetWindowLong(hwnd, GWL_ID)ため、ダイアログ自体には使用できません。

ダイアログに関連付けられた識別子は、実際には、ウィンドウではなく、リソースBLOB自体を参照するために使用されます。これらはダイアログの作成に使用されます(CreateDialog()を参照)

ダイアログが作成されると、元のテンプレートまたはその識別子への接続はありません。実際には、そのIDは使用できません。ダイアログは、単にそのIDで識別されますHWND。同じダイアログリソースを使用して、複数の異なるダイアログを作成できることに注意してください。

これらの識別子は、リソースエディタによって(通常は)順番に割り当てられます。手動でリソースを作成する場合は手動で割り当てられます。

このトピックの詳細については、リソースを使用せずにダイアログを作成するCreateDialogIndirect()関数について読むことができます。

于 2012-07-19T21:46:43.870 に答える