这段代码错在哪,帮帮忙。。
本帖最后由 支离疏 于 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中被引用 WinProc
WndProc ba21 发表于 2018-10-6 22:56
WinProc
WndProc
请指教 你在vs上找错啊!编译器会告诉你错在哪, 无法解析的外部符号都是因为声明了未定义 哦,我把你的代码放在我的编译器上运行了一下,错误在于VS版本更新了,很多宏和PAI名字或者参数类型都变了,你还用视频里面的肯定运行不起来
你用VS自动创建吧 ,点击新建 VC++ ->Win32 ->Win32项目,如果是VS2017直接创建桌面窗口程序就可以了
主要需要改的都在消息回调函数里,其他的你不用记。 紫霞圣人 发表于 2018-10-7 12:52
哦,我把你的代码放在我的编译器上运行了一下,错误在于VS版本更新了,很多宏和PAI名字或者参数类型都变了 ...
谢谢你啊,windows程序设计这条路一开始走就觉得有点吃力啊,感觉学习这个的人不多。 紫霞圣人 发表于 2018-10-7 12:52
哦,我把你的代码放在我的编译器上运行了一下,错误在于VS版本更新了,很多宏和PAI名字或者参数类型都变了 ...
我用2017就可以了是这样吗? 支离疏 发表于 2018-10-7 12:14
请指教
{:10_262:}
如果想做黑客。。这个必须的学,还要学的比较精通,跟着小甲鱼视频学,把课后题做了,学完了再买本Windows核心编程来看看
比如创建一个窗口哪里那些函数参数太多太长了,没必要记得,也没必要会写,但是必须要看懂!知道哪些是重点内容,比如这里的消息回调函数就是重中之重,非常重要,非常重要,
还有常用的API最好都记下来,背背就好,常用的几百个也不多,如果不学SDK后面的解密系列(我觉得叫黑客入门系列更合适)根本看不懂。。当然不学汇编一切都是然并卵。。
ba21 发表于 2018-10-7 19:05
对不起是我眼神不好没看出来,谢谢 ba21 发表于 2018-10-7 19:05
请问为什么我生成的窗口标题栏和窗口都是白色,而教材上标题栏是蓝色?? ba21 发表于 2018-10-7 19:05
而且我的鼠标一进入窗口,形状就变成了一个小窗口,不是指针了。 支离疏 发表于 2018-10-7 20:32
而且我的鼠标一进入窗口,形状就变成了一个小窗口,不是指针了。
在问之前最好先自己仔细对比下代码在提问。这是学习的基本条件。
wndclass.hCursor =LoadCursor (NULL, IDC_ARROW);
DispatchMessage(&msg);
}
//return msg.wParam; 紫霞圣人 发表于 2018-10-7 19:22
如果想做黑客。。这个必须的学,还要学的比较精通,跟着小甲鱼视频学,把课后题做了,学完了再买本Windows ...
谢谢回复 ba21 发表于 2018-10-7 21:44
在问之前最好先自己仔细对比下代码在提问。这是学习的基本条件。
wndclass.hCursor =LoadCursor (NU ...
谢谢,请原谅我这大叔年龄的大脑 紫霞圣人 发表于 2018-10-7 19:22
如果想做黑客。。这个必须的学,还要学的比较精通,跟着小甲鱼视频学,把课后题做了,学完了再买本Windows ...
我c语言学过有一定基础,C++一定要学吗? 为什么DispatchMessage 派发消息注释掉??
页:
[1]