C++ Win32绘图文本颜色和显示
我试图在我的窗口上显示一些文本。我使用的是Win32/OpenGL,C++。 我找到了我正在尝试实现的方法,不幸的是,我做了一些错误的事情,因为它不起作用 这是我的回调函数:C++ Win32绘图文本颜色和显示,c++,winapi,drawtext,C++,Winapi,Drawtext,我试图在我的窗口上显示一些文本。我使用的是Win32/OpenGL,C++。 我找到了我正在尝试实现的方法,不幸的是,我做了一些错误的事情,因为它不起作用 这是我的回调函数: LRESULT CALLBACK WinProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam){ LONG lRet = 0; PAINTSTRUCT ps; switch (uMsg) { case WM_S
LRESULT CALLBACK WinProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam){
LONG lRet = 0;
PAINTSTRUCT ps;
switch (uMsg)
{
case WM_SIZE:
if(!g_bFullScreen)
{
SizeOpenGLScreen(LOWORD(lParam),HIWORD(lParam));
GetClientRect(hWnd, &g_rRect);
}
break;
case WM_PAINT:
//BeginPaint(hWnd, &ps);
//adding code from SO question here
HDC hdc = BeginPaint(hWnd, &ps); //line 403
RECT rec;
// SetRect(rect, x ,y ,width, height)
SetTextColor(hdc, RGB(255,255,255))
SetRect(&rec,10,10,100,100);
// DrawText(HDC, text, text length, drawing area, parameters "DT_XXX")
DrawText(hdc, TEXT("Text Out String"),strlen("Text Out String"), &rec, DT_TOP|DT_LEFT);
EndPaint(hWnd, &ps);
ReleaseDC(hWnd, hdc);
//EndPaint(hWnd, &ps);
break;
case WM_KEYDOWN: //line 418
//some key presses
case WM_CLOSE:
PostQuitMessage(0);
break;
default://line 510
lRet = DefWindowProc (hWnd, uMsg, wParam, lParam);
break;
}
return lRet;
}
我似乎实施了一些错误的事情,或者因为看不见而忽略了一些事情
It错误如下:\main.cpp(403):参见“hdc”的声明
如果有人能建议编辑或帮助我指出哪里出了问题,那就太好了。提前谢谢
更新
存在以下错误(在上面的代码中添加了行):
您不能在Twitter 语句中间声明变量。它必须位于块内,或在开关开始之前声明
只将代码放在代码< >代码>括号>代码> {} /代码>中,错误将消失。
您不能在开关语句中间声明变量。它必须位于块内,或在开关开始之前声明
只需将代码放在括号中的框中
,错误就会消失。您能给我们完整的错误信息(看起来只有一半)并标记哪一行是403吗?我已经更新了我的问题。感谢您的发布。@Reanimation将所有内容从case WM\u PAINT:
之后到case WM\u KEYDOWN:
之前放入{}
中。您不需要在EndPaint()之后使用ReleaseDC()。EndPaint()自动释放DC。啊,好的。谢谢你强调这一点。我会删除它:D谢谢你的发帖。你能给我们完整的错误信息(看起来只有一半)并标出哪一行是403吗?我已经更新了我的问题。感谢您的发布。@Reanimation将所有内容从case WM\u PAINT:
之后到case WM\u KEYDOWN:
之前放入{}
中。您不需要在EndPaint()之后使用ReleaseDC()。EndPaint()自动释放DC。啊,好的。谢谢你强调这一点。我会删除它:D谢谢你的发布。哦耶!多么愚蠢的错误啊。错误消失了,程序开始构建。不幸的是,在图形渲染完成之前,文本只显示了一瞬间,我想OpenGL现在的某个地方出现了问题。谢谢你的发帖。哦耶!多么愚蠢的错误啊。错误消失了,程序开始构建。不幸的是,在图形渲染完成之前,文本只显示了一瞬间,我想OpenGL现在的某个地方出现了问题。谢谢你的发帖。
main.cpp(418): error C2360: initialization of 'hdc' is skipped by 'case' label
main.cpp(506): error C2360: initialization of 'hdc' is skipped by 'case' label
main.cpp(510): error C2361: initialization of 'hdc' is skipped by 'default' label