写的第一个窗口函数,该怎么解决

写的第一个窗口函数
#include<windows.h>

LRESULT CALLBACK MyWndProc (HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCcmdLine,int nCmdShow)
{ HWND hwnd;
MSG msg;
WNDCLASS wnd;
  wnd.style=CS_HREDRAW| CS_VREDRAW;
wnd.lpfnWndProc=MyWndProc ;
wnd.cbClsExtra=0;
wnd.cbWndExtra=0;
wnd.hInstance=hInstance;
wnd.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wnd.hCursor=LoadCursor(NULL,IDC_ARROW);
wnd.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wnd.lpszMenuName=NULL;
wnd.lpszClassName=TEXT("第一个窗口");
wnd.hInstance=hInstance;

if(!RegisterClass(&wnd))
{
MessageBox(NULL,TEXT("register fail"),TEXT("error"),0);
return 0;
}
hwnd= CreateWindow (TEXT("第一个窗口"),
TEXT("我的窗口"),
WS_OVERLAPPEDWINDOW,
0,0,400,300,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd, nCmdShow);
while( GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.lParam;

}
LRESULT CALLBACK MyWndProc (HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)

TCHAR str[100];
switch(uMsg)
{
case WM_SIZE:
sprintf(str,"新的宽度: %d 新的高度: %d",LOWORD (lParam),HIWORD(lParam));
MessageBox(NULL,str,TEXT("msg"),0);
return 0;
case WM_CREATE:
MessageBox(NULL,TEXT("create window"),TEXT("msg"),0);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
想显示窗口大小 但是报错:error C3861: “sprintf”: 找不到标识符 不知道为什么
还有 MessageBox(NULL,TEXT("create window"),TEXT("msg"),0);
为什么我看的教程中,messagebox不用TEXT,但我电脑不用textbox就报错

------解决方案--------------------
swprintf(str,TEXT("新的宽度: %d 新的高度: %d"),LOWORD (lParam),HIWORD(lParam));