现在的位置: 首页 > 综合 > 正文

一步步用SDK构建记事本程序(一)

2018年05月14日 ⁄ 综合 ⁄ 共 1851字 ⁄ 字号 评论关闭

本文描述了如何使用Win32 SDK来编写一个应用程序。

希望对正在学习WinApi SDK编程的朋友能有一些帮助,欢迎你们提出更好的意见和技巧。

 

下面开门见山,具体开发步骤如下:

 

1.开始菜单->Microsoft Visual Studio 2008->Microsoft Visual Studio 2008

2.新建一个项目

选择Win32控制台应用程序,进行应用程序类型设置:

选择Windows应用程序,空项目。点击完成。

 

3.选择Vs2008项目菜单,添加新项:

 

选择C++源文件,命名为main.cpp (这个名字可以随意定)

 

 

以下是SDK主框架代码,不详述了。有问题的话给我留言:)

  1. #include <windows.h>
  2. LRESULT CALLBACK WndProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam);
  3. int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
  4. {   
  5.     WNDCLASSEX  wcex = {0};
  6.     TCHAR       szAppName[] = TEXT("SigmaTera Notepad");
  7.     MSG         msg = {0};
  8.     HWND        hWnd = NULL;
  9.     wcex.cbClsExtra = 0;
  10.     wcex.cbSize = sizeof (WNDCLASSEX);
  11.     wcex.cbWndExtra = 0;
  12.     wcex.hbrBackground = (HBRUSH)COLOR_WINDOW;
  13.     wcex.hCursor = LoadCursor(NULL,IDC_ARROW);
  14.     wcex.hIcon = LoadIcon(hInstance,IDI_APPLICATION);
  15.     wcex.hIconSm = wcex.hIcon;
  16.     wcex.hInstance = hInstance;
  17.     wcex.lpfnWndProc = WndProc;
  18.     wcex.lpszClassName = szAppName;
  19.     wcex.lpszMenuName = NULL;
  20.     wcex.style = CS_HREDRAW | CS_VREDRAW;
  21.     if (RegisterClassEx(&wcex) == NULL)
  22.     {
  23.         return -1;
  24.     }
  25.     hWnd = CreateWindow(szAppName,TEXT("Notepad"),WS_OVERLAPPEDWINDOW,
  26.                         CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
  27.                         NULL,NULL,hInstance,NULL);
  28.     
  29.     if (NULL == hWnd)
  30.     {
  31.         return -1;
  32.     }
  33.     ShowWindow(hWnd,SW_SHOW);
  34.     UpdateWindow(hWnd);
  35.     while (GetMessage(&msg,NULL,0,0))
  36.     {
  37.         TranslateMessage(&msg);
  38.         DispatchMessage(&msg);
  39.     }
  40.     
  41.     return 0;
  42. }
  43. LRESULT CALLBACK WndProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam)
  44. {
  45.     if (uMessage == WM_CLOSE)
  46.     {
  47.         DestroyWindow(hWnd);
  48.     }
  49.     else if (uMessage == WM_DESTROY)
  50.     {
  51.         PostQuitMessage(0);
  52.     }
  53.     return DefWindowProc(hWnd,uMessage,wParam,lParam);
  54. }

抱歉!评论已关闭.