home *** CD-ROM | disk | FTP | other *** search
/ Online Software 2: 1,000 Utilities / TK_OJ9711.iso / accessor / TCL170.LZH / DLLSRC.lzh / utl.c < prev   
Encoding:
C/C++ Source or Header  |  1997-09-27  |  4.9 KB  |  224 lines

  1. /*-------------------------------------------
  2. ü@UTL.C
  3. ü@ü@é╗é╠æ╝é╠è╓Éö
  4. ü@ü@Copyright (C) KAZUBON 1997
  5. ---------------------------------------------*/
  6.  
  7. #include "tcdll.h"
  8.  
  9. /*------------------------------------------------
  10. ü@ÄwÆΦé│éΩé╜û╝æOé╠âtâHâôâgé¬éáéΘé⌐Æ▓é╫éΘ
  11. --------------------------------------------------*/
  12. BOOL CALLBACK EnumFontFamExProc(ENUMLOGFONTEX* pelf, 
  13.     NEWTEXTMETRICEX* lpntm, int FontType, LPARAM fontname)
  14. {
  15.     if(strcmp((LPSTR)fontname, pelf->elfLogFont.lfFaceName) == 0)
  16.         return FALSE;
  17.     return TRUE;
  18. }
  19.  
  20. /*------------------------------------------------
  21. ü@APIüFâ|âCâôâgâTâCâYé⌐éτâtâHâôâgé≡ì∞ɼ
  22. --------------------------------------------------*/
  23. HFONT WINAPI CreateMyFont(char* fontname, int fontsize, LONG weight, LONG italic)
  24. {
  25.     LOGFONT lf;
  26.     POINT pt;
  27.     HDC hdc;
  28.     
  29.     memset(&lf, 0, sizeof(LOGFONT));
  30.  
  31.     hdc = GetDC(NULL);
  32.     
  33.     // ò╢ÄÜâZâbâgé≡îêé▀éΘ
  34.     lf.lfCharSet = SHIFTJIS_CHARSET;
  35.     if(EnumFontFamiliesEx(hdc, &lf, EnumFontFamExProc, (LPARAM)(LPSTR)fontname, 0))
  36.     {
  37.         lf.lfCharSet = OEM_CHARSET;
  38.         if(EnumFontFamiliesEx(hdc, &lf, EnumFontFamExProc, (LPARAM)(LPSTR)fontname, 0))
  39.         {
  40.             lf.lfCharSet = ANSI_CHARSET;
  41.             EnumFontFamiliesEx(hdc, &lf, EnumFontFamExProc, (LPARAM)(LPSTR)fontname, 0);
  42.         }
  43.     }
  44.     
  45.     pt.x = 0;
  46.     pt.y = GetDeviceCaps(hdc, LOGPIXELSY) * fontsize / 72;
  47.     DPtoLP(hdc, &pt, 1);
  48.     lf.lfHeight = -pt.y;
  49.     
  50.     ReleaseDC(NULL, hdc);
  51.     
  52.     lf.lfWidth = lf.lfEscapement = lf.lfOrientation = 0;
  53.     lf.lfWeight = weight;
  54.     lf.lfItalic = (BYTE)italic;
  55.     lf.lfUnderline = lf.lfStrikeOut = 0;
  56.     //lf.lfCharSet = ;
  57.     lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
  58.     lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
  59.     lf.lfQuality = DEFAULT_QUALITY;
  60.     lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
  61.     strcpy(lf.lfFaceName, fontname);
  62.     
  63.     return CreateFontIndirect(&lf);
  64. }
  65.  
  66. #define iskan1(c) ((0x81<=(c) && (c)<=0x9f) || (0xe0<=(c) && (c)<=0xfc))
  67.  
  68. /*------------------------------------------------
  69. ü@âtâ@âCâïé╠ègÆúÄqé╠öΣèr
  70. --------------------------------------------------*/
  71. int ext_cmp(char *fname, char *ext)
  72. {
  73.     char* p, *sp;
  74.     
  75.     sp = NULL; p = fname;
  76.     while(*p)
  77.     {
  78.         if(iskan1((unsigned char)*p)) p += 2;
  79.         else
  80.         {
  81.             if(*p == '.') sp = p;
  82.             else if(*p == '\\' || *p == '/') sp = NULL;
  83.             p++;
  84.         }
  85.     }
  86.     
  87.     if(sp == NULL) sp = p;
  88.     if(*sp == '.') sp++;
  89.     
  90.     while(1)
  91.     {
  92.         if(*sp == 0 && *ext == 0) return 0;
  93.         if(toupper(*sp) != toupper(*ext))
  94.             return (toupper(*sp) - toupper(*ext));
  95.         sp++; ext++;
  96.     }
  97.     return 0;
  98. }
  99.  
  100. /*------------------------------------------------
  101.     âJâôâ}é┼ïµÉ╪éτéΩé╜ò╢ÄÜù±é≡ĵéΦÅoé╖
  102. --------------------------------------------------*/
  103. void parse(char *dst, char *src, int n)
  104. {
  105.     char *dp;
  106.     int i;
  107.  
  108.     for(i = 0; i < n; i++)
  109.     {
  110.         while(*src && *src != ',') src++;
  111.         if(*src == ',') src++;
  112.     }
  113.     if(*src == 0) 
  114.     {
  115.         *dst = 0; return;
  116.     }
  117.     
  118.     while(*src == ' ') src++;
  119.     
  120.     dp = dst;
  121.     while(*src && *src != ',') *dst++ = *src++;
  122.     *dst = 0;
  123.     
  124.     while(dst != dp)
  125.     {
  126.         dst--;
  127.         if(*dst == ' ') *dst = 0;
  128.         else break;
  129.     }
  130. }
  131.  
  132. char mykey[] = "Software\\Kazubon\\TClock";
  133.  
  134. /*------------------------------------------------
  135. ü@Ä⌐ò¬é╠âîâWâXâgâèé⌐éτò╢ÄÜù±é≡ô╛éΘ
  136. --------------------------------------------------*/
  137. BOOL GetMyRegStr(char* entry, char* val)
  138. {
  139.     HKEY hkey;
  140.     DWORD regtype;
  141.     DWORD size;
  142.     BOOL r;
  143.  
  144.     r = FALSE;
  145.     if(RegOpenKey(HKEY_CURRENT_USER, mykey, &hkey) == 0)
  146.     {
  147.         size = 1024;
  148.         if(RegQueryValueEx(hkey, entry, 0, ®type,
  149.             (LPBYTE)val, &size) == 0)
  150.         {
  151.             if(size == 0) *val = 0;
  152.             r = TRUE;
  153.         }
  154.         RegCloseKey(hkey);
  155.     }
  156.     return r;
  157. }
  158.  
  159. /*------------------------------------------------
  160. ü@Ä⌐ò¬é╠âîâWâXâgâèé⌐éτLONGÆlé≡ô╛éΘ
  161. --------------------------------------------------*/
  162. BOOL GetMyRegLong(char* entry, LONG* val)
  163. {
  164.     HKEY hkey;
  165.     DWORD regtype;
  166.     DWORD size;
  167.     BOOL r;
  168.  
  169.     r = FALSE;
  170.     if(RegOpenKey(HKEY_CURRENT_USER, mykey, &hkey) == 0)
  171.     {
  172.         size = 4;
  173.         if(RegQueryValueEx(hkey, entry, 0, ®type,
  174.             (LPBYTE)val, &size) == 0)
  175.         {
  176.             if(size == 4) r = TRUE;
  177.         }
  178.         RegCloseKey(hkey);
  179.     }
  180.     return r;
  181. }
  182.  
  183. /*------------------------------------------------
  184. ü@âîâWâXâgâèé⌐éτò╢ÄÜù±é≡ô╛éΘ
  185. --------------------------------------------------*/
  186. BOOL GetRegStr(HKEY rootkey, char*subkey, char* entry, char* val)
  187. {
  188.     HKEY hkey;
  189.     DWORD regtype;
  190.     DWORD size;
  191.     BOOL r;
  192.     
  193.     r = FALSE;
  194.     if(RegOpenKey(rootkey, subkey, &hkey) == 0)
  195.     {
  196.         size = 1024;
  197.         if(RegQueryValueEx(hkey, entry, 0, ®type,
  198.             (LPBYTE)val, &size) == 0)
  199.         {
  200.             if(size == 0) *val = 0;
  201.             r = TRUE;
  202.         }
  203.         RegCloseKey(hkey);
  204.     }
  205.     return r;
  206. }
  207.  
  208. /*------------------------------------------------
  209. ü@âfâoâbâOùp
  210. --------------------------------------------------*/
  211. void WriteDebug(LPSTR s)
  212. {
  213.     HFILE hf;
  214.     char fname[] = "\\\\Kazubon-nt\\dshare\\MY PROGRAM\\TCLOCK\\DEBUG.TXT";
  215.  
  216.     hf = _lopen(fname, OF_WRITE);
  217.     if(hf == HFILE_ERROR) hf = _lcreat(fname, 0);
  218.     if(hf == HFILE_ERROR) return;
  219.     _llseek(hf, 0, 2);
  220.     _lwrite(hf, s, lstrlen(s));
  221.     _lwrite(hf, "\x0d\x0a", 2);
  222.     _lclose(hf);
  223. }
  224.