我自己的windows窗口

/*
HELLOWIN.C Displays "Hello , Windows xp ! " in client area
*/

#include <windows.h>

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
     PSTR szCmdLine, int iCmdShow)
{
 static TCHAR szAppName[] = TEXT ("HelloWin");
 /*
 typedef HANDLE HWND;
 typedef PVOID HANDLE;
 typedef void *PVOID;
 */
 HWND hwnd;
 /*
 typedef struct tagMSG {
  HWND hwnd;
  UINT message;
  WPARAM wParam;
  LPARAM lParam;
  DWORD time;
  POINT pt;
 } MSG;
 */
 MSG msg;
 /*
 typedef struct _WNDCLASS {
   UINT style;
   WNDPROC lpfnWndProc;
   int cbClsExtra;
   int cbWndExtra;
   HANDLE hInstance;
   HICON hIcon;
   HCURSOR hCursor;
   HBRUSH hbrBackground;
   LPCTSTR lpszMenuName;
   LPCTSTR lpszClassName;
 } WNDCLASS;
 窗口 结构体
 */
 WNDCLASS wndclass;  //利用WNDCLASS(WNDCLASSEX)定义窗口对象

 wndclass.style            = CS_HREDRAW | CS_VREDRAW ; //
 wndclass.lpfnWndProc      = WndProc;
 wndclass.cbClsExtra    = 0;
 wndclass.cbWndExtra    = 0;
 wndclass.hInstance       = 0;
 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,                    //window class name
      TEXT ("The Hello Program"),   //Window caption
      WS_OVERLAPPEDWINDOW,    //window style
      CW_USEDEFAULT,      //initial x position
      CW_USEDEFAULT,      //initial y position
      CW_USEDEFAULT,      //initial x size
      CW_USEDEFAULT,      //initial y size
      NULL,        //parent window handle
      NULL,        //window menu handle
      hInstance,       //program instance handle
      NULL);        //creation parameters
 // 设置窗口详细显示状态
 ShowWindow (hwnd, iCmdShow);
 // 刷新并显示窗口
 UpdateWindow (hwnd);
 
 while (GetMessage (&msg, NULL, 0, 0))
 {
  TranslateMessage (&msg);
  DispatchMessage (&msg);
 }
 return msg.wParam;
}
 /* #define CALLBACK __stdcall;
    typedef LONG_PTR LRESULT;
    #if defined(_WIN64)
      typedef __int64 LONG_PTR;
 #else
   typedef long LONG_PTR;
 #endif
 */
LRESULT CALLBACK WndProc  (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 HDC       hdc;
 PAINTSTRUCT  ps;
 RECT      rect;

 switch (message)  //消息 处理 switch
 {
 case WM_CREATE:
  PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
  return  0;

 case WM_PAINT :
  hdc = BeginPaint (hwnd, &ps);
  GetClientRect (hwnd, &rect);
  DrawText (hdc, TEXT ("Hello, windows xp ! "), -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); //调用默认的处理方法
}

 

未解决问题:对于CALLBACK 理解不透,查MSDN 显示 #define CALLBACK __stdcall;  我就不理解了 !!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值