私がやろうとしていることを説明しましょう。btn_total=10 の config.ini ファイルがあります (たとえば)。純粋な WinApi (C) を使用してダイアログと btn_total ボタンを作成するプログラムを作成しようとしています。各ボタンは、その名前を表示するために MessageBox を実行する必要があります (たとえば)。つまり、すべてのボタンが異なるデータで同じ仕事をするべきです。
私はC#フォームで簡単にやりました:
...
int top = 5;
int left = 5;
int btnH = 22, btnW = 200;
for (int i = 1; i <= btn_total; i++)
{
Button button = new Button();
button.Name = i.ToString();
button.TabStop = false;
button.FlatStyle = FlatStyle.Standard;
button.Left = left;
button.Top = top;
button.Text = i.ToString();
button.Size = new Size(btnW, btnH);
button.Click += (s, e) =>
{
MessageBox.Show(i.ToString());
};
frmMain.Controls.Add(button);
top += button.Height + 1;
}
frmMain.Size = new Size(btnW + 15, top + btnH + 10);
...
しかし、VC++ 純粋な WinApi (CreateWindowEx など) を使用して同じことを行うにはどうすればよいですか? アドバイスありがとう!!
追加:ループでもこれを行う必要があることを知っています。お気に入り
HWND hBtn[100]; //for example array of HWNDs
for(int i=0; i<btn_total; i++)
{
// "i" is a button ID. How to switch it right (in WM_COMMAND)?
hBtn[i] = CreateWindow(...create button...,(HMENU)i,...);
}
...
case WM_COMMAND:
// HOW SHOULD I PROCEED PRESSED BUTTON?
// Using kind of switch or something?
...