首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

[win32]多个窗口之间怎样定义各自的变量互不影响?该如何解决

2012-03-05 
[win32]多个窗口之间怎样定义各自的变量互不影响? - C++ Builder / Windows SDK/API我在做一款能够显示和

[win32]多个窗口之间怎样定义各自的变量互不影响? - C++ Builder / Windows SDK/API
我在做一款能够显示和操作图像的软件
软件里面可以创建多个窗口,每个窗口可以以不同的方式查看同一幅图片,
于是我用
HWND hwndimg[20] // 假设最大不超过20个窗口
这种方式创建了这些窗口,
然后给他们分别加上了同一个WndProc
于是问题来了:
我在WndProc函数中,定义了一些变量来确定图像显示的位置,比例等属性
比如:
static int xLoc, yLoc; // 等等诸如此类的变量
由于是static类型的,所以一个窗口的操作就同时影响了其他窗口
如果我不定义成static类型的,每次又都会被重置。。。
请问我该怎么办?
下面是我程序的大致结构

C/C++ code
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);}


[解决办法]
用SetWindowLong 和GetWindowLong吧,可以把数据存到cbWindowExtra里面,具体用法你百度一下就好
如果是64位 用SetWindowLongPtr和GetWindowLongPtr

热点排行