lixiangyv 发表于 2019-12-17 17:45:00

模板

本帖最后由 lixiangyv 于 2019-12-17 19:44 编辑

我在其他地方找到了源代码,但是编译后报错了:
C:\Users\yunzh\AppData\Local\Temp\ccr8Onml.o:windows.c:(.text+0x7f): undefined reference to `__imp_GetStockObject'
collect2.exe: error: ld returned 1 exit status
源代码是:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
        static TCHAR szClassName[] = TEXT("HelloWin");//窗口类名
        HWND   hwnd;//窗口句柄
        MSG      msg;//消息
        WNDCLASS wndclass;//窗口类

        //为窗口类的各个字段赋值
        wndclass.style = CS_HREDRAW | CS_VREDRAW;//窗口风格
        wndclass.lpfnWndProc = WndProc;//窗口过程
        wndclass.cbClsExtra = 0;//暂时不需要理解
        wndclass.cbWndExtra = 0;//暂时不需要理解
        wndclass.hInstance = hInstance;//当前窗口句柄
        wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//窗口图标
        wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//鼠标样式
        wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景画刷
        wndclass.lpszMenuName = NULL;//窗口菜单
        wndclass.lpszClassName = szClassName;//窗口类名

        //注册窗口
        RegisterClass(&wndclass);

        hwnd = CreateWindow(
                szClassName,//窗口类的名字
                TEXT("Welcome"),//窗口标题(出现在标题栏)
                WS_OVERLAPPEDWINDOW,//窗口风格
                CW_USEDEFAULT,//初始化时x轴的位置
                CW_USEDEFAULT,//初始化时y轴的位置
                500,//窗口宽度
                300,//窗口高度
                NULL,//父窗口句柄
                NULL,//窗口菜单句柄
                hInstance,//当前窗口的句柄
                NULL//不使用该值
        );

        //显示窗口
        ShowWindow(hwnd, iCmdShow);
        //更新(绘制)窗口
        UpdateWindow(hwnd);

        while (GetMessage(&msg, NULL, 0, 0)) {
                TranslateMessage(&msg);//翻译消息
                DispatchMessage(&msg);//分派消息
        }

        return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
        HDC         hdc;//设备环境句柄
        PAINTSTRUCT ps;
        RECT      rect;

        switch (message) {
                //窗口绘制消息
        case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                GetClientRect(hwnd, &rect);
                DrawText(
                        hdc,
                        TEXT("你好,欢迎来到C语言中文网"),
                        -1,
                        &rect,
                        DT_SINGLELINE | DT_CENTER | DT_VCENTER
                );
                EndPaint(hwnd, &ps);
                return 0;

                //窗口销毁消息
        case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
        }
        return DefWindowProc(hwnd, message, wParam, lParam);
}
请问怎么改呀?
小甲鱼求助{:9_221:}

Tec 发表于 2019-12-17 21:29:11

建立的是Win32项目吗,如果不是,先建立win32项目,选择空项目,再运行代码试试

lixiangyv 发表于 2019-12-18 20:18:40

你这个Visual Studio是是什么版本的?我这个怎么和你的不一样?

Tec 发表于 2019-12-20 09:33:42

空项目那个应该就可以

lixiangyv 发表于 2019-12-20 17:51:42

这是控制台项目......

lixiangyv 发表于 2019-12-22 07:04:21

本帖最后由 lixiangyv 于 2019-12-22 07:06 编辑

我真是没想到……小甲鱼打包的也报那个错!!!{:9_234:}{:9_234:}{:9_234:}

howzyao 发表于 2020-4-4 11:00:31

太好了,学到了。谢谢
页: [1]
查看完整版本: 模板