晨暮326 2022-03-06 01:41 采纳率: 50%
浏览 22
已结题

自学win32编程,为什么运行不了呀

问题遇到的现象和发生背景

高中打过c++的竞赛,算是有点基础,大学跟着浅墨的书学win32编程,东西都理解了,但是照搬代码上去运行不了是为什么啊

就是一个简单的窗口

问题相关代码,请勿粘贴截图

#include<windows.h>
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) //窗口过程函数 判断信息
//先定义函数,最后写

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
//设计窗口
WNDCLASSEX wndClass = {0}; //定义了一个窗口
wndClass.cbSize=sizeof(WNDCLASSEX);
wndClass.style=CS_HREDRAW|CS_VREDRAW; //窗口样式 p59
wndClass.lpfnWndProc = WndProc; //过程函数指针
wndClass.cbClsExtra=0;
wndClass.cbWndExtra=0;
wndClass.hInstance=hInstance;
//wndClass.hIcon = (HICON)::LoadImage(NULL,L"icon,ico",IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);//程序图标设置
wndClass.hCursor = LoadCursor(NULL,IDC_ARROW); // 设置光标
wndClass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH); //设置背景颜色
wndClass.lpszMenuName =NULL;
wndClass.lpszClassName=L"ForTheDream";

//注册窗口
if( !RegisterClassEx( &wndClass ))//注册失败直接结束
    return -1;
//创建窗口
HWND hWnd = CreateWindow(L"ForTheDream",L"ForTheDream",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,800,600,NULL,NULL,hInstance,NULL);
//移动窗口p66
//显示窗口
ShowWindow( hWnd , nShowCmd );
//更新窗口
UpdateWindow(hWnd);
//5.处理消息
MSG msg={0};
while (msg.message!= WM_QUIT)
{
    if (PeekMessage(&msg,0, NULL,NULL, PM_REMOVE)){
        TranslateMessage(&msg); 
        DispatchMessage(&msg);//交给wndproc进行处理
    }
}

//注销窗口
UnregisterClass( L"ForTheDream", wndClass.hInstance);

return 0;

}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
switch( message )
{
case WM_PAINT:
ValidateRect (hwnd, NULL);
break;
case WM_KEYDOWN:
if ( wParam == VK_ESCAPE)
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
default:
return DefWindowProc( hwnd, message, wParam, lParam ); //调用默认的窗口
return 0; //正常退出
}

运行结果及报错内容

img

运行的话会显示系统找不到指定文件
还有就是这一条
1>c:\users\lenovo\desktop\for the dream\第二次\第二次\main.cpp(62): fatal error C1075: 与左侧的 大括号“{”(位于“c:\users\lenovo\desktop\for the dream\第二次\第二次\main.cpp(45)”)匹配之前遇到文件结束
别的就没了

我的解答思路和尝试过的方法

我就是完全照搬,除了一些字符串的内容不一样,其他的都是一样的,图标那一行因为没弄文件我也注释掉了
难道是我的vs版本太低了?用的是学校给的2010

我想要达到的结果

就是想正常运行出个窗口来
如果有人愿意带带我那是最好不过了,或者给个交流群也好,学习中出了好多问题都不知道问谁。。

展开全部

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-03-06 01:54
    关注

    编译都没通过啊
    fatal error C1075: 与左侧的 大括号“{”(位于“c:\users\lenovo\desktop\for the dream\第二次\第二次\main.cpp(45)”)匹配之前遇到文件结束
    这是编译错误,得解决编译问题以后才会产生exe文件
    下面这个函数在return 0前少了一个大括号,switch语句代码块只有半个大括号

    LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
    {
    switch( message )
    {
    case WM_PAINT:
    ValidateRect (hwnd, NULL);
    break;
    case WM_KEYDOWN:
    if ( wParam == VK_ESCAPE)
    DestroyWindow(hwnd);
    break;
    case WM_DESTROY:
    PostQuitMessage( 0 );
    break;
    default:
    return DefWindowProc( hwnd, message, wParam, lParam ); //调用默认的窗口
    }
    return 0; //正常退出
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月6日
  • 修改了问题 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 FPGA芯片60进制计数器
  • ¥15 前端js怎么实现word的.doc后缀文件在线预览
  • ¥20 macmin m 4连接iPad
  • ¥15 DBIF_REPO_SQL_ERROR
  • ¥15 根据历年月数据,用Stata预测未来六个月汇率
  • ¥15 DevEco studio开发工具 真机联调找不到手机设备
  • ¥15 请教前后端分离的问题
  • ¥100 冷钱包突然失效,急寻解决方案
  • ¥15 下载honeyd时报错 configure: error: you need to instal a more recent version of libdnet
  • ¥15 距离软磁铁一定距离的磁感应强度大小怎么求
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部