Windows SDK程序的基本框架

原创 2004年08月11日 16:15:00

#include
//windows.h头文件包含了大多数windows API函数与数据结构的定义


//声明窗口处理函数
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


//WinMain函数负责创建窗体与建立消息循环:
int WINAPI WinMain(HINSTANCE hInstance, //应用程序当前实例句柄
HINSTANCE hPrevInstance, //应用程序其它实例句柄,常为NULL
LPSTR ipLmdLine, //指向程序命令行参数的指针
int nShowCmd) //标识应用程序开始执行时窗口显示方式
{HWND hwnd; //窗口句柄
MSG Message; //消息名
WNDCLASS Wndclass; //定义窗口类结构

char* lpszClassName="Wnd"; // 窗口类名
char* lpszTitle="WndFrame"; // 窗口标题

//以下是对Wndclass各成员付值
Wndclass.style =0;
Wndclass.lpfnWndProc =WndProc; //指定窗口消息处理函数
Wndclass.cbClsExtra =0;
Wndclass.cbWndExtra =0;
Wndclass.hInstance =hInstance;
Wndclass.hIcon =LoadIcon(NULL,IDI_ASTERISK);
Wndclass.hCursor =LoadCursor(NULL,IDC_IBEAM);
Wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
Wndclass.lpszMenuName =NULL;
Wndclass.lpszClassName =lpszClassName;

if(!RegisterClass(&Wndclass)) //试着注册窗口类
{MessageBeep(0); //失败则响铃
return FALSE;
}

//调用CreateWindow()函数创建一个窗口
hwnd=CreateWindow(lpszClassName,
lpszTitle,
WS_VSCROLL|WS_SYSMENU,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,NULL,
hInstance,
NULL);

ShowWindow(hwnd,SW_SHOWMAXIMIZED); //显示窗口
UpdateWindow(hwnd); //刷新窗口
while(GetMessage(&Message,NULL,0,0)) //建立消息循环
{TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam ;
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
char* szMsg="Hello";
switch(message)
{case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"You click left button?",szMsg,MB_OK)
break;
case WM_RBUTTONDOWN:
MessageBox(hwnd,"你击了右键!",szMsg,MB_OK);
break;

default:return DefWindowProc(hwnd,message,wParam,lParam);
}
return (0);
}



附录:

句柄是窗口或其它资源在系统中唯一的表识符,常用句柄有:
HWND 窗口句柄
HDC 设备环境句柄
HINSTANCE 当前实例句柄
HBITMAP 位图句柄
HCURSOR 光标句柄
HICON 图标句柄
HFONT 字体句柄
HMENU 菜单句柄
HBRUSH 画刷句柄


MSG结构的定义:
typedef struct tagMSG { // msg
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
MSG结构中包含了线程的消息队列中的消息信息。
成员:
hwnd:
标识了接收的消息的窗口过程所属的窗口的句柄。
Message:
指定了消息号。
WParam:
指定了消息的附加信息。具体的含义与message成员的值有关。
LParam:
指定了消息的附加信息。具体的含义与message成员的值有关。
Time:
指定了发出消息的时间。
Pt:
指定了发出消息时光标位置的屏幕坐标。


WNDCLASS数据结构的定义:
typedef tagWNDCLASS
{
UINT style; //窗口类的风格,一般为0
WNDPROC lpfnWndProc; //指向窗口函数的指针
int cbClsExtra; //分配在窗口类结构后的字节数
int cdWndExtra; //分配在窗口类实例后的字节数
INSTANCE hInstance; //应用程序的实例句柄
HICON hIcon; //窗口类的图标
HCURSOR hCursor; //窗口类的光标
HBRUSH hbrBackground; //窗口类的背景刷
LPCTSTR lpszMenuName; //窗口类的菜单资源名
LPCTSTR lpszClassName; //窗口类名
}WNDCLASS;

CreateWindow()函数原型:
HWND CreateWindow(LPCTSTR lpszClassName, //窗口类名
LPCTSTR lpszTitle, //标题
DWORD dwStyle, //窗口风格
int X, //坐标X
int Y, //坐标Y
int nWidth, //宽
int nWeight, //高
HWND hwndParent, //父窗口句柄
HMENU hMenu, //主菜单句柄
HINSTANCE hInstance, //应用程序句柄
LPVOID lpParam) //createstrect结构传给该窗口的值

windows基础应用程序编程(一):基本框架

从一开始编程时,大家面对着黑乎乎的控制台窗口,就开始幻想什么时候能进入windows下进行编程。能够编写出具有形形色色窗口的人往往都被我们认为是牛人。而从控制台窗口进入windows下进行编程,对于初...
  • zhbmd
  • zhbmd
  • 2014年08月08日 23:22
  • 1118

windows SDK程序的框架分析

一个典型的SDK程序的框架如下:   1、RegeditClass 注册窗口类。 2、CreateWindow 根据窗口类,创建对应的窗口 3、窗口过程回调函数(WndProc) 4、ShowWin...
  • qj1943
  • qj1943
  • 2016年08月22日 15:14
  • 275

windows 程序的基本框架

首先介绍下Windows 系统密切相关的几个基本概念:      ⒈窗口:这是我要说的第一个概念。窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位,但是很多人都误以为只有...
  • HappyPersistBear
  • HappyPersistBear
  • 2014年07月14日 21:44
  • 273

微信小程序基本框架讲解

一: 当我们默认创建成功一个微信小程序项目时,项目会生成以下文件   1. pages目录下代表我们项目的的界面,该项目代表有两个界面,   index界面及log界面   ,以index界...
  • zhou12314
  • zhou12314
  • 2016年10月05日 00:02
  • 1019

Windows程序基本结构-Windows SDK笔记

Windows SDK笔记(一):Windows程序基本结构 一、概述 Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。 程序中只要按一定的格式...
  • WaitForFree
  • WaitForFree
  • 2013年10月03日 11:42
  • 992

Windows SDK笔记(一):Windows程序基本结构

Windows SDK笔记(一):Windows程序基本结构 一、概述 Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。 程序中只要按一定的...
  • hubinbin595959
  • hubinbin595959
  • 2016年06月22日 12:54
  • 181

c++的基本框架

c++真是个神奇的东西,本人学c++也有一段时间了。现在想把所学知识整理一下,顺便与各位分享,有错误之处还望各位指点。     秉承着少说虚话,多干实事的原则,直接先上一个程序再说 #includ...
  • qq_38444801
  • qq_38444801
  • 2017年05月06日 19:29
  • 600

一个完整的Windows程序框架

前面我们演示了带界面的Windows程序,但那仅仅是一个弹窗,调用MessageBox函数就可以实现,不是一个真正意义上的窗口。我们通常所说的窗口包含最大化、最小化、关闭按钮,也包含菜单、单选框、图像...
  • softn
  • softn
  • 2016年06月20日 06:32
  • 1791

Win32应用程序基本框架详解

#include //窗口过程的回调函数,函数名WndProc可自由定义 LRESULT CALLBACK WndProc(HWND hWnd, //当前接收消息的窗口句柄 U...
  • lynch0571
  • lynch0571
  • 2014年04月15日 11:26
  • 755

中断程序框架--收集(徐登伟写)

下边的这段代码是登伟写的,很完美的中断框架,以后就用这个了,站在登伟的肩膀上,嘿嘿。 首先分析下,比较优秀的地方, 先看这段代码:  memcpy(0x0,(unsigned char *)0x...
  • u011202336
  • u011202336
  • 2013年06月25日 17:25
  • 414
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows SDK程序的基本框架
举报原因:
原因补充:

(最多只允许输入30个字)