home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 June / Chip_2002-06_cd1.bin / zkuste / wincom / download / mltwcx.1.0.0.8-src.cab / mltwcx-src / config.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-12-17  |  6.0 KB  |  207 lines

  1. #include "stdafx.h"
  2. #include "config.h"
  3. #include "resource.h"
  4.  
  5.  
  6. tProcessDataProc pProcessDataProc;
  7.  
  8. /*void __stdcall ConfigurePacker(HANDLE ParentHandle, HANDLE hinstance)
  9. {
  10.     MessageBox((HWND)ParentHandle,"MultiArc Plugin for Windows Commander "
  11.         " (ver. 0.0.1 free)\n"
  12.         "Copyright ⌐ 2000 Siarzhuk Zharski\n"
  13.         "http://zharik.homepage.com\n"
  14.         "mailto: zharik@usa.net\n","About MultiArc plugin",MB_OK|MB_ICONINFORMATION);
  15. }*/
  16.  
  17. void __stdcall SetChangeVolProc(int hArcData,tChangeVolProc pChangeVolProc)
  18. {
  19.  
  20. }
  21.  
  22. int __stdcall GetPackerCaps()
  23. {
  24.   return PK_CAPS_NEW | PK_CAPS_MODIFY | PK_CAPS_MULTIPLE | PK_CAPS_DELETE | PK_CAPS_OPTIONS;
  25. }
  26.  
  27. void __stdcall SetProcessDataProc(int hArcData,tProcessDataProc pProcessDataProc)
  28. {
  29.     ::pProcessDataProc=pProcessDataProc;
  30. }
  31.  
  32. char * GetWCXVersion(char * lpc)
  33. {
  34.  char modulePath[_MAX_PATH];
  35.  void *pData=NULL;
  36.  DWORD  handle;
  37.  DWORD  dwSize;
  38.  char   szName[512];
  39.  char *lpBuffer;
  40.  char *iRet=NULL;
  41.  
  42.  if(GetModuleFileName(g_hInstance,modulePath,_MAX_PATH))
  43.  {
  44.   dwSize = GetFileVersionInfoSize(modulePath, &handle);
  45.   if(dwSize)
  46.   {
  47.     pData=malloc(dwSize);
  48.     GetFileVersionInfo(modulePath, handle, dwSize, pData);
  49.     VerQueryValue(pData, "\\VarFileInfo\\Translation", (void **)&lpBuffer, (unsigned int *)&dwSize);
  50.     if (dwSize!=0)
  51.     {
  52.      wsprintf(szName, "\\StringFileInfo\\%04X%04X\\FileVersion",*((LPWORD)lpBuffer),*((LPWORD)(lpBuffer)+1));
  53.      VerQueryValue(pData, szName, (void **)&lpBuffer, (unsigned int*)&dwSize);
  54.      iRet=lpc;
  55.      lstrcpy(lpc,lpBuffer);
  56.     }
  57.   }
  58.  }
  59.  if(pData)
  60.  {
  61.   free(pData);
  62.   pData=NULL;
  63.  }
  64.  return iRet;
  65. }
  66.  
  67.  
  68. HFONT hFontBold,hFontURL;
  69. HANDLE hBrush;
  70. HCURSOR hCursor;
  71. HWND hwndTT;
  72. char toolsStr[512];
  73.  
  74. BOOL CALLBACK DialogProc(HWND hwndDlg,UINT  uMsg,WPARAM wParam,LPARAM  lParam)
  75. {
  76.    switch (uMsg) {
  77.      case WM_INITDIALOG:
  78.          {
  79.              LOGFONT lf;
  80.              HFONT hFont;
  81.              char verStr[40];
  82.              TOOLINFO ti;    // tool information 
  83.  
  84.              hFont=(HFONT)SendDlgItemMessage(hwndDlg,IDC_STATIC_NAME,WM_GETFONT,0,0);
  85.  
  86.              hBrush=CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
  87.              hCursor=LoadCursor(g_hInstance,MAKEINTRESOURCE(IDC_CURSOR));
  88.              
  89.              GetObject(hFont,sizeof(LOGFONT),&lf);
  90.              lf.lfWeight=FW_BOLD;
  91.              hFontBold=CreateFontIndirect(&lf);
  92.              lf.lfWeight=FW_NORMAL;
  93.              lf.lfUnderline=TRUE;
  94.              hFontURL=CreateFontIndirect(&lf);
  95.              SendDlgItemMessage(hwndDlg,IDC_STATIC_NAME,WM_SETFONT,(WPARAM)hFontBold,0);
  96.              SendDlgItemMessage(hwndDlg,IDC_STATIC_MAIL,WM_SETFONT,(WPARAM)hFontURL,0);
  97.              SendDlgItemMessage(hwndDlg,IDC_STATIC_URL,WM_SETFONT,(WPARAM)hFontURL,0);
  98.              SendDlgItemMessage(hwndDlg,IDC_STATIC_VERSION,WM_SETFONT,(WPARAM)hFontBold,0);
  99.              SendDlgItemMessage(hwndDlg,IDC_STATIC_MADE_IN,WM_SETFONT,(WPARAM)hFontBold,0);
  100.              SetClassLong(GetDlgItem(hwndDlg,IDC_STATIC_MAIL),GCL_HCURSOR,(LPARAM)hCursor);
  101.  
  102.              SetDlgItemText(hwndDlg,IDC_STATIC_VERSION,GetWCXVersion(verStr));
  103.  
  104.              InitCommonControls();
  105.  
  106.              hwndTT=CreateWindowEx(0,TOOLTIPS_CLASS, (LPSTR) NULL,TTS_ALWAYSTIP|TTS_NOPREFIX, 
  107.                     0,0,0,0,hwndDlg,(HMENU) NULL, g_hInstance, NULL);
  108.              ZeroMemory(&ti,sizeof(TOOLINFO));
  109.              ti.cbSize = sizeof(TOOLINFO); 
  110.              ti.uFlags=TTF_IDISHWND|TTF_SUBCLASS;
  111.             ti.hwnd = hwndDlg; 
  112.  
  113.             ti.uId = (UINT) GetDlgItem(hwndDlg,IDC_STATIC_MAIL); 
  114.             ti.lpszText = LPSTR_TEXTCALLBACK ;
  115.              
  116.             SendMessage(hwndTT, TTM_ADDTOOL, 0,(LPARAM)&ti);
  117.  
  118.             ti.uId = (UINT) GetDlgItem(hwndDlg,IDC_STATIC_MAIL); 
  119.             SendMessage(hwndTT, TTM_ADDTOOL, 0,(LPARAM)&ti);
  120.             ti.uId = (UINT) GetDlgItem(hwndDlg,IDC_STATIC_URL); 
  121.             SendMessage(hwndTT, TTM_ADDTOOL, 0,(LPARAM)&ti);
  122.             /*ti.uId = (UINT) GetDlgItem(hwndDlg,IDC_COMBO_METHOD); 
  123.             SendMessage(hwndTT, TTM_ADDTOOL, 0,(LPARAM)&ti);*/
  124.  
  125.             SendMessage(hwndTT, TTM_SETMAXTIPWIDTH,0,200);
  126.             SendMessage(hwndTT, TTM_SETDELAYTIME,TTDT_AUTOPOP,MAKELONG(82800,0));
  127.   
  128.            return TRUE;
  129.          }
  130.        break;
  131.      case WM_CTLCOLORSTATIC:
  132.             switch(GetDlgCtrlID((HWND)lParam))
  133.             {
  134.             case IDC_STATIC_MAIL:
  135.             case IDC_STATIC_URL:
  136.                 SetBkMode((HDC)wParam,TRANSPARENT);
  137.                 SetTextColor((HDC)wParam,RGB(0,0,255));
  138.                 return (BOOL)hBrush;
  139.             case IDC_STATIC_VERSION:
  140.             case IDC_STATIC_MADE_IN:
  141.                 SetBkMode((HDC)wParam,TRANSPARENT);
  142.                 SetTextColor((HDC)wParam,RGB(128,0,0));
  143.                 return (BOOL)hBrush;
  144.             }
  145.          break;
  146.             case WM_NOTIFY:
  147.                 {
  148.                     LPNMHDR lpnmhdr=(LPNMHDR)lParam;
  149.                     if(lpnmhdr->code == TTN_NEEDTEXT)
  150.                     {
  151.                         UINT id;
  152.                         LPNMTTDISPINFO lpnmtdi = (LPNMTTDISPINFO)lParam;
  153.                         lpnmtdi->hinst=NULL;
  154.                         if(lpnmtdi->uFlags & TTF_IDISHWND)
  155.                             id=GetWindowLong((HWND)lpnmtdi->hdr.idFrom,GWL_ID);
  156.                         else
  157.                             id=lpnmtdi->hdr.idFrom;
  158.                         lpnmtdi->lpszText=toolsStr;
  159.                         LoadString(g_hInstance,id,toolsStr,512);
  160.                         lpnmtdi->uFlags|=TTF_DI_SETITEM;
  161.                     }
  162.                 }
  163.                 break;
  164.      case WM_COMMAND:
  165.        switch (LOWORD(wParam)) {
  166.          case IDOK:    /* OK  */
  167.              {
  168.                  /*char num[4];
  169.                  num[1]='\0';*/
  170.            DeleteObject(hBrush);
  171.             /*num[0]=(char)('0'+(gPackMetod=SendDlgItemMessage(hwndDlg,IDC_COMBO_METHOD,CB_GETCURSEL,0,0)));
  172.             WritePrivateProfileString(SEC_NAME,COMBO_METHOD,num,INI_NAME);
  173.             */
  174.             DeleteObject(hFontBold);
  175.             DeleteObject(hFontURL);
  176.             DestroyCursor(hCursor);
  177.             EndDialog(hwndDlg,1);
  178.             break;
  179.              }
  180.          case IDCANCEL:    /* Cancel */
  181.            DeleteObject(hBrush);
  182.             DeleteObject(hFontBold);
  183.             DeleteObject(hFontURL);
  184.             DestroyCursor(hCursor);
  185.             EndDialog(hwndDlg,0);
  186.             break;
  187.          case IDC_STATIC_MAIL:
  188.          case IDC_STATIC_URL:
  189.              if(HIWORD(wParam) == STN_CLICKED)
  190.              {
  191.                  char str[255];
  192.                  GetWindowText((HWND)LOWORD(lParam),str,255);
  193.                  ShellExecute(hwndDlg,"open",str,0,0,SW_SHOW);
  194.              }
  195.              break;
  196.        }
  197.      break;
  198.    }
  199.    return FALSE;
  200. }
  201.  
  202. void __stdcall ConfigurePacker(HANDLE ParentHandle, HANDLE hinstance)
  203. {    
  204.    /* You may ask for packing (NOT unpacking!) parameters here */
  205.    DialogBox((HINSTANCE)hinstance,"CONFDLG",(HWND)ParentHandle,(DLGPROC)&DialogProc);
  206. }
  207.