windows程序

来源:互联网 发布:python 弹出消息框 编辑:程序博客网 时间:2024/06/06 23:16

#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, LPCTSTRlpText, LPCTSTR lpCaption, UINTuType);

 

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:

ValueDescriptionMB_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 andCancel.MB_RETRYCANCELThe message box contains two push buttons: Retry andCancel.MB_YESNOThe message box contains two push buttons: Yes andNo.MB_YESNOCANCEL

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

 

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.

ValueDescriptionIDABORTAbort 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这三个消息是先后产生的。