| 1 | #define INCL_PM | 
|---|
| 2 | #define INCL_OS2MM | 
|---|
| 3 | #define INCL_SW | 
|---|
| 4 | #define INCL_DOSMISC | 
|---|
| 5 | #define INCL_DOSMODULEMGR | 
|---|
| 6 | #include <os2.h> | 
|---|
| 7 | #include <os2me.h> | 
|---|
| 8 | #include <stdlib.h> | 
|---|
| 9 | #include <string.h> | 
|---|
| 10 |  | 
|---|
| 11 | #if 0 | 
|---|
| 12 | int main() | 
|---|
| 13 | { | 
|---|
| 14 | exit(); | 
|---|
| 15 | } | 
|---|
| 16 | #endif | 
|---|
| 17 |  | 
|---|
| 18 | /*char chrMMDir[CCHMAXPATH]; | 
|---|
| 19 | */ | 
|---|
| 20 | static void _getMMBase(char* chrMMDir, ULONG ulSize) | 
|---|
| 21 | { | 
|---|
| 22 | PSZ pszMMBase=""; | 
|---|
| 23 |  | 
|---|
| 24 | if(!DosScanEnv("MMBASE", &pszMMBase)) { | 
|---|
| 25 | char * chrPtr; | 
|---|
| 26 | strncpy(chrMMDir, pszMMBase, ulSize); | 
|---|
| 27 | chrMMDir[ulSize-1]=0; | 
|---|
| 28 | if((chrPtr=strchr(chrMMDir,';'))!=NULLHANDLE) | 
|---|
| 29 | *chrPtr=0; | 
|---|
| 30 | } | 
|---|
| 31 | } | 
|---|
| 32 |  | 
|---|
| 33 | static HMODULE _getDLLHMod(void) | 
|---|
| 34 | { | 
|---|
| 35 | HMODULE hmod=0; | 
|---|
| 36 | char chrPath[CCHMAXPATH]; | 
|---|
| 37 | _getMMBase( chrPath, sizeof(chrPath)); | 
|---|
| 38 | if(chrPath[strlen(chrPath)-1]=='\\') | 
|---|
| 39 | chrPath[strlen(chrPath)-1]=0; | 
|---|
| 40 | strcat(chrPath, "\\DLL\\cddbpage.dll"); | 
|---|
| 41 | /*WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, chrPath, "", 1234, MB_MOVEABLE); | 
|---|
| 42 | //DosBeep(500, 400);       */ | 
|---|
| 43 | if(!DosQueryModuleHandle(chrPath,&hmod)) { | 
|---|
| 44 | return hmod; | 
|---|
| 45 | } | 
|---|
| 46 | else | 
|---|
| 47 | return NULLHANDLE; | 
|---|
| 48 | } | 
|---|
| 49 |  | 
|---|
| 50 | typedef struct { | 
|---|
| 51 | HWND hwndHelpInstance; | 
|---|
| 52 | } MMPAGEINFO; | 
|---|
| 53 | typedef MMPAGEINFO * PMMPAGEINFO; | 
|---|
| 54 |  | 
|---|
| 55 |  | 
|---|
| 56 |  | 
|---|
| 57 | /*******************************************************************/ | 
|---|
| 58 | /*  Modeless secondary window procedure                            */ | 
|---|
| 59 | /*******************************************************************/ | 
|---|
| 60 | MRESULT EXPENTRY cddbPageDlgProc (HWND hwnd, ULONG msg, | 
|---|
| 61 | MPARAM mp1, MPARAM mp2) | 
|---|
| 62 | { | 
|---|
| 63 | PMMPAGEINFO pMMPageInfo = (PMMPAGEINFO)WinQueryWindowPtr (hwnd, QWL_USER); | 
|---|
| 64 |  | 
|---|
| 65 | switch (msg) { | 
|---|
| 66 | case WM_INITDLG: | 
|---|
| 67 | /* Initialize The Page */ | 
|---|
| 68 | pMMPageInfo = (PMMPAGEINFO) malloc(sizeof(MMPAGEINFO)); | 
|---|
| 69 | WinSetWindowPtr (hwnd, QWL_USER, pMMPageInfo); | 
|---|
| 70 |  | 
|---|
| 71 | /* Create a Help Instance */ | 
|---|
| 72 | /*    pMMPageInfo->hwndHelpInstance = WinCreateHelpInstance(...);*/ | 
|---|
| 73 | break; | 
|---|
| 74 |  | 
|---|
| 75 | case WM_DESTROY: | 
|---|
| 76 | /* Clean up page window resources */ | 
|---|
| 77 | /*    WinDestroyHelpInstance (pMMPageInfo->hwndHelpInstance); */ | 
|---|
| 78 | free (pMMPageInfo); | 
|---|
| 79 | break; | 
|---|
| 80 |  | 
|---|
| 81 | case WM_COMMAND: | 
|---|
| 82 | /* Process All Commands */ | 
|---|
| 83 | return ((MRESULT) FALSE); | 
|---|
| 84 | break; | 
|---|
| 85 |  | 
|---|
| 86 | case WM_CLOSE: | 
|---|
| 87 | return ((MRESULT) FALSE); | 
|---|
| 88 | break; | 
|---|
| 89 |  | 
|---|
| 90 | #if 0 | 
|---|
| 91 | case WM_HELP: | 
|---|
| 92 | if (pMMPageInfo->hwndHelpInstance) { | 
|---|
| 93 | WinSendMsg( | 
|---|
| 94 | pMMPageInfo->hwndHelpInstance, | 
|---|
| 95 | HM_DISPLAY_HELP, | 
|---|
| 96 | (MPARAM) mp1, | 
|---|
| 97 | HM_RESOURCEID ); | 
|---|
| 98 | } | 
|---|
| 99 | return ((MRESULT)TRUE); | 
|---|
| 100 | break; | 
|---|
| 101 |  | 
|---|
| 102 | case WM_TRANSLATEACCEL: | 
|---|
| 103 | return (WinDefWindowProc (hwnd, msg, mp1, mp2)); | 
|---|
| 104 | break; | 
|---|
| 105 |  | 
|---|
| 106 | case HM_QUERY_KEYS_HELP: | 
|---|
| 107 | return((MRESULT) IDH_HELPFORKEYS); | 
|---|
| 108 | break; | 
|---|
| 109 | #endif | 
|---|
| 110 | } | 
|---|
| 111 |  | 
|---|
| 112 | return (WinDefSecondaryWindowProc(hwnd, msg, mp1, mp2)); | 
|---|
| 113 | } | 
|---|
| 114 |  | 
|---|
| 115 | HWND InsertCDDBConfigPage(PMCI_DEVICESETTINGS_PARMS pMCIDevSettings) | 
|---|
| 116 | { | 
|---|
| 117 |  | 
|---|
| 118 | HWND  hwndPage=NULLHANDLE;               /* Page window handle    */ | 
|---|
| 119 | CHAR  szTabText[CCHMAXPATH];  /* Buffer for tab string */ | 
|---|
| 120 | ULONG ulPageId;               /* Page Identifier       */ | 
|---|
| 121 |  | 
|---|
| 122 | if(pMCIDevSettings) | 
|---|
| 123 | DosBeep(1000, 400); | 
|---|
| 124 | if(pMCIDevSettings->hwndCallback) | 
|---|
| 125 | DosBeep(500, 400); | 
|---|
| 126 | /*******************************************************************/ | 
|---|
| 127 | /*   Load a modeless secondary window                              */ | 
|---|
| 128 | /*******************************************************************/ | 
|---|
| 129 |  | 
|---|
| 130 | hwndPage    = WinLoadSecondaryWindow( | 
|---|
| 131 | HWND_DESKTOP, | 
|---|
| 132 | HWND_DESKTOP, | 
|---|
| 133 | /*                                       pMCIDevSettings->hwndNotebook, | 
|---|
| 134 | pMCIDevSettings->hwndNotebook,*/ | 
|---|
| 135 | &cddbPageDlgProc, | 
|---|
| 136 | NULLHANDLE, | 
|---|
| 137 | /*                            _getDLLHMod(),*/ /* hmod */ | 
|---|
| 138 | 1234, | 
|---|
| 139 | (PVOID)NULLHANDLE); | 
|---|
| 140 | /*           (PVOID)pMCIDevSettings);*/ | 
|---|
| 141 |  | 
|---|
| 142 | DosBeep(5000, 400); | 
|---|
| 143 | if (!hwndPage) return (NULLHANDLE); | 
|---|
| 144 |  | 
|---|
| 145 | ulPageId = (ULONG)WinSendMsg( pMCIDevSettings->hwndNotebook, | 
|---|
| 146 | BKM_INSERTPAGE, | 
|---|
| 147 | (ULONG)NULL, | 
|---|
| 148 | MPFROM2SHORT( BKA_AUTOPAGESIZE | | 
|---|
| 149 | BKA_MINOR, BKA_LAST ) ); | 
|---|
| 150 | /*******************************************************************/ | 
|---|
| 151 | /*  Associate a secondary window with a notebook page.             */ | 
|---|
| 152 | /*******************************************************************/ | 
|---|
| 153 |  | 
|---|
| 154 | WinSendMsg(pMCIDevSettings->hwndNotebook, BKM_SETPAGEWINDOWHWND, | 
|---|
| 155 | MPFROMP( ulPageId ), MPFROMLONG( hwndPage ) ); | 
|---|
| 156 |  | 
|---|
| 157 | /*******************************************************************/ | 
|---|
| 158 | /*  Get Tab Text from DLL                                          */ | 
|---|
| 159 | /*******************************************************************/ | 
|---|
| 160 |  | 
|---|
| 161 | #if 0 | 
|---|
| 162 | WinLoadString(WinQueryAnchorBlock( HWND_DESKTOP ), , | 
|---|
| 163 | (USHORT)IDB_EXAMPLE, CCHMAXPATH, szTabText ); | 
|---|
| 164 | #endif | 
|---|
| 165 |  | 
|---|
| 166 | /*******************************************************************/ | 
|---|
| 167 | /*  Set Tab Text                                                   */ | 
|---|
| 168 | /*******************************************************************/ | 
|---|
| 169 |  | 
|---|
| 170 | WinSendMsg( pMCIDevSettings->hwndNotebook, BKM_SETTABTEXT, | 
|---|
| 171 | MPFROMP( ulPageId ), szTabText ); | 
|---|
| 172 |  | 
|---|
| 173 | return( hwndPage ); | 
|---|
| 174 |  | 
|---|
| 175 | } | 
|---|
| 176 |  | 
|---|
| 177 |  | 
|---|
| 178 |  | 
|---|
| 179 |  | 
|---|