示例程序GENERIC.C

 

 GENERIC.c

/********************************************************************\
*  generic.c: Source code for generic                                     *
*                                                                                              *
*  Comments: Generic Win32-based Application                    *
*                                                                                              *
*  Functions:                                                                           *
*     WinMain      - Application entry point                               *
*     MainWndProc  - main window procedure                        *
*     AboutDlgProc - dialog procedure for About dialog           *
\********************************************************************/

/*********************  头文件  *********************/

#include <windows.h>
#include "generic.h"

/*********************  函数原型  ***********************/

LRESULT WINAPI MainWndProc( HWND, UINT, WPARAM, LPARAM );
LRESULT WINAPI AboutDlgProc( HWND, UINT, WPARAM, LPARAM );

/*******************  全局变量 ********************/

HANDLE ghInstance;

/***************************************************************************************\
*  Function: int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int)    *
*                                                                                                                         *
*   Purpose: 应用程序初始化                                                                             *
*                                                                                                                         *
*  Comments: 注册主窗口,创建和显示主窗口,进入消息循环                           *
*                                                                                                                         *
\***************************************************************************************/

int PASCAL WinMain( HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszCmdLine,
    int nCmdShow )
{
   WNDCLASS wc;
   MSG msg;
   HWND hWnd;

   if( !hPrevInstance )
   {
      wc.lpszClassName = "GenericAppClass";
      wc.lpfnWndProc = MainWndProc;
      wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
      wc.hInstance = hInstance;
      wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
      wc.hCursor = LoadCursor( NULL, IDC_ARROW );
      wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1 );
      wc.lpszMenuName = "GenericAppMenu";
      wc.cbClsExtra = 0;
      wc.cbWndExtra = 0;

      RegisterClass( &wc );
   }

   ghInstance = hInstance;

   hWnd = CreateWindow( "GenericAppClass",
      "Generic Application",
      WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,
      0,
      0,
      CW_USEDEFAULT,
      CW_USEDEFAULT,
      NULL,
      NULL,
      hInstance,
      NULL
   );

   ShowWindow( hWnd, nCmdShow );

   while( GetMessage( &msg, NULL, 0, 0 ) ) {
      TranslateMessage( &msg );
      DispatchMessage( &msg );
   }

   return msg.wParam;
}

/**************************************************************************************************\
* Function: LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM) *
*                                                                                                                                       *
*  Purpose: 处理应用程序消息                                                                                         *
*                                                                                                                                       *
* Comments: 处理一下消                                                                                                 *
*                                                                                                                                       *
*           WM_PAINT                                                                                                         *
*           WM_COMMAND                                                                                                 *
*           WM_DESTROY                                                                                                  *
\**************************************************************************************************/

LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam,
   LPARAM lParam )
{
   PAINTSTRUCT ps;
   HDC hDC;

   switch( msg ) {

/**************************************************************\
*     WM_PAINT:                                                             *
\**************************************************************/

      case WM_PAINT:
         hDC = BeginPaint( hWnd, &ps );

         TextOut( hDC, 10, 10, "Hello, World!", 13 );

         EndPaint( hWnd, &ps );
         break;

/**************************************************************\
*     WM_COMMAND:                                                    *
\**************************************************************/

      case WM_COMMAND:
         switch( wParam ) {
            case IDM_ABOUT:
               DialogBox( ghInstance, "AboutDlg", hWnd, (DLGPROC)
                          AboutDlgProc );
            break;
         }
      break;

/**************************************************************\
*     WM_DESTROY: PostQuitMessage() is called        *
\**************************************************************/

      case WM_DESTROY:
         PostQuitMessage( 0 );
         break;

/**************************************************************\
*            让默认的窗口处理过程处理其它消息                *
\**************************************************************/

      default:
         return( DefWindowProc( hWnd, msg, wParam, lParam ));
   }

   return 0;
}

/*************************************************************************************************\
* Function: LRESULT CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM)*
*                                                                                                                                      *
*  Purpose: 处理关于对话框消息                                                                                    *
*                                                                                                                                      *
* Comments: 当用户从Help菜单中选择About命令时,显示About对话框                        *
\*************************************************************************************************/

LRESULT CALLBACK AboutDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
   switch( uMsg ) {
      case WM_INITDIALOG:
         return TRUE;
      case WM_COMMAND:
         switch( wParam ) {
            case IDOK:
               EndDialog( hDlg, TRUE );
               return TRUE;
         }
      break;
   }

   return FALSE;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个 C 语言的 handle 用法的代码示例: #include <stdio.h> #include <windows.h> int main() { HANDLE hFile; DWORD dwBytesRead; char buffer[100]; hFile = CreateFile("example.txt", GENERIC_READ, , NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("Error opening file\n"); return 1; } if (ReadFile(hFile, buffer, sizeof(buffer), &dwBytesRead, NULL)) { printf("Read %d bytes: %s\n", dwBytesRead, buffer); } else { printf("Error reading file\n"); } CloseHandle(hFile); return ; } 这个示例代码展示了如何使用 handle 来打开一个文件,并读取其中的内容。在这个示例中,我们使用了 Windows API 中的 CreateFile 和 ReadFile 函数来实现这个功能。 ### 回答2: C语言中,handle通常用来表示对资源的引用或者操作,它是一个指向资源的指针。 下面是一个C语言中handle的使用示例,假设有一个资源管理系统,其中有两个函数:create_resource和destroy_resource,用于创建和销毁资源。 ```c #include <stdio.h> typedef struct { int data; } Resource; typedef Resource* Handle; // 定义Handle为指向Resource的指针类型 Handle create_resource(int data) { // 创建资源 Resource* resource = (Resource*)malloc(sizeof(Resource)); resource->data = data; return resource; // 返回资源的handle } void destroy_resource(Handle handle) { // 销毁资源 free(handle); } int main() { Handle handle = create_resource(100); // 创建资源并得到其handle printf("Resource data: %d\n", handle->data); // 使用handle访问资源的成员 destroy_resource(handle); // 销毁资源 return 0; } ``` 在上述示例中,使用typedef定义了一个Handle类型,它是指向Resource结构体的指针类型。create_resource函数用来创建一个资源,并返回其handle。destroy_resource函数用来销毁资源。在main函数中,我们先创建一个资源,并使用handle来访问资源的成员,然后再销毁资源。 这种用法可以很好地封装资源的创建和销毁过程,提高代码的可复用性和可维护性。同时,使用handle来引用资源还可以方便地进行资源的传递和管理,提高程序的性能和效率。 ### 回答3: C语言中的handle是一个句柄或者句柄指针,用于指向或管理某个资源的引用。下面是一个使用C语言的handle的代码示例: ```c #include <stdio.h> #include <stdlib.h> // 定义一个自定义的句柄结构 typedef struct { int value; // 其他需要处理的数据或资源 } Handle; // 初始化句柄 Handle* initHandle(int value) { Handle* handle = (Handle*)malloc(sizeof(Handle)); handle->value = value; // 进行其他初始化操作 return handle; } // 处理句柄 void processHandle(Handle* handle) { // 对句柄进行操作,这里只是简单打印出值 printf("The value is: %d\n", handle->value); } // 释放句柄 void releaseHandle(Handle* handle) { // 进行资源释放等清理操作 free(handle); } int main() { // 创建一个句柄并初始化 Handle* handle = initHandle(10); // 使用句柄进行处理 processHandle(handle); // 释放句柄 releaseHandle(handle); return 0; } ``` 以上代码中,我们定义了一个包含整型数值的句柄结构Handle。通过initHandle函数可以创建并初始化一个Handle实例,并返回该句柄的指针。processHandle函数用于处理该句柄,这里只是简单地打印出句柄中存储的值。最后,使用releaseHandle函数释放句柄并进行资源清理操作。 在主函数中,我们首先使用initHandle函数创建一个句柄并初始化,然后使用processHandle函数处理该句柄,最后使用releaseHandle函数释放句柄。这样,通过句柄我们可以方便地引用和处理某个资源,并且可以灵活控制资源的创建和释放。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值