Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
convgrp.h
Package: win2ksrc.rar [view]
Upload User: caisha3
Upload Date: 2013-09-21
Package Size: 208739k
Code Size: 9k
Category:
Windows Develop
Development Platform:
Visual C++
- /*++ BUILD Version: 0002 // Increment this if a change has global effects
- /****************************************************************************/
- /* */
- /* CONVGRP.H - */
- /* */
- /* Conversion from Win3.1 16 bit .grp file to NT 32bit .grp files for */
- /* the Program Manager */
- /* */
- /* Created: 10-15-92 Johanne Caron */
- /* */
- /****************************************************************************/
- #include <setjmp.h>
- #include <string.h>
- #include <stdlib.h>
- #include <fcntl.h>
- #include <io.h>
- #include <stdio.h>
- #include <errno.h>
- #include <ctype.h>
- #include <windows.h>
- /*--------------------------------------------------------------------------*/
- /* */
- /* Typedefs */
- /* */
- /*--------------------------------------------------------------------------*/
- /*
- * .GRP File format structures -
- */
- typedef struct tagGROUPDEF {
- DWORD dwMagic; /* magical bytes 'PMCC' */
- WORD wCheckSum; /* adjust this for zero sum of file */
- WORD cbGroup; /* length of group segment */
- RECT rcNormal; /* rectangle of normal window */
- POINT ptMin; /* point of icon */
- WORD nCmdShow; /* min, max, or normal state */
- WORD pName; /* name of group */
- /* these four change interpretation */
- WORD cxIcon; /* width of icons */
- WORD cyIcon; /* hieght of icons */
- WORD wIconFormat; /* planes and BPP in icons */
- WORD wReserved; /* This word is no longer used. */
- WORD cItems; /* number of items in group */
- WORD rgiItems[1]; /* array of ITEMDEF offsets */
- } GROUPDEF, *PGROUPDEF;
- typedef GROUPDEF *LPGROUPDEF;
- typedef struct tagITEMDEF {
- POINT pt; /* location of item icon in group */
- WORD idIcon; /* id of item icon */
- WORD wIconVer; /* icon version */
- WORD cbIconRes; /* size of icon resource */
- WORD indexIcon; /* index of item icon */
- WORD dummy2; /* - not used anymore */
- WORD pIconRes; /* offset of icon resource */
- WORD dummy3; /* - not used anymore */
- WORD pName; /* offset of name string */
- WORD pCommand; /* offset of command string */
- WORD pIconPath; /* offset of icon path */
- } ITEMDEF, *PITEMDEF;
- typedef ITEMDEF *LPITEMDEF;
- /* the pointers in the above structures are short pointers relative to the
- * beginning of the segments. This macro converts the short pointer into
- * a long pointer including the proper segment/selector value. It assumes
- * that its argument is an lvalue somewhere in a group segment, for example,
- * PTR(lpgd->pName) returns a pointer to the group name, but k=lpgd->pName;
- * PTR(k) is obviously wrong as it will use either SS or DS for its segment,
- * depending on the storage class of k.
- */
- #define PTR(base, offset) (LPSTR)((PBYTE)base + offset)
- /* PTR2 is used for those cases where a variable already contains an offset
- * (The "case that doesn't work", above)
- */
- #define PTR2(lp,offset) ((LPSTR)MAKELONG(offset,HIWORD(lp)))
- /* this macro is used to retrieve the i-th item in the group segment. Note
- * that this pointer will NOT be NULL for an unused slot.
- */
- #define ITEM(lpgd,i) ((LPITEMDEF)PTR(lpgd, lpgd->rgiItems[i]))
- /*--------------------------------------------------------------------------*/
- /* */
- /* Tag Stuff */
- /* */
- /*--------------------------------------------------------------------------*/
- typedef struct _tag
- {
- WORD wID; // tag identifier
- WORD dummy1; // need this for alignment!
- int wItem; // (unde the covers 32 bit point!)item the tag belongs to
- WORD cb; // size of record, including id and count
- WORD dummy2; // need this for alignment!
- BYTE rgb[1];
- } PMTAG, FAR * LPPMTAG;
- #define GROUP_MAGIC 0x43434D50L /* 'PMCC' */
- #define PMTAG_MAGIC GROUP_MAGIC
- /* range 8000 - 80FF > global
- * range 8100 - 81FF > per item
- * all others reserved
- */
- #define ID_MAINTAIN 0x8000
- /* bit used to indicate a tag that should be kept even if the writer
- * doesn't recognize it.
- */
- #define ID_MAGIC 0x8000
- /* data: the string 'TAGS'
- */
- #define ID_WRITERVERSION 0x8001
- /* data: string in the form [9]9.99[Z].99
- */
- #define ID_APPLICATIONDIR 0x8101
- /* data: ASCIZ string of directory where application may be
- * located.
- * this is defined as application dir rather than default dir
- * since the default dir is explicit in the 3.0 command line and
- * must stay there. The true "new information" is the application
- * directory. If not present, search the path.
- */
- #define ID_HOTKEY 0x8102
- /* data: WORD hotkey index
- */
- #define ID_MINIMIZE 0x8103
- /* data none
- */
- #define ID_LASTTAG 0xFFFF
- /* the last tag in the file
- */
- /*
- * Maximium number of items allowed in a group
- */
- #define CITEMSMAX 50
- /*--------------------------------------------------------------------------*/
- /*--------------------------------------------------------------------------*/
- //
- // This is the structure of the .grp files in Windows3.1
- //
- /* .GRP File format structures -
- */
- typedef struct tagGROUPDEF16
- {
- DWORD dwMagic; /* magical bytes 'PMCC' */
- WORD wCheckSum; /* adjust this for zero sum of file */
- WORD cbGroup; /* length of group segment */
- WORD nCmdShow; /* min, max, or normal state */
- SMALL_RECT rcNormal; /* rectangle of normal window */
- POINTS ptMin; /* point of icon */
- WORD pName; /* name of group */
- /* these four change interpretation */
- WORD cxIcon; /* width of icons */
- WORD cyIcon; /* hieght of icons */
- WORD wIconFormat; /* planes and BPP in icons */
- WORD wReserved; /* This word is no longer used. */
- WORD cItems; /* number of items in group */
- WORD rgiItems[1]; /* array of ITEMDEF offsets */
- } GROUPDEF16;
- typedef GROUPDEF16 *LPGROUPDEF16;
- /* this macro is used to retrieve the i-th item in the group segment. Note
- * that this pointer will NOT be NULL for an unused slot.
- */
- #define ITEM16(lpgd16,i) ((LPBYTE)PTR(lpgd16, lpgd16->rgiItems[i]))
- #if 0
- //
- // These structures are not needed for the conversion but it is useful to
- // understand what is going on.
- //
- typedef struct tagITEMDEF16
- {
- POINTS pt; /* location of item icon in group */
- // NB This is read when a group is
- // loaded and updated when a group is
- // written. All painting/moving is
- // done using the icon and title rects
- // in an ITEM. So if you want to know
- // where an item is use it's icon rect
- // not it's point.
- WORD iIcon; /* index of item icon */
- WORD cbHeader; /* size of icon header */
- WORD cbANDPlane; /* size of and part of icon */
- WORD cbXORPlane; /* size of xor part of icon */
- WORD pHeader; /* file offset of icon header */
- WORD pANDPlane; /* file offset of AND plane */
- WORD pXORPlane; /* file offset of XOR plane */
- WORD pName; /* file offset of name string */
- WORD pCommand; /* file offset of command string */
- WORD pIconPath; /* file offset of icon path */
- } ITEMDEF16;
- typedef ITEMDEF16 *LPITEMDEF16;
- typedef struct _tag16
- {
- WORD wID; // tag identifier
- WORD wItem; // item the tag belongs to
- WORD cb; // size of record, including id and count
- BYTE rgb[1];
- } TAG16, * LPTAG16;
- #endif
- //
- // Globals
- //
- HANDLE hInst;