鱼C论坛

 找回密码
 立即注册
查看: 3355|回复: 16

[已解决]这段代码错在哪,帮帮忙。。

[复制链接]
发表于 2018-10-6 21:52:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 支离疏 于 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;
        MSG  msg;
        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中被引用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-6 22:56:49 | 显示全部楼层
WinProc

WndProc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 12:14:20 | 显示全部楼层

请指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 12:36:40 From FishC Mobile | 显示全部楼层
你在vs上找错啊!编译器会告诉你错在哪, 无法解析的外部符号都是因为声明了未定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 12:52:47 | 显示全部楼层
哦,我把你的代码放在我的编译器上运行了一下,错误在于VS版本更新了,很多宏和PAI名字或者参数类型都变了,你还用视频里面的肯定运行不起来
你用VS自动创建吧 ,点击新建 VC++ ->Win32 ->Win32项目,如果是VS2017直接创建桌面窗口程序就可以了
主要需要改的都在消息回调函数里,其他的你不用记。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢你啊,windows程序设计这条路一开始走就觉得有点吃力啊,感觉学习这个的人不多。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我用2017就可以了是这样吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 19:05:28 | 显示全部楼层    本楼为最佳答案   


2018107_190439.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 19:22:58 | 显示全部楼层
如果想做黑客。。这个必须的学,还要学的比较精通,跟着小甲鱼视频学,把课后题做了,学完了再买本Windows核心编程来看看
比如创建一个窗口哪里那些函数参数太多太长了,没必要记得,也没必要会写,但是必须要看懂!知道哪些是重点内容,比如这里的消息回调函数就是重中之重,非常重要,非常重要,
还有常用的API最好都记下来,背背就好,常用的几百个也不多,如果不学SDK后面的解密系列(我觉得叫黑客入门系列更合适)根本看不懂。。当然不学汇编一切都是然并卵。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 20:05:52 | 显示全部楼层

对不起是我眼神不好没看出来,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 20:31:05 | 显示全部楼层

请问为什么我生成的窗口标题栏和窗口都是白色,而教材上标题栏是蓝色??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 20:32:15 | 显示全部楼层

而且我的鼠标一进入窗口,形状就变成了一个小窗口,不是指针了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 21:44:43 | 显示全部楼层
支离疏 发表于 2018-10-7 20:32
而且我的鼠标一进入窗口,形状就变成了一个小窗口,不是指针了。

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

wndclass.hCursor =  LoadCursor (NULL, IDC_ARROW);



                 DispatchMessage(&msg);
        }
        //return msg.wParam;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-8 08:01:57 | 显示全部楼层
ba21 发表于 2018-10-7 21:44
在问之前最好先自己仔细对比下代码在提问。这是学习的基本条件。

wndclass.hCursor =  LoadCursor (NU ...

谢谢,请原谅我这大叔年龄的大脑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我c语言学过有一定基础,C++一定要学吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-10 13:30:33 | 显示全部楼层
为什么DispatchMessage 派发消息注释掉??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 02:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表