2016-09-23 44 views
0

whenver這部分代碼運行我得到一個運行時錯誤:FillConsoleOutputCharacterW()C++錯誤

void PrintChar(int x, int y, char ch, Colors color) { 
    COORD c = {y,x}; 

    FillConsoleOutputCharacterW(GameData::handle, ch, 1, c, NULL); 
    FillConsoleOutputAttribute(GameData::handle, color, 1, c, NULL); 
} 

的錯誤是,它是覆蓋位置00000000

有人能解釋爲什麼這個錯誤出現請舉個例子?

GAMEDATA類 -

class GameData { 
public: 
static CRITICAL_SECTION cs; 
static void * handle; 
static GameStates gameState; 

static int speed; 
static int level; 
static int points; 
static int nextShape; 
static int nextTurnShape; 
}; 

顏色 -

enum Colors { 
Black, DarkBlue, Green, Blue, Red, Purple, Yellow, While, Gray, 
LightDarkBlue, LightGreen, LightBlue, LightRed, LightPurple, LightYellow, BrightWhile 
}; 

附:

請讓我知道,如果我需要提供任何更多的代碼來澄清發生了什麼事情。

+0

你能字符數的DWORD變量的地址,請包含一些代碼? –

+0

你需要哪些部件? – RelientFX

回答

1

如果你看一下該API的文檔:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682663(v=vs.85).aspx

你應該通過接收實際寫入到控制檯屏幕緩衝區

void PrintChar(int x, int y, char ch, Colors color) 
{ 
    DWORD dwNumOfCharsWritten; 

    COORD c = {static_cast<short>(y), static_cast<short>(x)}; 

    FillConsoleOutputCharacterW(GameData::handle, ch, 1, c, &dwNumOfCharsWritten); 
    FillConsoleOutputAttribute(GameData::handle, color, 1, c, &dwNumOfCharsWritten); 
} 
+0

是否可以爲dwNumOfCharWritten分配一個NULL值?它會如何影響輸出? – RelientFX

+0

如果您爲該變量分配任何值都沒關係,因爲它將被該API覆蓋。你應該使用dwNumOfCharsWritten來檢查錯誤 – Asesh

+0

非常感謝! – RelientFX