WINDOWS程序设计示例:创建视窗

#include<windows.h>

//#pragama comment(lib,"WINMM.LIB")

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)
{
 //注册视窗类别
 static TCHAR szAppName[]=TEXT("HelloWin");
 HWND hwnd;
 MSG msg;
 WNDCLASS wndclass;
 wndclass.style = CS_HREDRAW|CS_VREDRAW;      //每当视窗的水平方向大小(CS_HREDRAW)或者垂直方向大小(CS_VREDRAW)改变之後,视窗要完全重画
 wndclass.lpfnWndProc = WndProc;              //依据这个类别来建立的所有视窗所使用的视窗讯息处理程式的位址
 wndclass.cbClsExtra=0;                       //用于在视窗类别结构中预留一些额外空间
 wndclass.cbWndExtra=0;                       //用于在Windows内部保存的视窗结构中预留一些额外空间
 wndclass.hInstance = hInstance;              //程式的执行实体代号
 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//为所有依据这个视窗类别建立的视窗设置一个图示
 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);  //载入一个预先定义的滑鼠游标,并传回该游标的代号。当滑鼠游标在依据这个类别建立的视窗的显示区域上出现时,它变成一个小箭头
 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//建立视窗背景颜色
 wndclass.lpszMenuName=NULL;                     //指定视窗类别功能表
 wndclass.lpszClassName = szAppName;                  //视窗类别的文字名称

 if(!RegisterClass(&wndclass))
 {
  MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppName,MB_ICONERROR);
  return 0;
 }
 
 //创建视窗
 hwnd = CreateWindow(szAppName,     //视窗类名
  TEXT("The hello program"),  //视窗标题
  WS_OVERLAPPEDWINDOW,          //视窗样式
  CW_USEDEFAULT,                 //指定视窗左上角相对于荧幕左上角的初始位置
  CW_USEDEFAULT,
  CW_USEDEFAULT,                //指定视窗的宽度和高度
  CW_USEDEFAULT,
  NULL,                         //最上层视窗,NULL为桌面视窗
  NULL,                         //视窗功能表代号
  hInstance,                    //程式执行实体代号
  NULL                          //建立参数指标,用于存取稍后程式中可能引用到的资料
  );

 //显示视窗
 //ShowWindow(hwnd,iCmdShow);        //第二个参数用于确定最初如何在荧幕上显示视窗,是一般大小、最大化还是最小化
 ShowWindow(hwnd,SW_SHOWNORMAL);
 UpdateWindow(hwnd);
 //讯息回圈
 while(GetMessage(&msg,NULL,0,0))    //第二三四个参数为NULL或0,表示程式接收它自己建立的所有视窗的所有讯息
 {
  TranslateMessage(&msg);         //将msg结构传给windows,进行一些键盘转换
  DispatchMessage(&msg);         //将msg结构回传给windows。
 }

 return msg.wParam;
}

//视窗讯息处理程式
//视窗讯息处理程式所接受的每个讯息均是一个数值来标识的,也就是传给视窗讯息处理程式的message参数。
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
 HDC hdc;
 PAINTSTRUCT ps;          //包含一些视窗讯息处理程式,可以用来更新显示区域的内容
 RECT rect;

 switch(message)
 {
 /*case WM_MOVE:
  PlaySound(TEXT("D://ZiLiao//Music//Music//soft music//Crazy.mp3"),NULL,SND_FILENAME|SND_ASYNC);
  return 0;
 case WM_SIZE:
  PlaySound(TEXT("D://ZiLiao//Music//Music//soft music//Crazy.mp3"),NULL,SND_FILENAME|SND_ASYNC);
  return 0;*/
 case WM_CREATE:
  PlaySound(TEXT("D://ZiLiao//Music//Music//soft music//Crazy.mp3"),NULL,SND_NOSTOP);
  return 0;
 case WM_PAINT:
  hdc = BeginPaint(hwnd,&ps);
  GetClientRect(hwnd,&rect);
  DrawText(hdc,TEXT("Hello,Windows 98!"),-1,&rect,
   DT_SINGLELINE|DT_CENTER|DT_VCENTER);
  EndPaint(hwnd,&ps);
  return 0;
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 return DefWindowProc(hwnd,message,wParam,lParam);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值