初学API编程,环境

#include<windows.h>
#pragma comment(linker,"/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")
LRESULT CALLBACK MyfWindowProcW(
    HWND hWnd,
    UINT message,
    WPARAM wParam,
    LPARAM lParam)
{
    switch(message)
    {
    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
    default:
    return DefWindowProcW(hWnd,message,wParam,lParam);
    }
    return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR    lpCmdLine,
    int       nCmdShow)
{
    //TCHAR MYCLASS[8]="MYCLASS";
    WNDCLASSEX WCEX;
    WCEX.cbSize=sizeof(WNDCLASSEX);
    WCEX.style=CS_HREDRAW|CS_VREDRAW;
    WCEX.lpfnWndProc= DefWindowProc;
    WCEX.cbClsExtra=0;
    WCEX.cbWndExtra=0;
    WCEX.hInstance=hInstance;
    WCEX.hIcon=NULL;
    WCEX.hCursor=LoadCursor(NULL,IDC_ARROW);
    WCEX.hbrBackground=(HBRUSH)(COLOR_WINDOW + 1);
    WCEX.lpszMenuName=NULL;
    WCEX.lpszClassName="MYCLASS";
    WCEX.hIconSm=NULL;
    while(0==RegisterClassEx(&WCEX));
    HWND hWnd = CreateWindowW(L"MYCLASS", //窗口类的名字
    L"welcome", //标题名字
    WS_OVERLAPPEDWINDOW,//窗口显示风格
    CW_USEDEFAULT, 0, CW_USEDEFAULT, 1080,// 初始位置坐标及大小
    NULL, //父窗口句柄
    NULL,//菜单句柄或子窗口标识
    hInstance, //实例句柄
    NULL);
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
    MSG msg;
    while (GetMessage(&msg, hWnd, 0, 0))
    {
	  TranslateMessage(&msg);
	  DispatchMessage(&msg);
    }
    MessageBox(NULL,(LPCSTR)"我的第一个图形程序",(LPCSTR)"welcome",MB_OK);
    return 0;
}

为什么又默认的窗口过程函数DefWindowProc()不会有乱码

而用自定义的会有乱码

使用的是多字节字符集?

使用Uniocde字符集报错

求大佬解答,有什么好的学习API书籍推荐吗?

救救孩子吧

应该是电脑默认GBK编码,然后你配置没配好,配的Unicode,然后就报错了。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y