我在大學獲得了作業:在MASM
中編寫遊戲。我選擇了一款「三連勝」的遊戲。遊戲中的對象是一些糖果:冰淇淋,棒棒糖等,但我有一個問題。我不知道如何製作不同圖像的兒童窗戶。我試過了,但沒有任何工作。也許有人知道如何實現這一點?任何幫助表示讚賞。即使在C/C++
。如果有人用口頭向我解釋如何去做,我會很高興。對我來說主要是理解這個概念。Win32 API:具有不同圖像的子窗口
我
但我需要這個
我在大學獲得了作業:在MASM
中編寫遊戲。我選擇了一款「三連勝」的遊戲。遊戲中的對象是一些糖果:冰淇淋,棒棒糖等,但我有一個問題。我不知道如何製作不同圖像的兒童窗戶。我試過了,但沒有任何工作。也許有人知道如何實現這一點?任何幫助表示讚賞。即使在C/C++
。如果有人用口頭向我解釋如何去做,我會很高興。對我來說主要是理解這個概念。Win32 API:具有不同圖像的子窗口
我
但我需要這個
當然,你只有一個形象,因爲hBit是一個全局變量,hBit在所有呼叫覆蓋事實上,CreateSweetsWindow:它保留了最後一個加載的圖像。
我建議你添加hBit到SweetsWindowStruct結構:
SweetsWindowStruct struct
stype SWEETSTYPE ?
sweetsID DWORD ?
hBit HBITMAP ?
SweetsWindowStruct ends
而且(在你的sweets.asm文件第44行)刪除全局hBit,你必須改變這樣的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]
請檢查
非常感謝。這正是我需要的。 –
開始學習如何做到這一點的C++ –
何處是你的代碼? –
@DavidHeffernan對我來說,寫什麼編程語言並不重要。正如我已經提到的,我只是不知道如何實現它。 –