SDK的hello world程序!

来源:互联网 发布:淘宝网浪琴手表 编辑:程序博客网 时间:2024/05/25 19:58

#include <windows.h>

//主函数原型,整个函数的执行从该函数开始

int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int);
LRESULT WINAPI WndProc (HWND, UINT, WPARAM, LPARAM);
//WinMain函数
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
 HWND hWnd; //主窗口句柄
 MSG msg; //窗口消息
 WNDCLASS wc; //窗口类
 if ( !hPrevInstance )
 {
  //填充窗口类信息
  wc.style = CS_HREDRAW | CS_VREDRAW; //当长或宽改变的时候重画整个窗口
  wc.lpfnWndProc = WndProc; //长指针指向windows过程处理函数
  wc.cbClsExtra = 0; //指明了为windows类额外分配的内存的数量,windows初始化为0
  wc.cbWndExtra = 0; //指定了为windows实例额外分配的内存的数量,windows初始化为0
  wc.hInstance = hInstance; //指向windows程序实例的句柄
  wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); //为了使用预先定义好的图标,需将第一个参数高为NULL
  wc.hCursor = LoadCursor(NULL,  IDC_ARROW);
  wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); //背景的画刷
  wc.lpszMenuName = NULL; //菜单
  wc.lpszClassName = "Sdk 实例"; //指明了windows类的名称
  //注册窗口类
  RegisterClass(&wc);
 }
 //创建应用程序主窗口
 hWnd = CreateWindow("Sdk 实例",                           //窗口类名
                  "Wind32 SDK 应用程序实例",             //窗口标题
      WS_OVERLAPPEDWINDOW,                   //窗口样式
      CW_USEDEFAULT,                         //初始化X坐标
      CW_USEDEFAULT,                         //初始化Y坐标
      CW_USEDEFAULT,                         //初始化窗口宽度
      CW_USEDEFAULT,                         //初始化窗口长度
      NULL,                                  //父窗口句柄
      NULL,                                  //窗口菜单句柄
      hInstance,                             //程序实例句柄
      NULL);                                 //创建参数
 //显示窗口
 ShowWindow(hWnd, SW_SHOW);
 //更新主窗口客户区
 UpdateWindow(hWnd);
 //开始消息循环
 while ( GetMessage(&msg, NULL, 0, 0) )
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 return msg.wParam;
}

//主窗口过程,处理窗口中各种各样的事件
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 HDC hDC;
 switch ( msg )
 {
 case WM_PAINT:
  hDC = GetDC(hWnd);
  TextOut(hDC, 10, 100, "你好,SDK编程!", sizeof("你好,SDK编程!")-1);
  break;
 case WM_DESTROY:
  PostQuitMessage(0); //发送退出程序的消息
  break;
 default:
  break;
 }
 return DefWindowProc(hWnd, msg, wParam, lParam);
}