Win32 DrawText颜色和显示

时间:2014-03-19 18:46:24

标签: c++ winapi drawtext

我试图在我的窗口上显示一些文字。我使用带有c ++的Win32 / OpenGL。

我发现this question这是我试图实施的方法,不幸的是,我做错了,因为它不起作用。

这是我的CALLBACK功能:

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;
}

我似乎在实施某些错误或忽视某些事情,因为我无法看到它。

错误:\main.cpp(403) : see declaration of 'hdc'

如果有人可以建议编辑或帮助我解决我出错的地方,那就太好了。提前谢谢。

更新

错误(上面代码添加了行):

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

1 个答案:

答案 0 :(得分:4)

您不能在switch语句的中间声明变量。它必须位于块内,或者在switch开始之前声明。

只需将代码放在方括号case的{​​{1}}内,错误就会消失。