晨暮326 2022-03-06 09: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 09: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月14日
  • 已采纳回答 3月6日
  • 修改了问题 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 CMAKE+VS2019+QT5.15.2组合进行二次编译
  • ¥15 nginx 配置静态html访问 ,后台登录时页面始终被重定向到登录页,无法访问到后台的静态html页
  • ¥20 自动登录的j2ee程序编译
  • ¥15 fluent模拟静态气体扩散
  • ¥15 java根据模板,生成word文档,需要带目录
  • ¥15 广告联盟的兜底广告是什么意思
  • ¥15 如何证明高斯噪声的包络公式
  • ¥150 寻找王者荣耀开发作者,合作或者解答
  • ¥15 关于cpci总线的几个问题,别用人工智能回答
  • ¥15 乳腺癌数据集 相关矩阵 特征选择