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结构传给该窗口的值

VB + API 获取 IE 的 "代理服务器" 配制

Option ExplicitPrivate Type INTERNET_PROXY_INFO    dwAccessType    As Long    lpszProxy       As Lon...
  • playyuer
  • playyuer
  • 2001-07-09 13:15:00
  • 1052

java程序基本框架

public class 类名(文件名){ 多个static方法 public static void main(String[] args){ 过程; 或者调用其他方法; 类名1    对...
  • lexiaowu
  • lexiaowu
  • 2017-09-17 12:59:17
  • 327

代码基本框架

这个框架是最基本的了,了解了它,我们可以扩展出相关的技术,不管是net家族的还是开源的,都是为了解决实际项目中遇到的问题: 一是针对代码:代码的可扩展性、可重用性、耦合度、易于维护、简洁高效...
  • dongliang_shali
  • dongliang_shali
  • 2016-03-06 18:56:50
  • 237

windows 系统框架 总结

windows系统是一个完美美的操作系统,它具有可扩展性、可移植性、稳定性、健壮性、兼容性、可伸缩性,性能优越,其实现过程非常复杂,其主要的思想是系统分层,每个层都有自己的责任和义务,它隐藏细节实现,...
  • xiaoxiaobaige
  • xiaoxiaobaige
  • 2015-07-02 14:53:44
  • 870

Windows SDK编程之一 窗口示例程序

/***************************************************** Windows SDK编程之一  窗口示例程序**********************...
  • newsunet
  • newsunet
  • 2003-10-24 17:43:00
  • 1371

Windows API入门系列之五 -一个正儿八经的SDK程序

上一篇,讲了一个简单的SDK程序的多种版本的编写,弹出了一个窗口,显示了我们计算1到10的结果,计算的程序不是重点,重点在于,一:让大家认识到Unicode版本的程序和ASCII版本的程序在编程方面的...
  • Qsir
  • Qsir
  • 2017-12-06 12:11:18
  • 233

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

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

类库/框架/SDK

类库:封装好的代码,通过调用开放出来的API获取相应的功能 框架:也是封装好的代码,不过会功能更加多样,一个框架会包含多个类库,并且框架面向的顶层的开发,而类库更多的是面向底层的开发。 ...
  • jianandjan
  • jianandjan
  • 2015-11-21 18:35:28
  • 869

windows 程序的基本框架

首先介绍下Windows 系统密切相关的几个基本概念:      ⒈窗口:这是我要说的第一个概念。窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位,但是很多人都误以为只有...
  • HappyPersistBear
  • HappyPersistBear
  • 2014-07-14 21:44:45
  • 285
收藏助手
不良信息举报
您举报文章:Windows SDK程序的基本框架
举报原因:
原因补充:

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