windows程序

#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(
 HWND hwnd,
 UINT uMsg,
 WPARAM wParam,
 LPARAM lParam
);

int WINAPI WinMain(

 HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPSTR lpCmdLine,
 int nCmdShow
 )
{
//设计一个窗口类
 WNDCLASS wndcls;
 wndcls.cbClsExtra=0;
 wndcls.cbWndExtra=0;
 wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
 wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
 wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
 wndcls.hInstance=hInstance;   //
 wndcls.lpfnWndProc=WinSunProc;
 wndcls.lpszClassName="sunxin2006";
 wndcls.lpszMenuName=NULL;
 wndcls.style=CS_HREDRAW|CS_VREDRAW;
 RegisterClass(&wndcls);


 //创建窗口,定义一个变量用来保存成功创建窗口后返回的句柄

 HWND hwnd;
 hwnd=CreateWindow("sunxin2006","http://www.sunxin.org",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);

 //显示及刷新窗口
    ShowWindow(hwnd,SW_SHOWNORMAL);
 UpdateWindow(hwnd);

 //定义消息结构体,开始消息循环

 MSG msg;
 while(GetMessage(&msg,NULL,0,0))
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);

 }
 return msg.wParam;
 
}


//编写窗口过程函数

LRESULT CALLBACK WinSunProc( HWND hwnd,   //handle to window
       UINT uMsg,    // message identifier
       WPARAM wParam,  // first message parameter
       LPARAM lParam )  //second message parameter
{
 switch(uMsg)
 {
 case WM_CHAR:
  char szChar[20];
  sprintf(szChar,"char code is %d",wParam);
  MessageBox(hwnd,szChar,"char",0);
  break;
 case  WM_LBUTTONDOWN:
  MessageBox(hwnd,"mouse clicked","message",0);
  HDC hdc;
  hdc=GetDC(hwnd);
  TextOut(hdc,0,50,"程序员之家",strlen("程序员之家"));
  //ReleaseDC(hwnd,hdc);
  break;
 case WM_PAINT:
  HDC hDC;
  PAINTSTRUCT ps;
  hDC=BeginPaint(hwnd,&ps);
  TextOut(hdc,0,0,"http://sunxin.org",strlen("http://sunxin.org"));
  EndPaint(hwnd,&ps);
  break;
 case WM_CLOSE:
   if(IDYES==MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))
   {
    DestroyWindow(hwnd);
   }
   break;
 case WM_DESTROY:
  PostQuitMessage(0);
  break;
 default:
  return DefWindowProc(hwnd,uMsg,wParam,lParam);

 }
 return 0;
}

 

 

  MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

 

Parameters
hWnd
[in] Handle to the owner window of the message box to be created. If this parameter is NULL, the message box has no owner window.
lpText
[in] Long pointer to a null-terminated string that contains the message to be displayed.
lpCaption
[in] Long pointer to a null-terminated string used for the dialog box title. If this parameter is NULL, the default title “Error” is used.
uType
[in] Specifies a set of bit flags that determine the contents and behavior of the dialog box. This parameter can be a combination of flags from the following groups of flags.

Specify one of the following flags to indicate the buttons contained in the message box:

ValueDescription
MB_ABORTRETRYIGNOREThe message box contains three push buttons: Abort, Retry, and Ignore.
MB_OKThe message box contains one push button: OK. This is the default.
MB_OKCANCELThe message box contains two push buttons: OK and Cancel.
MB_RETRYCANCELThe message box contains two push buttons: Retry and Cancel.
MB_YESNOThe message box contains two push buttons: Yes and No.
MB_YESNOCANCEL

The message box contains three push buttons: Yes, No, and Cancel.

 

return type:

Zero indicates that there is not enough memory to create the message box.

Upon success, one of the values described in the following table is returned.

ValueDescription
IDABORTAbort button was selected.
IDCANCELCancel button was selected.
IDIGNOREIgnore button was selected.
IDNONo button was selected.
IDOKOK button was selected.
IDRETRYRetry button was selected.
IDYESYes button was selected.

 

 

  DefWindowProc这个函数是默认的窗口处理函数,我们可以把不关心的消息都丢给它来处理。这个函数在处理关闭窗口消息WM_CLOSE时,是调用DestroyWindow函数关闭窗口并且发WM_DESTROY消息给应用程序;而它对WM_DESTROY这个消息是不处理的;我们在应用程序中对这个消息的处理是发出WM_QUIT消息。因此WM_CLOSE、WM_DESTROY、WM_QUIT这三个消息是先后产生的。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值