打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Windows应用程序基础知识 - 笔记 - 吴锦华 - CSDN学生大本营 - Powe...
Windows应用程序的基本概念
1.1.3 Windows的一个特殊数据类型——句柄
句柄类型
说明
HWND
窗口句柄
HINSTANCE
当前程序应用实例句柄
HCURSOR
光标句柄
HFONT
字体句柄
HPEN
画笔句柄
HBRUSH
画刷句柄
HDC
图形设备环境句柄
HBITMAP
位图句柄
HICON
图标句柄
HMENU
菜单句柄
HFILE
文件句柄
1.1.4 Windows应用程序的数据类型
typedef unsighed long DWORD;
typedef int BOOL;
typedef unsighed char BYTE;
typedef unsighed short WORD;
typedef float FLOAT;
typedef unsighed int UINT;
typedef struct  tag_POINT    //描述一个点的位置
{
LONG x,y;
}POINT;
typedef struct tag_RECT{      //描述一个矩形
LONG left;
LONG  top;
LONG  right;
LONG  bottom;
}RECT;
1.1.5 消息与消息循环
1.事件与消息
消息结构的定义如下:
Typedef struct  tagMSG
{
HWND hwnd;   //产生消息的窗口句柄
UINT message;   //消息的标识码
WPARAM wParam;           //消息的附加消息1
LPARAM lParam;              //消息的附加消息2
DWORD time;           //消息进入消息队列的时刻
POINT pt;                            //表示发送该消息是光标的位置
}MSG;
消息的标识
说明
WM_LBUTTONDOWN
按下鼠标左键时产生的消息
WM_LBUTTONUP
放开鼠标左键时产生的消息
WM_RBUTTONDOWN
按下鼠标右键时产生的消息
WM_RBUTTONUP
放开鼠标右键时产生的消息
WM_LBUTTONDBLCLK
双击鼠标左键时产生的消息
WM_RBUTTONDBLCLK
双击鼠标右键时产生的消息
WM_CHAR
按下非系统键时产生的消息,其中wParam为键的ASCII码
WM_CREATE
有CreateWindow( )函数产生的消息
WM_CLOSE
关闭窗口时产生的消息
WM_DESTROY
消除窗口时产生的消息
WM_QUIT
退出程序时,有PostQuitMessage( )函数产生的消息
WM_PAINT
需要窗口重画时产生的消息
2.消息循环
while( GetMessage(&msg,NULL,NULL,NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
1.2 Windows应用程序的结构
1.2.1 主函数
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
1.       描述窗口属性的数据结构——窗口类型
typedef struct  _WNDCLASS
{
UINT        style;                //窗口样式,一般设置为0
WNDPROC  lpfnWndProc;               //指向窗口函数的指针
int   cbClsExtra;             //一般设置为0
int   cbWndExtra;             //一般设置为0
HANDLE   hInstance;               //定义应用程序的实例句柄
HICON    hIcon;                //窗口的图标
HCURSOR        hCursor;            //窗口的光标
HBRUSH                    hbrBackground;                 //窗口的背景颜色
LPCTSTR                    lpszMenuName;                //窗口的菜单资源名
LPCTSTR                    lpszClassName;                 //窗口类型名
}WNDCLASS;
2.注册窗口类型
BOOL RegisterClass (WNDCLASS  &wc);
3.创建窗口
HWND CreateWindow(
LPCTSTR  lpClassName,                                     //窗口类型名
LPCTSTR           lpWindowName,                      //窗口实例的标题
DWORD  dwStyle,                                               //窗口风格
int            x,                                                     //窗口左上角位置坐标值x
int              y,                                                     //窗口左上角位置坐标值y
int              nWidth,                                         //窗口的宽度
int            nHeight,                                        //窗口的高度
HWND    hWndParent,                               //父窗口的句柄
HMENU   hMenu,                                         //主菜单的句柄
HANDLE hInstance,                                               //应用程序实例句柄
LPVOID   lpParam                                        //该值为NULL
);
4.显示窗口
BOOL ShowWindow(
HWND hWnd,   //窗口句柄
int  nCmdShow       //窗口的显示方式
);
5.消息循环
while( GetMessage(&msg,NULL,NULL,NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
1.2.2 消息的处理部分——窗口函数
LRESULT CALLBACK WndProc (HWND hwnd, // 派送消息的窗口句柄
UINT message,   //系统传递来的消息标识
WPARAM wParam,//消息的附加参数(32位)
LPARAM lParam)      //消息的附加参数(32位)
1.2.3 Windows系统、主函数、窗口函数之间的关系
例 1-1  一个简单的Windows程序。当用鼠标左键单击程序窗口的用户区时,计算器的扬声器会发出“叮”的声音。
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE PreInstance,LPSTR lpDmdLine,int cCmdShow)
{
HWND hwnd;
MSG msg;
char lpszClassName[]="窗ä¡ã口¨²";
WNDCLASS wc;
wc.style=0;
wc.lpClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(NULL,IDC_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackgroun=(HBURSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.lpszclassName=lpszClassName;
RegisterClass(&wc);
hwnd=CreateWindow(lpszClassName,
"Windows",
WS_OVERLAPPEDWINDOW,
120,50,800,600,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESUT CALLBACK WndProc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
switch(message)
{
case WM_LBUTTONDOWN: MessageBeep(0);
break;
case WM_DESTROY:PostQuitMessage(0);
break;
default;
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Win32编程基础知识_天空总是蓝色的
用Win32 application建立窗体_入门
Windows API 教程(八) 注册快捷键
[Win32SDK基本]模态窗口和多窗口
为了分析WebRTC, 重学Windows开发
孙鑫VC视频教程笔记之第一课“Windows程序的内部运行原理”
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服