我对WinAPI很新,所以我有时会犯很多基本错误。你已被警告,让我们转到我的问题:P /
我想做一个像网格的东西。如果用户单击其中一个网格的字段,则应显示位图。我已经制作了一个我想用作按钮的字段位图。在开始时,用户输入网格的大小,因此我使用该位图创建了一个动态的按钮库。不幸的是,我不知道在点击它们时如何处理它们。这是我的代码:
//there I create my window. I also make a global variable bool* table and HWND next.
table = new bool[x*y];
for (int i = 0; i < x*y; ++i)
table[i] = 0;
//the table represents if the fields are already filled or not.
HWND* buttons = new HWND[x*y];
next = CreateWindowEx(4, _T("BUTTON"), _T("MOVE"), WS_CHILD | WS_VISIBLE, x * 12 - 25, (y + 4) * 25 - 90, 100, 50, hwnd, NULL, hThisInstance, NULL);
for (int i = 0; i < x; ++i)
{
for (int j = 0; j < y; ++j)
{
buttons[i + j * x] = CreateWindowEx(0, _T("BUTTON"), NULL, WS_CHILD | WS_VISIBLE | BS_BITMAP, 0 + i * 25, 0 + j * 25, 25, 25, hwnd, NULL, hThisInstance, NULL);
SendMessage(przyciski[i + j * x], BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)field);
}
}
现在在WindowProcedure():
switch (message)
{
case WM_COMMAND:
if ((HWND)lParam == next) /* there will be some code in the future ;) */;
else
{
//So here I need to set correct the value in table to 1
//I have a handle to clicked button (HWND)lParam, but I don't know how to get it's position in the table
}
break;
我尝试用HWND和int x,y做一些结构,但我仍然不知道如何管理它。顺便说一下,代码可能看起来很旧,我需要创建一个Windows XP可以运行的应用程序(这是一个学校的项目,不要查询:P),此外我还使用了一个非常古老的教程。