1

私がやろうとしていることを説明しましょう。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?
...
4

1 に答える 1