Windows-API程序例子--//一定要学会看MSDN

//一定要学会看MSDN

#include "StdAfx.h"

#include <windows.h>
LRESULT  CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数声明,这一函数将处理发往应用程序窗口的各种消息
char szClassName[]="Windowclass1";//窗口结构体的名称
char szAppTitle[]="chen";//窗口标题
INT PASCAL WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,INT nCmdShow )
{
HWND hMainWnd;//窗口句柄
MSG msg;//消息结构体
WNDCLASS myWC;//窗口结构体

if (!hPrevInstance)//表示前一应用程序实例句柄,这一语句的作用是判断是否已有应用程序的实例在运行
{
//应用程序在经历窗口前,应先规定所要创建的窗口的特征,下面一系列的语句通过给窗口的结构体的数据成员赋值来规定所要创建的窗口的特征。
myWC.style=CS_HREDRAW|CS_VREDRAW;//窗口风格
myWC.lpfnWndProc=WndProc;//本窗口的消息处理函数(窗口函数)
myWC.cbClsExtra=0;//附加参数
myWC.cbWndExtra=0;//附加参数
myWC.hInstance=hInstance;//当前应用程序的实例句柄
myWC.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口图标
myWC.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口光标
myWC.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景色
myWC.lpszMenuName=NULL;//窗口菜单
myWC.lpszClassName=szClassName;//给窗口结构体命名,CreateWindow()函数将根据窗口结构体名称来建立窗口
RegisterClass(&myWC);//注册窗口
}
//下面用CreateWindow()函数来建立窗口,并返回所建立窗口的句柄
hMainWnd=CreateWindow(szClassName,szAppTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);//
ShowWindow(hMainWnd,SW_SHOWMAXIMIZED);//显示最大化窗口
UpdateWindow(hMainWnd);//更新窗口


//下面用While()循环来建立消息循环
while (GetMessage(&msg,NULL,0,0))//获取消息,填充msg结构体
{
TranslateMessage(&msg);//翻译键盘消息
DispatchMessage(&msg);//向窗口函数发送消息,让窗口函数处理
}

return msg.wParam;
}
LRESULT  CALLBACK WndProc(HWND hMainWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
char messageleft[]="the left button have been pushed";//单机鼠标时,消息框将显示的提示内容
char messageright[]="the right button have been pushed";//右击,消息框将显示的提示内容
switch(message)
{
case WM_RBUTTONDOWN:
{
MessageBox(GetFocus(),messageright,"chen",MB_OK|MB_ICONINFORMATION);
break;
}
case WM_LBUTTONDOWN:
{
MessageBox(GetFocus(),messageleft,"chen",MB_OK|MB_ICONINFORMATION);
break;
}


case WM_DESTROY://关闭应用程序窗口时发送的消息
{
PostQuitMessage(0);//发出WM_QUIT消息,结束应用程序
return 0;
}
default:
break;
}
return DefWindowProc(hMainWnd,message,wParam,lParam);//其他没有处理的消息交给Windows做默认处理
}
/*
hMainWnd=CreateWindow(
szClassName,//窗口结构体名字
szAppTitle,//窗口的标题
WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,//分别代表窗口左上角XY坐标和窗口的高度、宽度,都使用默认值
NULL,//父窗口句柄
NULL,//窗口菜单句柄
hInstance,//应用程序实例句柄
NULL//附加参数
);
*/
/*
第一个错误是:处理函数返回类型错误,MSDN上是这样的:
LRESULT CALLBACK WindowProc(
_In_  HWND hwnd,
_In_  UINT uMsg,
_In_  WPARAM wParam,
_In_  LPARAM lParam
);
第二个错误是字符编码:Unicode   与  ANSI 的问题  
有两个方法:
方法一、就是在工程属性里,把Unicode改为多字符类型。
方法二,就是把字符串全部写成wchar_t类型就可以,就是把字符串加上 _T(" ");
*/

/*还有个最简单的错误:把英文的{}打成了中文的{},这个错误没有提示,

注意观察的话,就会发现鼠标点击中文的{},

不会出现2个配套的标识,就代表是错误的,此时按Ctrl+K+F键将是无效的*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值