支离疏 发表于 2018-10-6 21:52:51

这段代码错在哪,帮帮忙。。

本帖最后由 支离疏 于 2018-10-6 21:56 编辑

F:\1.png
#include <windows.h>
LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, PSTR szCmdLine, int iCmdShow)
{
        static TCHAR szAppName[] = TEXT("MY WINDOWS");
        HWND hwnd;
        MSGmsg;
        WNDCLASS wndclass;
        wndclass.style = CS_HREDRAW | CS_VREDRAW;
        wndclass.lpfnWndProc = WinProc;
        wndclass.cbClsExtra = 0;
        wndclass.cbWndExtra = 0;
        wndclass.hInstance = hInstance;
        wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
        wndclass.hCursor = LoadIcon(NULL, IDC_ARROW);
        wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
        wndclass.lpszMenuName = NULL;
        wndclass.lpszClassName = szAppName;
        if (!RegisterClass(&wndclass))
        {
                MessageBox(NULL, TEXT("这个程序要在windows上运行"), szAppName, MB_ICONERROR);
                return 0;
        }
        else
        {
                hwnd = CreateWindow(szAppName,
                        TEXT("hello win"),
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        NULL,
                        NULL,
                        hInstance,
                        NULL);
                ShowWindow(hwnd, iCmdShow);
                UpdateWindow(hwnd);

        }
        while (GetMessage(&msg, NULL, 0, 0))
        {
                TranslateMessage(&msg);
                //DispachMessage(&msg);
        }
        return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM IParam)
{
        HDC hdc;
        PAINTSTRUCT ps;
        RECT rect;
        switch (message)
        {
        case WM_CREATE:
                //PlaySound(NULL,NULL,NULL)
                return 0;
        case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                GetClientRect(hwnd, &rect);
                DrawText(hdc, TEXT("好不容易捣鼓出一个窗口"), -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, IParam);
}



错误提示是:error LNK2019: 无法解析的外部符号 winpro@16, 该符号在函数winmain@16中被引用

ba21 发表于 2018-10-6 22:56:49

WinProc

WndProc

支离疏 发表于 2018-10-7 12:14:20

ba21 发表于 2018-10-6 22:56
WinProc

WndProc

请指教

紫霞圣人 发表于 2018-10-7 12:36:40

你在vs上找错啊!编译器会告诉你错在哪, 无法解析的外部符号都是因为声明了未定义

紫霞圣人 发表于 2018-10-7 12:52:47

哦,我把你的代码放在我的编译器上运行了一下,错误在于VS版本更新了,很多宏和PAI名字或者参数类型都变了,你还用视频里面的肯定运行不起来
你用VS自动创建吧 ,点击新建 VC++ ->Win32 ->Win32项目,如果是VS2017直接创建桌面窗口程序就可以了
主要需要改的都在消息回调函数里,其他的你不用记。

支离疏 发表于 2018-10-7 17:34:41

紫霞圣人 发表于 2018-10-7 12:52
哦,我把你的代码放在我的编译器上运行了一下,错误在于VS版本更新了,很多宏和PAI名字或者参数类型都变了 ...

谢谢你啊,windows程序设计这条路一开始走就觉得有点吃力啊,感觉学习这个的人不多。

支离疏 发表于 2018-10-7 17:35:14

紫霞圣人 发表于 2018-10-7 12:52
哦,我把你的代码放在我的编译器上运行了一下,错误在于VS版本更新了,很多宏和PAI名字或者参数类型都变了 ...

我用2017就可以了是这样吗?

ba21 发表于 2018-10-7 19:05:28

支离疏 发表于 2018-10-7 12:14
请指教

{:10_262:}

紫霞圣人 发表于 2018-10-7 19:22:58

如果想做黑客。。这个必须的学,还要学的比较精通,跟着小甲鱼视频学,把课后题做了,学完了再买本Windows核心编程来看看
比如创建一个窗口哪里那些函数参数太多太长了,没必要记得,也没必要会写,但是必须要看懂!知道哪些是重点内容,比如这里的消息回调函数就是重中之重,非常重要,非常重要,
还有常用的API最好都记下来,背背就好,常用的几百个也不多,如果不学SDK后面的解密系列(我觉得叫黑客入门系列更合适)根本看不懂。。当然不学汇编一切都是然并卵。。

支离疏 发表于 2018-10-7 20:05:52

ba21 发表于 2018-10-7 19:05


对不起是我眼神不好没看出来,谢谢

支离疏 发表于 2018-10-7 20:31:05

ba21 发表于 2018-10-7 19:05


请问为什么我生成的窗口标题栏和窗口都是白色,而教材上标题栏是蓝色??

支离疏 发表于 2018-10-7 20:32:15

ba21 发表于 2018-10-7 19:05


而且我的鼠标一进入窗口,形状就变成了一个小窗口,不是指针了。

ba21 发表于 2018-10-7 21:44:43

支离疏 发表于 2018-10-7 20:32
而且我的鼠标一进入窗口,形状就变成了一个小窗口,不是指针了。

在问之前最好先自己仔细对比下代码在提问。这是学习的基本条件。

wndclass.hCursor =LoadCursor (NULL, IDC_ARROW);



               DispatchMessage(&msg);
        }
        //return msg.wParam;

支离疏 发表于 2018-10-8 07:47:01

紫霞圣人 发表于 2018-10-7 19:22
如果想做黑客。。这个必须的学,还要学的比较精通,跟着小甲鱼视频学,把课后题做了,学完了再买本Windows ...

谢谢回复

支离疏 发表于 2018-10-8 08:01:57

ba21 发表于 2018-10-7 21:44
在问之前最好先自己仔细对比下代码在提问。这是学习的基本条件。

wndclass.hCursor =LoadCursor (NU ...

谢谢,请原谅我这大叔年龄的大脑

支离疏 发表于 2018-10-8 08:13:50

紫霞圣人 发表于 2018-10-7 19:22
如果想做黑客。。这个必须的学,还要学的比较精通,跟着小甲鱼视频学,把课后题做了,学完了再买本Windows ...

我c语言学过有一定基础,C++一定要学吗?

不许偷懒的小猫 发表于 2018-10-10 13:30:33

为什么DispatchMessage 派发消息注释掉??
页: [1]
查看完整版本: 这段代码错在哪,帮帮忙。。