诛仙之鬼厉新传txt:Windows应用程序基础知识 - 笔记 - 吴锦华 - CSDN学生大本营 - Powe...

来源:百度文库 编辑:九乡新闻网 时间:2024/07/13 22:38:35
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
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;
}
Windows应用程序基础知识 - 笔记 - 吴锦华 - CSDN学生大本营 - Powe... JavaEE平台的学习 - 笔记 - 王维树 - CSDN学生大本营 - Powered ... 世情熟,则人情易流; - 笔记 - 潘勇 - CSDN学生大本营 Spring事务管理 - Java - 课堂 - 话题 - 迟宏泽 - CSDN学生大本营...1 Java程序员这个职业赚钱吗?能赚多少钱? - 笔记 - 钟声 - CSDN学生大... SDRAM工作原理及S3C2410 SDRAM控制器配置方法 - 嵌入式 - 课堂 - 话题 - 华清远见 - CSDN学生大本营 - Powered by UCenter Home 计算机学习三宗罪3——计算机达人成长之路(25) - 笔记 - 朱云翔 - CSDN学生大... 系统Windows系统字体及photoshop应用程序 病理刮痧基础知识笔记 MSP430开发笔记 - 人在旅途 - CSDN博客 学生语文基础知识 医学院学生课堂“笔记” 如何修改应用程序池默认连接数?(windows 2003) Windows API一日一练(1)第一个应用程序 ASP.NET页面生命周期与应用程序生命周期 - 程序开发技术博客 - CSDN博客 Windows系统基础知识操作大全 视频教程 Windows系统基础知识操作大全(视频) Windows系统基础知识操作大全(视频教程 ) 公共基础知识笔记-适用于公务员考试 笔记:中断,下半部 - unbutun的专栏 - CSDN博客 FieldByName速度优化 - SUNSTONE的Delphi笔记 - CSDN博客 原创:oracle完整版安装图解 (一) - 笔记 - redarmy_ch - CSDN... VIM技巧之分隔窗口 - erricwang的笔记 - CSDN博客 maven2.0学习笔记[摘] - SQ - CSDN博客