Windows API在VC下编程简单实例

VS2005 Win32项目常见错误解决
本文介绍在Visual Studio 2005的Win32项目开发中遇到的常见错误及解决方案,如fatal error LNK1120: 1个无法解析的外部命令和error C2440: ‘=’: 无法从‘const char[5]’转换为‘LPCWSTR’,并提供了一个简单的Win32程序示例。

 

  在vs 2005下编程时,要在在 Win32项目中 编写,否则会出现"fatal error LNK1120: 1 个无法解析的外部命令" 的错误因为在 Win32项目中, 没有写 WinMain 函数实现就会出现链接错误了。 同样在 Win32 控制台应用程序中, 没有写 main 函数的实现也会出现连接错误一样。另外还要更改工程属性: 配置属性-常规-字符集: unicode字符集改为未设置.否则会出现"error C2440: “=”: 无法从“const char [5]”转换为“LPCWSTR” 与指向的类型无关;转换要求reinterpret_cast、C 样式转换或函数样式转换 "的错误

 

#include <windows.h>//包含应用程序中所需的数据类型和数据结构的定义
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)//窗口函数
{
 switch(message)
 {
 case WM_DESTROY:
  PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息
 default://默认时采用系统消息默认处理函数
  return DefWindowProc(hwnd,message,wParam,lParam);
 }
 return(0);
}
//--------以下初始化窗口类-------------
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
 HWND hwnd;
 MSG Msg;
 WNDCLASS wndclass;
 char lpszClassName[]="窗口";//窗口类名
 char lpszTitle[]="My_windows";//窗口标题名
 //窗口类的定义
 wndclass.style=0;//窗口类型为默认类型
 wndclass.lpfnWndProc=WndProc;//窗口处理函数为WndProc
 wndclass.cbClsExtra=0;//窗口类无扩展
 wndclass.cbWndExtra=0;//窗口实例无扩展
 wndclass.hInstance=hInstance;//当前实例句柄
 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口最小化图标为默认图标
 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标
 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景为白色
 wndclass.lpszMenuName=NULL;//窗口中无菜单
 wndclass.lpszClassName=lpszClassName;//窗口类名为“窗口示例“
//---------以下进行窗口类的注册------------
 if(!RegisterClass(&wndclass))//如果注册失败则发出警告声音
 {
  MessageBeep(0);
  return FALSE;
 }
//创建窗口
 hwnd= CreateWindow(lpszClassName,//窗口类名
       lpszTitle,//窗口实例的标题名
       WS_OVERLAPPEDWINDOW,//窗口的风格
       CW_USEDEFAULT,
       CW_USEDEFAULT,//窗口左上角坐标为默认值
       CW_USEDEFAULT,
       CW_USEDEFAULT,//窗口的高和宽为默认值
       NULL,//此窗口无父窗口
       NULL,//此窗口无主菜单
       hInstance,//创建此窗口应用程序的当前句柄
       NULL);//不使用该值
 ShowWindow(hwnd,nCmdShow);//显示窗口
 UpdateWindow(hwnd);//绘制用户区
 while(GetMessage(&Msg,NULL,0,0))//消息循环
 {
  TranslateMessage(&Msg);
  DispatchMessage(&Msg);
 }
 return Msg.wParam;//程序终止时将消息返回系统
}

 

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值