xml地图|网站地图|网站标签 [设为首页] [加入收藏]

正规赌博平台

当前位置:网上十大正规赌博平台 > 正规赌博平台 > C语言Windows程序设计,PHP读取zip文件的方法示例

C语言Windows程序设计,PHP读取zip文件的方法示例

来源:http://www.nb-machinery.com 作者:网上十大正规赌博平台 时间:2019-07-11 01:03

C语言Windows程序设计 -> 第十三天 -> 按钮类控件

本文实例讲述了PHP读取zip文件的方法。分享给大家供大家参考,具体如下:

一、C语言的指针
1.指针说明
  指针是包含另一变量的地址的变量。
  (1)int *p
  p是一个指针,指向一个整型数。
  (2)int *p()
  p是一个函数,该函数返回一个指向整数的指针。
  (3)int (*p)()
  p是一个指针,该指针指向一个函数,这个函数返回一个整数。
  (4)int *p[]
  p是一个数组,该数组的每一个元素是指向整数的指针。
  (5)int (*p)[]
  p是一个指针,该指针指向一个数组,这个数组的每一个元素是一个整数。
  (6)int *(*p)()
  p是一个指针,该指针指向一个函数,这个函数返回一个指向整数的指针。
2.指针的初始化(赋地址)
  (1)通过符号&取变量(包括结构变量、数组第一个元素)的地址赋给指针;
  (2)把数组名赋给指针;
  (3)把函数名赋给指向函数的指针;
  (4)动态分配内存
  例:struct c{double r,i;};
  struct c *p;
  p=(struct c *)malloc(sizeof(struct c));
3.指针与数组、函数的关系
  (1)对于一维数组 int a[i] 或指针 int *a
  a i 指向 a[i]
  (2)对于字符串 char s[i] 或指针 char *s
  s i 指向第 i个字符 s[i]
  (3)对于二维数组int a[i][j]
  *a j 指向 a[0][j]
  *(a i) 指向 a[i][0]
  *(a i) j 指向 a[i][j]
  例:对于 a[2][3]={1,2,3,4,5,6,}; 有 *(*(a 1) 1)=5;
  (4)对于字符串数组char p[i][j] 或字符型指针数组char *p[i]
  *p j 指向第 0个字符串的第 j个字符
  *(p i) 指向第 i个字符串的第 0个字符
  *(p i) j 指向第 i个字符串的第 j个字符
  例:对于 *p[]={"ABC","DEF"}; 有 *(*(p 1) 1)='E';
  例:对于 char p[][3]={"ABC","DEF"}; 有 *(*(p 1) 1)='E';
  (5)对于指针数组int *a[i]
  a[i] 指向 变量i
  即 *a[i]=变量i 或 a[i]=&变量i
  (6)对于结构struct XY
  {int x;int *y}*p;
  p是指向结构XY的指针
  (*p).x 或 p->x 是表示 x 的内容
  (*p).y 或 p->y 是表示指针 y 的值(地址)
  *(*p).y 或 *p->y 是表示 y 所指的内容
  &(*p).x 或 &p->x 是表示 x 的地址
  (7)指向函数的指针
  对于 void func(char *str)
  {…}; //定义了一个函数
  void (*p)(char*);//定义了一个函数指针
  p=func; //让指针指向函数
  则(*p)("…"); //用指针p可以调用函数func
  (8)指向多个不同函数的指针数组
  对于void function_1() {…};
  …
  void function_4() {…}; //定义了四个函数
  typedef void(*menu_fcn)();//定义了指向函数的指针
  menu_fcn command[4]; //定义了指针数组
  command[0]=function_1;
  …
  command[3]=function_4; //让指针数组指向四个函数
  则command[0](); //用指针数组中的一个元素调用一个函数
4.指针的分类
  (1)近指针(near):
  近指针为16位指针,它只含有地址的偏移量部分。近指针用于不超过64K 字节的单个数据段或代码段。在微、小和中编译模式下产生的数据指针是近指针(缺省状态);在微、小和中编译模式下产生的码指针(指向函数的指针)是近指针(缺省状态)。
  (2)远指针(far) (库函数的头文件里边就有far关键字)
  远指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。每次使用远指针时都要重装段寄存器。远指针可寻址的目标不能超过64K ,因为远指针增减运算时,段地址不参与运算。在紧凑、大和巨模式下编译产生的数据指针是远指针(缺省状态)。
  (3)巨指针(huge)
  巨指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。远指针寻址的目标可以超过64K 。巨指针是规则化的指针。
5.指针的转换
  (1)远指针转换成巨指针
  使用以下函数
  void normalize(void far * * p)
  {
  *p=(void far *)(((long)*p&0xffff000f) (((long)*p&0x0000fff00<<12));
  }
6.指针的使用
  (1)将浮点数转换成二进制数
  float ff=16.5;
  unsigned char *cc;
  (float*)cc=&ff;
  //此时cc的内容为"00008441"
  //即cc第一个字节=0;第二个字节=0;第三个字节=0x84;第四个字节=0x41;
  (2)将二进制数转换成浮点数
  float ff;
  unsigned char *cc;
  cc=(unsigned char*)malloc(4);
  cc=(unsigned char*)&ff;
  *(cc 0)=0;
  *(cc 1)=0;
  *(cc 2)=0x84;
  *(cc 3)=0x41;
  //此时ff=16.5
  free(cc);

    终于到了令人激动的时刻, 尽管在前一阶段的学习中我们已经学习了如何在客户区中绘制简单的图形以及如何使用键盘和鼠标, 但是距离 Windows意义上的软件 似乎还是有点遥远, 而今天, 我们要做的就是将这个距离再缩短一大步! 这阶段要学习的就是 子窗口控件 的使用。
    
    在其他一些 Windows应用软件上我们经常能够看到一些大致相同的按钮、复选框、组合框、列表框等控件, 这些控件很有可能就是使用 标准子窗口控件 来实现的。
    
    
一、子窗口的创建
    在讲解 "标准子窗口控件" 的使用之前我们首先应该知道如何去创建一个子窗口, 因为这些 "子窗口控件" 实际上都是通过创建一个子窗口的形式来进行创建的, 因此我们应该把理解的重点放在 "子窗口" 上, 而不是 "控件" 上。
    
    子窗口的创建可以将整个客户区划分为多个矩形区域, 并且每个子窗口都可以有自己的句柄、窗口过程和客户区, 每个子窗口过程只接收与自身窗口有关的鼠标消息、鼠标消息的参数 lParam 中包含的坐标是相对于 子窗口 客户区的左上角的。简单的说, 子窗口具有一个普通窗口的一切特性。
    
    子窗口的创建同样是使用 CreateWindow 函数进行创建的, 下面我们通过一个示例来认识这个过程:
    代码已折叠, 点击展开:

<?php
$zip = zip_open("111.zip");
if ($zip) {
while ($zip_entry = zip_read($zip)) {
echo "Name: " . zip_entry_name($zip_entry) . "n";
echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "n";
echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "n";
echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "n";
if (zip_entry_open($zip, $zip_entry, "r")) {
echo "File Contents:n";
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
echo "$bufn";
zip_entry_close($zip_entry);
}
echo "n";
}
zip_close($zip);
}
?>

二、C 语言的函数
1.用户自定义函数格式
  类型 函数名(形式参数表)
  参数说明
  {
  ……
  }
2.函数的调用方式
  (1)传值方式
  ①传给被调用函数的是整型、长整型、浮点型或双精度型变量。被调用的函数得定义相应的变量为形参。
  ②传给被调用函数的是结构变量。被调用函数得定义结构变量为形参。
  ③传给被调用函数的是结构变量的成员。被调用函数得定义与该成员同类的变量为形参。
  (2)传址方式
  ①传给被调用函数的是变量的地址。被调用函数得定义指针变量为形参。
  ②传给被调用函数的是数组的地址即数组名。被调用的函数得定义数组或指针变量为形参。
  ③传给被调用函数的是函数的地址即函数名称。被调用函数得定义指向函数的指针变量为形参。
  ④传给被调用函数的是结构的地址。被调用函数得定义结构指针为形参。
3.函数调用(传值方式)结果的返回
  (1)返回的是数值
  要求被调用的函数类型与接收返回值的变量类型相同。
  (2)返回的是指针
  要求被调用的函数是指针函数,其指向的类型与接收的指针变量指向类型相同。
  (3)不返回任何值
  被调用的函数是void型。

图片 1图片 2View Code

运行效果截图如下:


 1 #include<windows.h>   2    3 LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ;   4 LRESULT CALLBACK ChildWndProc( HWND, UINT, WPARAM, LPARAM ) ;        //子窗口窗口过程   5    6 TCHAR szChildClass[] = TEXT("ChildClass") ;            //子窗口类名称   7    8 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )   9 {  10     TCHAR szAppName[] = TEXT( "CreateChildWindow" ) ;  11   12     HWND         hwnd ;  13     MSG          msg ;  14     WNDCLASS     wndclass ;  15   16     wndclass.lpfnWndProc     = WndProc ;  17     wndclass.lpszClassName     = szAppName ;  18     wndclass.style             = CS_VREDRAW | CS_HREDRAW ;  19     wndclass.hInstance         = hInstance ;  20     wndclass.hCursor         = LoadCursor( NULL, IDC_ARROW ) ;  21     wndclass.hIcon             = LoadIcon( NULL, IDI_APPLICATION ) ;  22     wndclass.cbClsExtra     = 0 ;  23     wndclass.cbWndExtra     = 0 ;  24     wndclass.hbrBackground     = (HBRUSH) GetStockObject( WHITE_BRUSH ) ;  25     wndclass.lpszMenuName      = NULL ;  26   27     if( !RegisterClass(&wndclass) )  28     {  29         MessageBox( NULL, TEXT("无法注册窗口类!"), szAppName, MB_OK | MB_ICONERROR ) ;  30         return 0 ;  31     }  32   33     wndclass.lpszClassName    = szChildClass ;  34     wndclass.cbWndExtra     = sizeof(long) ;  35     wndclass.lpfnWndProc    = ChildWndProc ;  36     RegisterClass( &wndclass ) ;        //注册子窗口窗口类  37   38     hwnd = CreateWindow( szAppName, TEXT("创建子窗口 - 演示"),  39         WS_OVERLAPPEDWINDOW,   40         CW_USEDEFAULT, CW_USEDEFAULT,  41         800, 600,  42         NULL, NULL, hInstance, NULL ) ;  43   44     ShowWindow( hwnd, iCmdShow ) ;  45     UpdateWindow( hwnd ) ;  46   47     while( GetMessage(&msg, NULL, 0, 0) )  48     {  49         TranslateMessage( &msg ) ;  50         DispatchMessage( &msg ) ;  51     }  52   53     return msg.wParam ;  54 }  55   56 LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )   57 {  58     static HWND childHwnd ;        //子窗口句柄  59   60     switch(message)  61     {  62     case WM_CREATE:        //在接收到 WM_CREATE 消息时创建一个子窗口  63         childHwnd = CreateWindow( szChildClass, TEXT("子窗口"),  64             WS_CHILDWINDOW | WS_VISIBLE | WS_OVERLAPPEDWINDOW,  65             10, 10,        //在父窗口客户区(10, 10)位置创建一个子窗口  66             200, 200,    //子窗口的大小为200x200  67             hwnd,        //父窗口句柄  68             (HMENU)1,    //子窗口ID  69             (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE ),  70             NULL ) ;  71         return 0 ;  72   73     case WM_DESTROY:  74         PostQuitMessage( 0 ) ;  75         return 0 ;  76     }  77     return DefWindowProc( hwnd, message, wParam, lParam ) ;  78 }  79   80 LRESULT CALLBACK ChildWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )  81 {  82     switch(message)  83     {  84     case WM_LBUTTONDOWN:        //处理子窗口的 WM_LBUTTONDOWN 消息  85         RedrawWindow(hwnd, NULL, NULL, RDW_INTERNALPAINT    );  86         MessageBox( hwnd, TEXT("鼠标左键在子窗口客户区中按下!"), TEXT("子窗口消息"), MB_OK );  87         return 0 ;  88     }  89   90     return DefWindowProc( hwnd, message, wParam, lParam ) ;  91 }

图片 3

[ 代码: Demo_01_CreateChildWindow.c ]

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP操作zip文件及压缩技巧总结》、《php文件操作总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    尽管这段代码有将近100行, 但是我相信有了前面的基础, 这段代码也是能够轻松理解的。
    这段代码演示的是在父窗口的(10, 10)位置处创建一个大小为 200x200 的子窗口, 效果如下:    

希望本文所述对大家PHP程序设计有所帮助。

图片 4

您可能感兴趣的文章:

  • php将文件夹打包成zip文件的简单实现方法
  • php打包压缩文件之ZipArchive方法用法分析
  • php简单创建zip压缩文件的方法
  • php打包网站并在线压缩为zip
  • php实现zip文件解压操作
  • php生成zip文件类实例
  • php操作(删除,提取,增加)zip文件方法详解
  • php在线解压ZIP文件的方法
  • php实现的zip文件内容比较类
  • php实现zip压缩文件解压缩代码分享(简单易懂)
  • php操作zip在不解压缩包的情况下显示压缩包中的图片

    
    首先从整体上把握下这段代码:
        第一步: 声明父窗口回调函数和子窗口的回调函数:

        LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ;          LRESULT CALLBACK ChildWndProc( HWND, UINT, WPARAM, LPARAM ) ;        //子窗口窗口过程

        第二步: 定义WinMain函数, 在WinMain函数中建立父窗口的 wndclass 窗口类并注册:

    if( !RegisterClass(&wndclass) )      {          MessageBox( NULL, TEXT("无法注册窗口类!"), szAppName, MB_OK | MB_ICONERROR ) ;          return 0 ;      }

 
        第三步: 改变父窗口 wndclass 类中的部分属性, 使其成为子窗口的 wndclass, 并注册子窗口窗口类:

    wndclass.lpszClassName = szChildClass ;      wndclass.cbWndExtra = sizeof(long) ;      wndclass.lpfnWndProc = ChildWndProc ;      RegisterClass( &wndclass ) ;        //注册子窗口窗口类

 
        第四步: 显示窗口、进入消息循环:

    ShowWindow( hwnd, iCmdShow ) ;      UpdateWindow( hwnd ) ;        while( GetMessage(&msg, NULL, 0, 0) )      {          TranslateMessage( &msg ) ;          DispatchMessage( &msg ) ;      }

        第五步: 定义父窗口回调函数 WndProc, 在处理 WM_CREATE 消息时创建子窗口:

    case WM_CREATE:        //在接收到 WM_CREATE 消息时创建一个子窗口          childHwnd = CreateWindow( szChildClass, TEXT("子窗口"),              WS_CHILDWINDOW | WS_VISIBLE | WS_OVERLAPPEDWINDOW,              10, 10,        //在父窗口客户区(0, 0)位置创建一个子窗口              200, 200,    //子窗口的大小为0x0              hwnd,        //父窗口句柄              (HMENU)1,    //子窗口ID              (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE ),              NULL ) ;          return 0 ;

        第六步: 定义子窗口回调函数 ChildWndProc:

    LRESULT CALLBACK ChildWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )      {          switch(message)          {          case WM_LBUTTONDOWN:        //处理子窗口的 WM_LBUTTONDOWN 消息              RedrawWindow(hwnd, NULL, NULL, RDW_INTERNALPAINT    );              MessageBox( hwnd, TEXT("鼠标左键在子窗口客户区中按下!"), TEXT("子窗口消息"), MB_OK );              return 0 ;          }            return DefWindowProc( hwnd, message, wParam, lParam ) ;      }

 

    一些细节把握:
        1>. 全局的子窗口类名
            在第四行中的代码 TCHAR szChildClass[] = TEXT("ChildClass") ; 我们把子窗口类名称设为全局这是因为在 WinMain 函数中和父窗口的回调函数中都需要用到它的名字。
            
        2>. 在注册子窗口的窗口类时, 没有再重新定义一个 WNDCLASS 类型的变量, 而是简单的复用了一下父窗口中的 wndclass, 其中有3个成员与父窗口不同:
            lpszClassName, 即子窗口类的名称 ;
            cbWndExtra 被设置成一个 long 型数据所占的存储单元大小(4字节), 这个成员通知 Windows 在内部结构中给基于这个窗口类的每个窗口预留4个字节的额外存储空间, 以用来给用户为每个窗口保存不同的信息 ;
            lPfnWndProc 成员被设置成 ChildWndProc, 表示子窗口类的窗口过程 。
            
        3>. 创建子窗口时的 (HINSTANCE) GetWindowLong(hwnd, RDW_ERASE )
            实际上 CreateWindow 函数在创建子窗口时需要 hInstance 句柄, 而GetWindowLong函数的作用就是获得有关指定窗口的信息, 函数也获得在额外窗口内存中指定偏移位地址的32位度整型值, GetWindowLong的原型:
                LONG GetWindowLong( HWND hwnd, int nIndex ) ;
            nIndex 为索引值, 它可以是以下标识符之一:

                GWL_EXSTYLE            //获得扩展窗口风格                  GWL_STYLE            //获得窗口风格                  GWL_WNDPROC            //获得窗口过程的地址                  GWL_HINSTANCE        //获得应用事例的句柄                  GWL_HWNDPARENT        //获得父窗口句柄                  GWL_ID                //获得窗口标识                  GWL_USERDATA        //获得与窗口有关的32位值。                  DWL_DLGPROC            //获得对话框过程的地址, 或一个代表对话框过程的地址的句柄                  DWL_MSGRESULT        //获得在对话框过程中一个消息处理的返回值                  DWL_USER            //获得应用程序私有的额外信息

 

    在子窗口的窗口过程的处理上, 我们仅仅处理了一个 WM_LBUTTONDWON 消息, 当鼠标在子窗口客户区中按下左键时就弹出一个对话框告诉用户"鼠标左键在子窗口客户区中按下!"。
    
    这些就是创建一个子窗口的演示。使用子窗口的程序设计有助于程序的结构化和模式化, 提高代码的复用率。
    
    如果你已经将上面示例中的代码理解的话, 那么恭喜你! 你已经又向成功迈向了一大步, 因为标准子窗口控件的使用比我们自己创建子窗口还要简单!         

二、使用标准子窗口控件的按钮类
    按钮类: 按钮类不仅仅是指我们所常见的按钮控件, 他是一类控件的统称, 包括: 按钮、复选框、单选按钮、组合框。以创建一个按钮作为示例, 创建一个按钮并不需要我们再去定义一个WNDCLASS类再去注册它, 也不需要再去为这个控件指定子窗口过程函数, 因为这些已经在一些相关的头文件中给完成了, 我们只需要做相关的调用即可:

        case WM_CREATE:        //在接收到 WM_CREATE 消息时创建一个按钮          btnHwnd = CreateWindow( TEXT("button"), TEXT("创建按钮"),              WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,        //按钮样式              10, 10,        //在父窗口客户区(10, 10)位置创建一个按钮              100, 30,    //按钮的大小为100x30              hwnd,        //父窗口句柄              (HMENU)1,    //按钮控件ID              (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE ),              NULL ) ;          return 0 ;

本文由网上十大正规赌博平台发布于正规赌博平台,转载请注明出处:C语言Windows程序设计,PHP读取zip文件的方法示例

关键词: mg老虎机平台