Win32 API:子 windows 具有不同的图像
Win32 API: Child windows with different images
我在大学被分配了一项任务:在 MASM
中编写一个游戏。我选择了"three in a row"类型的游戏。游戏中的对象是一些糖果:冰淇淋、棒棒糖等。但我有一个问题。我不知道如何用不同的图像制作 child windows。我试过了,但没有任何效果。也许有人知道如何实现这个?任何帮助表示赞赏。即使在 C/C++
。如果有人用语言向我解释如何去做,我会很高兴。对我来说最主要的是理解这个概念。
我有
但我需要这个
当然你只有一个图像,因为 hBit 是一个全局变量,hBit 在所有对 CreateSweetsWindow 的调用中被覆盖,事实上:它保留最后加载的图像。
我建议您将 hBit 添加到 SweetsWindowStruct 结构中:
SweetsWindowStruct struct
stype SWEETSTYPE ?
sweetsID DWORD ?
hBit HBITMAP ?
SweetsWindowStruct ends
并删除全局 hBit(sweets.asm 文件中的第 44 行),您必须像这样更改 WM_PAINT 代码:
.elseif [iMsg] == WM_PAINT
invoke BeginPaint, [hwnd], addr ps
mov [hdc], eax
invoke CreateCompatibleDC, hdc
mov [hMemDC], eax
SweetsWindowStruct *sws;// sorry show you in c++
sws = (SweetsWindowStruct*)GetWindowLong(hwnd, GWL_USERDATA);
HBITMAP hBit = sws->hBit;
invoke SelectObject, hMemDC, [hBit]
mov [oldDC], eax
其他问题:我认为你有一个错误,你说:
invoke SetWindowLong, [hwnd], 0, addr [sws]
必须是:
invoke SetWindowLong, [hwnd], GWL_USERDATA, addr [sws]
请检查
我在大学被分配了一项任务:在 MASM
中编写一个游戏。我选择了"three in a row"类型的游戏。游戏中的对象是一些糖果:冰淇淋、棒棒糖等。但我有一个问题。我不知道如何用不同的图像制作 child windows。我试过了,但没有任何效果。也许有人知道如何实现这个?任何帮助表示赞赏。即使在 C/C++
。如果有人用语言向我解释如何去做,我会很高兴。对我来说最主要的是理解这个概念。
我有
但我需要这个
当然你只有一个图像,因为 hBit 是一个全局变量,hBit 在所有对 CreateSweetsWindow 的调用中被覆盖,事实上:它保留最后加载的图像。
我建议您将 hBit 添加到 SweetsWindowStruct 结构中:
SweetsWindowStruct struct
stype SWEETSTYPE ?
sweetsID DWORD ?
hBit HBITMAP ?
SweetsWindowStruct ends
并删除全局 hBit(sweets.asm 文件中的第 44 行),您必须像这样更改 WM_PAINT 代码:
.elseif [iMsg] == WM_PAINT
invoke BeginPaint, [hwnd], addr ps
mov [hdc], eax
invoke CreateCompatibleDC, hdc
mov [hMemDC], eax
SweetsWindowStruct *sws;// sorry show you in c++
sws = (SweetsWindowStruct*)GetWindowLong(hwnd, GWL_USERDATA);
HBITMAP hBit = sws->hBit;
invoke SelectObject, hMemDC, [hBit]
mov [oldDC], eax
其他问题:我认为你有一个错误,你说:
invoke SetWindowLong, [hwnd], 0, addr [sws]
必须是:
invoke SetWindowLong, [hwnd], GWL_USERDATA, addr [sws]
请检查