[win32]多个窗口之间怎样定义各自的变量互不影响?
我在做一款能够显示和操作图像的软件
软件里面可以创建多个窗口,每个窗口可以以不同的方式查看同一幅图片,
于是我用
HWND hwndimg[20] // 假设最大不超过20个窗口
这种方式创建了这些窗口,
然后给他们分别加上了同一个WndProc
于是问题来了:
我在WndProc函数中,定义了一些变量来确定图像显示的位置,比例等属性
比如:
static int xLoc, yLoc; // 等等诸如此类的变量
由于是static类型的,所以一个窗口的操作就同时影响了其他窗口
如果我不定义成static类型的,每次又都会被重置。。。
请问我该怎么办?
下面是我程序的大致结构
int WinMain(...)
{
HWND hwndmain; // 主窗口
HWND hwndimg[20]; // 暂定最多20个窗口
MSG msg;
WNDCLASS wndclass
/* ...窗口初始化代码... */
wndclass.lpfnWndProc = ImgWndProc;
hwnd[0] = CreateWindow(......) // 一开始先创建一个窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
return msg.wParam;
}
// 下面是回调函数
LRESULT CALLBACK ImgWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static int xLoc, yLoc; // 一些变量初始化
// 还有很多类似变量
switch(message)
{
case WM_CREATE:
// ...一些代码
case WM_PAINT:
// ...一些代码
case WM_DESTROY:
DestroyWindow(hwnd);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}