C++ Win32绘图文本颜色和显示

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

我试图在我的窗口上显示一些文本。我使用的是Win32/OpenGL,C++。 我找到了我正在尝试实现的方法,不幸的是,我做了一些错误的事情,因为它不起作用

这是我的回调函数:

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