API程序框架

 
#include <windows.h>
 
// 消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)  //CALLBACK 表示是个回调函数 ( 把地址给 windows, 后者会呼叫前者 )
{
       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:  // 必须成对地呼叫 BeginPaint EndPaint, 中间是 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;
}
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值