API程序框架

来源:互联网 发布:软件测试分为哪些 编辑:程序博客网 时间:2024/05/16 06:44
 
#include <windows.h>
 
//消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
       HDC hdc ;  //设备内容句柄
    PAINTSTRUCT ps;   //绘图信息结构
    RECT rect;    //矩形结构
       switch (message)
       {    
              case WM_CREATE:   
            PlaySound ( TEXT("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC);
            return 0;
 
        case WM_PAINT:  //必须成对地呼叫BeginPaintEndPaint,中间是GDI函数
            hdc = BeginPaint (hWnd, &ps);
      
            GetClientRect (hWnd, &rect);
            ::TextOut(hdc,100,100,"hello",5);
                     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);  //系统定义的消息处理方法
 
}
//程序入口
int APIENTRY WinMain(HINSTANCE hInstance,          //执行实体句柄 
                     HINSTANCE hPrevInstance,      //NULL
                     LPSTR     lpCmdLine,    //用于执行程序的命令列
                     int       nCmdShow)  //指出程序最初显示的方式
{
       //注册窗口
      static TCHAR szAppName[] = TEXT ("HelloWin");   //注册名
    HWND   hwnd ;  //窗口句柄
    MSG    msg ;   //消息结构
       
       WNDCLASS wcex;  //窗口类别结构
       wcex.style                    = CS_HREDRAW | CS_VREDRAW;
       wcex.lpfnWndProc       = WndProc;    //消息处理函数
       wcex.cbClsExtra           = 0;
       wcex.cbWndExtra         = 0;
       wcex.hInstance             = hInstance;
       wcex.hIcon                  = LoadIcon(hInstance, IDI_APPLICATION);
       wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
       wcex.hbrBackground     = (HBRUSH) GetStockObject (WHITE_BRUSH);
       wcex.lpszMenuName     = NULL;
       wcex.lpszClassName     = szAppName;    //注册名称
 
 
       if(!RegisterClassA(&wcex))
              MessageBox(NULL,"error!",szAppName,MB_ICONERROR);
 
   //创建窗口
 hwnd=CreateWindow(szAppName,TEXT("TheHelloProgram"),WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
 
   if (!hwnd)
   {
      return FALSE;
   }
 
   ShowWindow(hwnd, nCmdShow);   //在显示器上显示窗口
   UpdateWindow(hwnd);   //重画显示区域,会向窗口发送WM_PAINT消息处理程序
 
       //循环消息
       while (GetMessage(&msg, NULL, 0, 0))
       {
                     TranslateMessage(&msg);   //msg结构传给Windows
                     DispatchMessage(&msg);   //Windows将呼叫窗口消息处理程序
       }
 
       return msg.wParam;
}