鱼C论坛

 找回密码
 立即注册
查看: 4034|回复: 13

第一个windows窗口程序,语法没错误,编译有问题,求解

[复制链接]
发表于 2013-5-2 22:45:42 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 属専色灰 于 2013-7-14 00:03 编辑
  1. #include<windows.h>
  2. #include<iostream>

  3. LRESULT CALLBACK WindowProc(
  4.                                                         HWND hwnd,      // handle to window
  5.                                                         UINT uMsg,      // message identifier
  6.                                                         WPARAM wParam,  // first message parameter
  7.                                                         LPARAM lParam   // second message parameter
  8.                                                         );

  9. int WINAPI WinMain( HINSTANCE hInstance,  HINSTANCE hPrevInstance,  LPSTR lpCmdLine,  int nShowCmd )
  10. {
  11.         WNDCLASS wndcls;
  12.         wndcls.cbClsExtra = 0;
  13.         wndcls.cbWndExtra = 0;
  14.         wndcls.hbrBackground =(HBRUSH)GetStockObject(GRAY_BRUSH);
  15.         wndcls.hCursor  =LoadCursor(NULL,IDC_ARROW);
  16.         wndcls.hIcon = LoadIcon(NULL,IDI_HAND);
  17.         wndcls.hInstance = hInstance;
  18.         wndcls.lpfnWndProc = WindowProc;
  19.         wndcls.lpszClassName = "huise";
  20.         wndcls.lpszMenuName = NULL;
  21.         wndcls.style = CS_HREDRAW | CS_VREDRAW;
  22.         
  23.         RegisterClass(&wndcls);

  24.         HWND hwnd;

  25.         hwnd = CreateWindow("huise","晦涩专属",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
  26.                                 NULL,NULL,hInstance,NULL);

  27.         ShowWindow(hwnd,SW_SHOWNORMAL);

  28.         UpdateWindow(hwnd);

  29.         MSG msg;
  30.         while(GetMessage(&msg,NULL,0,0))
  31.         {
  32.                 TranslateMessage(&msg);
  33.                 DispatchMessage(&msg);
  34.         }

  35.         return 0;
  36. }

  37. LRESULT CALLBACK WindowProc(
  38.                                                         HWND hwnd,      // handle to window
  39.                                                         UINT uMsg,      // message identifier
  40.                                                         WPARAM wParam,  // first message parameter
  41.                                                         LPARAM lParam   // second message parameter
  42.                                                         )
  43. {
  44.         
  45.         switch(uMsg)
  46.         {
  47.         case WM_CHAR:
  48.                 char szChar[20];
  49.                 sprintf(szChar,"char is %c",wParam);
  50.                 MessageBox(hwnd,szChar,"温馨提示",MB_OK);
  51.                 break;

  52.         default:
  53.                 return(DefWindowProc(hwnd,uMsg,wParam,lParam));

  54.         }
  55. return 0;
  56. }
  57. 如标题,求解释!是不是我哪里写错了
复制代码
自己结贴了,很多人都碰到,关于这个问题,因为是以控制台程序建立工程,所以不能编译(入口点是main),打开工程设置,link选项!改成windows即可!详情请看,vc++深入详解。。。

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-2 23:43:50 | 显示全部楼层

回帖奖励 +1 鱼币

可以运行啊
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-3 00:09:15 | 显示全部楼层

--------------------Configuration: SDK练习 - Win32 Debug--------------------
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/SDK练习.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

SDK练习.exe - 1 error(s), 0 warning(s)

求助了,问题是这个
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-3 00:14:56 | 显示全部楼层

回帖奖励 +1 鱼币

你没有主函数main,无法确定入口,所以链接不成功!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-3 00:27:06 | 显示全部楼层
如果楼主忘记了02.#include<iostream>后面加上using namespace std;其他代码是没有问题的
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-3 01:44:26 | 显示全部楼层
Samples、懂么 发表于 2013-5-3 00:14
你没有主函数main,无法确定入口,所以链接不成功!

11行的地方不是有了winmain么
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-3 01:45:34 | 显示全部楼层
CJRLLH 发表于 2013-5-3 00:27
如果楼主忘记了02.#include后面加上using namespace std;其他代码是没有问题的

不用数据流输入输出时不需要加这个的,孩子!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-3 10:00:06 | 显示全部楼层
这是个win32 application工程,你用win32 console application来搭建 当然不行。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-3 10:04:17 | 显示全部楼层
这个程序貌似退出时 没有注销进程。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-3 10:07:50 | 显示全部楼层
是用什么程序编的windows窗口程序呀!! 求解
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-3 19:39:42 | 显示全部楼层
wjb8love_9c7c9c 发表于 2013-5-3 10:00
这是个win32 application工程,你用win32 console application来搭建 当然不行。

确实是这样!昨天搞了几个小时才发现问题,汗死了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-5-3 19:41:35 | 显示全部楼层
wjb8love_9c7c9c 发表于 2013-5-3 10:04
这个程序貌似退出时 没有注销进程。

恩,当时只是考虑程序是否能够正常运行的问题,所以没写这个!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-4 06:15:26 | 显示全部楼层
本帖最后由 YSK 于 2013-5-4 06:33 编辑

TM截图未命名.jpg
上面是你的代码生成的,我一句不落的拷贝下来:lol,每一句代码详细说明,孙鑫教程里面有。很经典唞。进程结束很简单,回调函数里面加上
case WM_DESTROY:
                PostQuitMessage(0);
                break;

然后点xx就可以了。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-6 12:26:57 | 显示全部楼层
淡定,淡定,淡定……%D
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-29 21:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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