求解关于Windows编程“出现宏展开中遇到意外的文件结束”的问题下面的是有关代码
#include<Windows.h>
#include<tchar.h>
//声明消息回调函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);
//窗口类名和窗口标题
const TCHAR szWindowClass[]=L"第一个窗口";
const TCHAR szWindowTitle[]=L"主窗口标题";
//WinMain函数,入口点
int WINAPI_tWinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPTSTR lpCmdLine,int nCmdShow)
{
//注册窗口类
WNDCLASSEX wcex={0};//窗体结构体
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style=CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.hInstance=hInstance;
wcex.hIcon=LoadIcon(NULL,IDI_APPLICATION);//使用系统默认的图标
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);//使用系统默认的光标
wcex.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//白色画刷
wcex.lpszClassName=szWindowClass;
RegisterClassEx(&wcex);
//创建窗口
HWND hWnd=CreateWindow(
szWindowClass,//窗口类名
szWindowTitle,//窗口标题
WS_OVERLAPPEDWINDOW,//窗口风格
100,200,500,500,//左上角坐标以及宽度。高度
HWND_DESKTOP,
NULL,
hInstance,
NULL
};
if(!hWnd)return FALSE;//如果窗体结构创建失败则退出
//显示并更新窗口
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
//进入消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//窗口函数,用于消息处理
LRESULT CALLBACK WndProc(HWND hwnd,UINT mag,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd,msg,wParam,lParam);
}
}
[解决办法]
是不是哪边用到宏的地方定义出错了,或者与系统定义的冲突了?
[解决办法]
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
[解决办法]
#include<Windows.h>#include<tchar.h>//声明消息回调函数LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);//窗口类名和窗口标题const TCHAR szWindowClass[]=L"第一个窗口";const TCHAR szWindowTitle[]=L"主窗口标题";//WinMain函数,入口点int WINAPI _tWinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPTSTR lpCmdLine,int nCmdShow){ //注册窗口类 WNDCLASSEX wcex={0};//窗体结构体 wcex.cbSize =sizeof(WNDCLASSEX); wcex.style =CS_HREDRAW|CS_VREDRAW; wcex.lpfnWndProc =(WNDPROC)WndProc; wcex.hInstance =hInstance; wcex.hIcon =LoadIcon(NULL,IDI_APPLICATION);//使用系统默认的图标 wcex.hCursor =LoadCursor(NULL,IDC_ARROW);//使用系统默认的光标 wcex.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);//白色画刷 wcex.lpszClassName =szWindowClass; RegisterClassEx(&wcex); //创建窗体结构 HWND hWnd; //定义窗体句柄 hWnd = CreateWindow( szWindowClass, L"mygame", WS_OVERLAPPEDWINDOW, 0, //窗体左上角相对于屏幕的X坐标 0, //窗体左上角相对于屏幕的Y坐标 800,600, //窗体的宽度和高度 NULL, //父窗口句柄 NULL, //窗口菜单句柄 hInstance, NULL); if(!hWnd)return FALSE;//如果窗体结构创建失败则退出 //显示并更新窗口 ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); //进入消息循环 MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}//窗口函数,用于消息处理LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){ switch(msg) { case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hWnd,msg,wParam,lParam); }}