亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? progress.cpp

?? 這是CODEPROJECT上的zip壓縮解壓代碼
?? CPP
字號:
#include <windows.h>
#include <commctrl.h>
#include <tchar.h>
#include <stdio.h>
#include "../../zip.h"
#include "../../unzip.h"

HINSTANCE hInstance;

// This program shows how to display a progress bar. It first pops
// up a "ZipDialog" with progress bar which zips up some files;
// then it pops up an "UnzipDialog" with progress bar which unzip them.
//
// (1) The UnzipDialog simply invokes the function "UnzipWithProgress".
// This unzips a zip file chunk by chunk, and the progress bar shows how
// far through the zip file we are. After every chunk it calls "PumpMessages"
// to handle any outstanding Windows messages (eg. repainting windows, dragging
// them, responding to clicks). NB. if the user happened to click Cancel, this
// will be dispatched to the UnzipDialogProc, which responds by setting the
// global flag "abort_p" to true, and in response "UnzipWithProgress" will
// break out of its loop.
BOOL CALLBACK UnzipDialogProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
void UnzipWithProgress(const TCHAR *zipfn, HWND hprog);
void PumpMessages();
bool abort_p=false;

// (2) The ZipDialog -- alas, for adding files to a zip, "zip_utils"
// provide no support for displaying progress. The call ZipAdd simply
// doesn't return until it's finished. So what ZipDialogProc does instead
// is it launches a background thread "ZipThreadProc" whose task is
// to do the zipping. Meanwhile, ZipDialogProc starts up a timer, and
// every 100ms the timer will move the progress bar just to show that
// something's still happening. When eventually the timer discoveres
// that the thread has finished, it ends the dialog.
// If you wanted to display real progress, you should look in
// zip.cpp/TZip::Add, wich calls TZip::ideflate, which calls deflate().
// You could conceivably add a callback to this.
BOOL CALLBACK ZipDialogProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
DWORD WINAPI ZipThreadProc(void *);
HANDLE hThread=0;





// Here's the main code. It just creates a dialog (inline, instead of using a resource file)
// and then invokes ZipDialog and then invokes UnzipDialog.
//
int WINAPI WinMain(HINSTANCE h,HINSTANCE,LPSTR,int)
{ hInstance=h;
  InitCommonControls();
  //
#pragma pack(push,1)
  struct TDlgItemTemplate {DWORD s,ex; short x,y,cx,cy; WORD id;};
  struct TDlgTemplate {DWORD s,ex; WORD cdit; short x,y,cx,cy;};
  struct TDlgItem1 {TDlgItemTemplate dli; WCHAR cls[7],tit[7]; WORD cdat;};
  struct TDlgItem2 {TDlgItemTemplate dli; WCHAR cls[18],tit[1]; WORD cdat;};
  struct TDlgData  {TDlgTemplate dlt; WORD m,c; WCHAR t[8]; WORD pt; WCHAR f[14]; TDlgItem1 i1; TDlgItem2 i2;};
  TDlgData dtp={{DS_MODALFRAME|DS_3DLOOK|DS_SETFONT|DS_CENTER|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_VISIBLE,0,2, 0,0,278,54},
                0,0,L"Zipping",8,L"MS Sans Serif",
                {{BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,0,113,32,50,14,IDCANCEL},L"BUTTON",L"Cancel",0},
                {{WS_CHILD|WS_VISIBLE,0,7,7,264,18,1},L"msctls_progress32",L"",0} };
#pragma pack(pop)
  int res = DialogBoxIndirect(hInstance,(DLGTEMPLATE*)&dtp,0,ZipDialogProc);
  if (res==IDCANCEL) return 0;
  return DialogBoxIndirect(hInstance,(DLGTEMPLATE*)&dtp,0,UnzipDialogProc);
}




BOOL CALLBACK UnzipDialogProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{ hwnd; msg; wParam; lParam;
  if (msg==WM_INITDIALOG) {SetWindowText(hwnd,"Unzipping..."); PostMessage(hwnd,WM_USER,0,0); return TRUE;}
  if (msg==WM_COMMAND) {abort_p=true; return TRUE;}
  if (msg==WM_USER) {UnzipWithProgress("\\z\\progress.zip",GetDlgItem(hwnd,1)); EndDialog(hwnd,IDOK); return TRUE;}
  return FALSE;
}

void UnzipWithProgress(const TCHAR *zipfn, HWND hprog)
{ HZIP hz = OpenZip(zipfn,0);
  ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numentries=ze.index;
  // first we retrieve the total size of all zip items
  DWORD tot=0; for (int i=0; i<numentries; i++) {GetZipItem(hz,i,&ze); tot+=ze.unc_size;}
  //
  DWORD countall=0; // this is our progress so far
  for (int i=0; i<numentries && !abort_p; i++)
  { GetZipItem(hz,i,&ze);
    // We'll unzip each file bit by bit, to a file on disk
    char fn[1024]; wsprintf(fn,"\\z\\%s",ze.name);
    HANDLE hf = CreateFile(fn,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
    char buf[16384]; // Each chunk will be 16k big. After each chunk, we show progress
    DWORD countfile=0;
    for (ZRESULT zr=ZR_MORE; zr==ZR_MORE && !abort_p; ) // nb. the global "abort_p" flag is set by the user clicking the Cancel button.
    { zr=UnzipItem(hz,i,buf,16384);
      unsigned long bufsize=16384; if (zr==ZR_OK) bufsize=ze.unc_size-countfile; // bufsize is how much we got this time
      DWORD writ; WriteFile(hf,buf,bufsize,&writ,0); 
      countfile+=bufsize; // countfile counts how much of this file we've unzipped so far
      countall+=bufsize; // countall counts how much total we've unzipped so far
      // Now show progress, and let Windows catch up...
      int i = (int)(100.0*((double)countall)/((double)tot));
      SendMessage(hprog,PBM_SETPOS,i,0); PumpMessages();
    }
    CloseHandle(hf);
    if (abort_p) DeleteFile(fn);
  }
  CloseZip(hz);
}

void PumpMessages()
{ for (MSG msg;;)
  { BOOL res=PeekMessage(&msg,0,0,0,PM_REMOVE);
    if (!res||msg.message==WM_QUIT) return;
    TranslateMessage(&msg); DispatchMessage(&msg);
  }
}





BOOL CALLBACK ZipDialogProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{ hwnd; msg; wParam; lParam;
  if (msg==WM_INITDIALOG)
  { EnableWindow(GetDlgItem(hwnd,IDCANCEL),FALSE);
    SetTimer(hwnd,1,100,0);
    hThread=CreateThread(0,0,ZipThreadProc,0,0,0);
    return TRUE;
  }
  if (msg==WM_TIMER)
  { UINT i = SendDlgItemMessage(hwnd,1,PBM_GETPOS,0,0);
    SendDlgItemMessage(hwnd,1,PBM_SETPOS,(i+1)%100,0);
    if (hThread!=0)
    { DWORD res=WaitForSingleObject(hThread,0); // has the thread finished yet?
      if (res==WAIT_OBJECT_0) {CloseHandle(hThread); hThread=0; EndDialog(hwnd,IDOK);}
    }
  }
  if (msg==WM_DESTROY) KillTimer(hwnd,1);
  return FALSE;
}


DWORD WINAPI ZipThreadProc(void *)
{ int size=40*1024*1024; // 40mb big!
  char *c=new char[size]; for (int i=0; i<size; i+=4) {*(int*)(c+i) = rand();}
  CreateDirectory("\\z",0);
  HZIP hz = CreateZip("\\z\\progress.zip",0);
  ZipAdd(hz,"progress1.zip",c,size);
  ZipAdd(hz,"progress2.zip",c,size);
  CloseZip(hz);
  delete[] c;
  return 0;
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产永久精品大片wwwapp| 国产精品一区二区久久精品爱涩| 精品国产乱码久久久久久老虎| 成人伦理片在线| 青草国产精品久久久久久| 亚洲视频一区二区在线| 精品毛片乱码1区2区3区| 欧美在线free| 成人免费毛片app| 紧缚捆绑精品一区二区| 亚洲成人在线观看视频| 中文字幕一区二区三区四区| 精品国精品国产| 欧美日本精品一区二区三区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 欧美精品v日韩精品v韩国精品v| 国产精品123| 久久99精品国产.久久久久| 亚洲一二三区在线观看| 亚洲蜜桃精久久久久久久| 国产欧美日韩综合| 26uuu欧美日本| 日韩欧美国产一区二区三区| 欧美电影影音先锋| 欧美日韩一区中文字幕| 色婷婷av一区二区三区大白胸| 高清国产一区二区三区| 国产精品1区2区3区| 国产一区二区三区精品欧美日韩一区二区三区 | 精品视频一区三区九区| 色婷婷av一区二区三区大白胸| 成人免费毛片app| 成人免费视频视频在线观看免费| 国产在线麻豆精品观看| 国产中文一区二区三区| 精品在线免费观看| 国产一区二区三区四区在线观看| 精品一区中文字幕| 久久av资源站| 国产一区二区三区精品视频| 久久不见久久见免费视频1| 久久99精品一区二区三区三区| 久久精品国产99国产| 久久精品72免费观看| 国产一区免费电影| 丁香婷婷综合激情五月色| 东方欧美亚洲色图在线| 成人黄色在线看| 99久久精品国产一区二区三区| kk眼镜猥琐国模调教系列一区二区| 不卡的av电影| 欧美怡红院视频| 欧美日韩国产大片| 日韩无一区二区| 26uuu色噜噜精品一区| 国产精品免费aⅴ片在线观看| 最新不卡av在线| 亚洲午夜日本在线观看| 日本aⅴ免费视频一区二区三区| 琪琪一区二区三区| 国产999精品久久久久久绿帽| 成人免费看视频| 91成人免费在线| 欧美另类videos死尸| 日韩免费视频一区二区| 欧美国产综合一区二区| 亚洲女同女同女同女同女同69| 亚洲国产日韩在线一区模特| 人禽交欧美网站| 国产一区二区在线视频| 91老师片黄在线观看| 欧美日韩国产美女| 国产亚洲1区2区3区| 亚洲伊人色欲综合网| 另类成人小视频在线| 成人app下载| 67194成人在线观看| wwwwww.欧美系列| 亚洲精品亚洲人成人网在线播放| 日本在线不卡视频一二三区| 国产.精品.日韩.另类.中文.在线.播放 | 青青草国产精品97视觉盛宴| 国产精品亚洲视频| 欧美三级电影在线观看| 久久久久久亚洲综合| 亚洲激情自拍视频| 国产在线精品视频| 在线观看网站黄不卡| 国产午夜精品理论片a级大结局| 一区二区三区免费| 国内精品国产成人国产三级粉色| 一本一道久久a久久精品| 日韩欧美区一区二| 亚洲精品欧美激情| 国产一区二区三区视频在线播放| 欧美影院一区二区三区| 国产午夜精品福利| 免费成人av在线| 在线观看国产91| 亚洲国产激情av| 久久国产尿小便嘘嘘尿| 91久久线看在观草草青青| 国产欧美日韩中文久久| 日本欧美久久久久免费播放网| 色综合咪咪久久| 欧美激情中文不卡| 黄网站免费久久| 在线不卡一区二区| 一区二区日韩电影| av一区二区三区四区| 久久久美女毛片| 麻豆一区二区三| 777奇米成人网| 亚洲国产精品尤物yw在线观看| 成人久久久精品乱码一区二区三区 | 国产精品一二一区| 91精品国产高清一区二区三区| 亚洲精品国产a久久久久久| 成人一区二区三区视频| 久久精品亚洲精品国产欧美kt∨ | 日韩一区二区在线看| 亚洲线精品一区二区三区| 色婷婷综合久久久久中文一区二区 | 视频一区二区欧美| 欧美性视频一区二区三区| 亚洲人成影院在线观看| 99在线精品观看| 国产精品视频在线看| 懂色av一区二区三区蜜臀| 久久久久久免费毛片精品| 国产一区亚洲一区| 久久久久九九视频| 国产乱妇无码大片在线观看| 久久综合国产精品| 国产九色精品成人porny| 欧美成人性战久久| 狠狠色丁香久久婷婷综合_中| 日韩一二在线观看| 久久99精品久久久久| 精品少妇一区二区三区视频免付费 | 一区二区三区高清| 色综合色狠狠综合色| 一区二区三区欧美亚洲| 在线免费观看日韩欧美| 亚洲超碰97人人做人人爱| 欧美日韩第一区日日骚| 日本亚洲免费观看| 精品国产网站在线观看| 国产精品乡下勾搭老头1| 亚洲国产精品v| 91免费在线视频观看| 亚洲一二三四在线观看| 在线不卡中文字幕| 韩国欧美国产一区| 国产精品乱人伦一区二区| 91视视频在线直接观看在线看网页在线看 | 99久久99久久综合| 一区二区久久久| 欧美丰满高潮xxxx喷水动漫| 精品中文字幕一区二区小辣椒| 中文字幕的久久| 在线一区二区视频| 日本伊人色综合网| 国产欧美日韩视频一区二区| 91麻豆国产福利在线观看| 日韩精品一级中文字幕精品视频免费观看 | 久久婷婷综合激情| www.久久精品| 性感美女极品91精品| 久久久久久久久久久黄色| 99精品久久只有精品| 首页亚洲欧美制服丝腿| 久久精品视频一区二区| 91成人免费在线视频| 国产真实乱偷精品视频免| 亚洲精品一二三区| 欧美tk丨vk视频| 91福利视频在线| 精品系列免费在线观看| 亚洲乱码中文字幕综合| 精品裸体舞一区二区三区| 一本到不卡免费一区二区| 久久精品国产成人一区二区三区| 综合久久综合久久| 精品欧美乱码久久久久久1区2区| 91一区二区三区在线播放| 蓝色福利精品导航| 一区二区三区免费观看| 久久精品夜夜夜夜久久| 中文字幕av资源一区| 69精品人人人人| 日本精品一区二区三区高清| 国产在线日韩欧美| 视频一区视频二区中文字幕| 一区二区中文字幕在线| 精品理论电影在线观看| 欧美色图激情小说| 99久久久精品| 国产福利精品一区| 男人操女人的视频在线观看欧美|