刚刚接触windowsapi,这个例子是肿么了,是我编译坏境配置的问题么?
这是代码:#include<windows.h>
#include<stdio.h>
HINSTANCE hinst;//全局变量
//函数声明
int WINAPI WinMain(HINSTANCE ,HINSTANCE,LPSTR,int);
LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
//显示一个窗口
int WINAPI WinMain (HINSTANCE hinstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WNDCLASSEX wcx;//窗口类
HWND hwnd;//窗口句柄
MSG msg;//消息
BOOL fGotMessage;//是否成功获得消息、
hinst =hinstance;//应用程序实例句柄,保存为全局变量
//填充窗口类的数据结构
wcx.cbSize = sizeof(wcx);//结构体的大小
wcx.style = CS_HREDRAW | CS_VREDRAW;//大小改变时重绘界面
wcx.lpfnWndProc = MainWndProc;//窗口消息处理函数
wcx.cbClsExtra = 0;//不使用类内存
wcx.cbWndExtra = 0;//不是用窗口内存
wcx.hInstance = hinstance;//所属的应用程序实例句柄
wcx.hIcon = LoadIcon(hinstance, IDI_APPLICATION);//默认图标
wcx.hCursor = LoadCursor(NULL, IDC_ARROW);//默认光标
wcx.hbrBackground = (HBRUSH)(WHITE_BRUSH);//白色背景
wcx.lpszMenuName =NULL;//菜单
wcx.lpszClassName = "搭错车的小火柴";//窗口类名
wcx.hIconSm = (HICON)LoadImage(hinstance, MAKEINTRESOURCE(5),IMAGE_ICON,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CXSMICON),LR_DEFAULTCOLOR);//小图标
//注册窗口类
if(!RegisterClassEx(&wcx))
{return 1;}
//创建窗口 窗口名 窗口标题 窗口样式 默认水平位置 默认垂直位置 默认宽度 默认高度 无父窗口 使用窗口类的菜单 应用程序实例句柄 创建窗口时无数据
hwnd=CreateWindow("搭错车的小火柴", "搭错车的小火柴", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, NULL, hinstance, NULL);//发生错误 error C2664: “CreateWindowExA”: 不能将参数 10 从“HWND”转换为“HMENU”,最后改变了倒数第三个参数的属性
/*HWND CreateWindow(
LPCTSTR lpClassName, // 指向注册类名的指针
LPCTSTR lpWindowName, // 指向窗口名称的指针
DWORD dwStyle, // 窗口风格
int x, // 窗口的水平位置
int y, // 窗口的垂直位置
int nWidth, // 窗口的宽度
int nHeight, // 窗口的高度
HWND hWndParent, // 父窗口的句柄
HMENU hMenu, // 菜单的句柄或是子窗口的标识符
HANDLE hlnstance, // 应用程序实例的句柄
LPVOID lpParam // 指向窗口的创建数据
);*/
if(!hwnd)
{ return 1;}
//显示窗口
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
//消息循坏
while((fGotMessage=GetMessage(&msg,(HWND)NULL,0,0))!=0&&fGotMessage!=-1)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//窗口消息的默认处理
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_DESTROY: ExitThread(0);return 0;
default :return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
}
附:在codeblocks里面可以运行,但是在vs2012不行,这是怎么了呢