Annotation of mstools/samples/gdidemo/dialog.c, revision 1.1.1.2

1.1       root        1: /*---------------------------------------------------------------------------*\
                      2: | DIALOG MODULE
                      3: |   This module contains the dialogbox routines for this application.
                      4: |
                      5: |
                      6: | segment: _DIALOG (DOS16)
                      7: | created: 31-Oct-90
                      8: | history: 31-Oct-90 <chriswil> created.
                      9: |
                     10: \*---------------------------------------------------------------------------*/
                     11: 
                     12: #include <windows.h>
                     13: #include "gdidemo.h"
                     14: 
                     15: /*---------------------------------------------------------------------------*\
                     16: | DISPLAY DIALOG BOX
                     17: |   This is a routine to display a generic modal-dialog box.
                     18: |
                     19: | created: 20-Oct-90
                     20: | history: 20-Oct-90 <chriswil> created.
                     21: |
                     22: \*---------------------------------------------------------------------------*/
                     23: int FAR DisplayDialogBox(HWND hWnd, LPSTR lpszTemplate, WNDPROC lpfFunction, LONG lExtra)
                     24: {
                     25:     HANDLE  hInstance;
                     26:     WNDPROC lpfDlg;
                     27:     int     nRet;
                     28: 
                     29: 
                     30:     nRet = -1;
                     31:     if(hInstance = GETINSTANCE(hWnd))
                     32:     {
                     33:         if(lpfDlg = MakeProcInstance(lpfFunction,hInstance))
                     34:         {
1.1.1.2 ! root       35:            nRet = DialogBoxParam(hInstance,lpszTemplate,hWnd,(DLGPROC)lpfDlg,lExtra);
1.1       root       36:             FreeProcInstance(lpfDlg);
                     37:         }
                     38:     }
                     39:     return(nRet);
                     40: }
                     41: 
                     42: 
                     43: /*---------------------------------------------------------------------------*\
                     44: | ABOUT DIALOG PROCEDURE
                     45: |   This is the main dialogbox routine for the HELPABOUT template.
                     46: |
                     47: | created: 31-Oct-90
                     48: | history: 31-Oct-90 <chriswil> created.
                     49: |
                     50: \*---------------------------------------------------------------------------*/
                     51: BOOL APIENTRY AboutDlgProc(HWND hDlg, UINT wMsg, WPARAM wParam, LONG lParam)
                     52: {
                     53:     lParam = lParam;
                     54: 
                     55:     switch(wMsg)
                     56:     {
                     57:         /*
                     58:         ** Set the focus to the OK button.
                     59:         */
                     60:         case WM_INITDIALOG:
                     61:             SetFocus(GetDlgItem(hDlg,IDOK));
                     62:             break;
                     63: 
                     64: 
                     65:         /*
                     66:         ** Look for an ESC or RETURN event.
                     67:         */
                     68:         case WM_COMMAND:
                     69:             switch(wParam)
                     70:             {
                     71:                 case IDOK:
                     72:                 case IDCANCEL:
                     73:                     EndDialog(hDlg,TRUE);
                     74:                     break;
                     75: 
                     76:                 default:
                     77:                     return(FALSE);
                     78:             }
                     79:             break;
                     80: 
                     81: 
                     82:         /*
                     83:         ** Wash the background of the aboutbox to give it a nice blue-scaling
                     84:         ** effect.  Invalidate the OK button to force it to the top.  This
                     85:         ** seems to be necessary since the OK button gets overwritten during
                     86:         ** the washing.
                     87:         */
                     88:         case WM_PAINT:
                     89:             PaintWindow(hDlg,COLOR_SCALE_BLUE);
                     90:             InvalidateRect(GetDlgItem(hDlg,IDOK),NULL,TRUE);
                     91: 
                     92: 
                     93:         /*
                     94:         ** Default handler.
                     95:         */
                     96:         default:
                     97:             return(FALSE);
                     98:     }
                     99:     return(TRUE);
                    100: }
                    101: 
                    102: 
                    103: /*---------------------------------------------------------------------------*\
                    104: | PAINT WND BACKGROUND
                    105: |   This routine is used to wash the background of a window.
                    106: |
                    107: | created: 23-Jan-91
                    108: | history: 23-Jan-91 <chriswil> created.
                    109: |
                    110: \*---------------------------------------------------------------------------*/
                    111: VOID PaintWindow(HWND hWnd, int nColor)
                    112: {
                    113:     HDC         hDC;
                    114:     int         nMapMode,idx,nSize,nReserved,nLoop;
                    115:     RECT        rect;
                    116:     HBRUSH      hBrush;
                    117:     PAINTSTRUCT ps;
                    118:     HPALETTE    hPal;
                    119: 
                    120: 
                    121:     if(hDC = BeginPaint(hWnd,&ps))
                    122:     {
                    123:         GetClientRect(hWnd,&rect);
                    124:         nMapMode = SetMapMode(hDC,MM_ANISOTROPIC);
                    125: 
                    126: 
                    127:         if(GetDeviceCaps(hDC,RASTERCAPS) & RC_PALETTE)
                    128:         {
                    129:             nReserved = GetDeviceCaps(hDC,NUMRESERVED);
                    130:             nSize     = GetDeviceCaps(hDC,SIZEPALETTE) - nReserved;
                    131: 
                    132:             if(hPal = CreateColorScalePalette(hDC,nColor))
                    133:             {
                    134:                 hPal = SelectPalette(hDC,hPal,FALSE);
                    135:                 RealizePalette(hDC);
                    136: 
                    137: 
                    138: #ifdef WIN16
                    139:                SetWindowExtEx(hDC,nSize,nSize);
                    140:                SetViewportExtEx(hDC,rect.right,-rect.bottom);
                    141:                SetViewportOrgEx(hDC,0,rect.bottom);
                    142: #else
                    143: 
                    144:                SetWindowExtEx(hDC,nSize,nSize,NULL);
                    145:                SetViewportExtEx(hDC,rect.right,-rect.bottom,NULL);
                    146:                SetViewportOrgEx(hDC,0,rect.bottom,NULL);
                    147: 
                    148: #endif
                    149: 
                    150:                 nLoop = nSize >> 1;
                    151:                 for(idx=0; idx < nLoop; idx++)
                    152:                 {
                    153:                     hBrush = CreateSolidBrush(PALETTEINDEX(idx+nLoop));
                    154:                     SetRect(&rect,idx,idx,nSize-idx,nSize-idx);
                    155:                     FillRect(hDC,&rect,hBrush);
                    156:                     DeleteObject(hBrush);
                    157:                 }
                    158:                 DeleteObject(SelectPalette(hDC,hPal,FALSE));
                    159:                 RealizePalette(hDC);
                    160:             }
                    161:         }
                    162:         else
                    163:         {
                    164: 
                    165: #ifdef WIN16
                    166: 
                    167:            SetWindowExtEx(hDC,512,512);
                    168:            SetViewportExtEx(hDC,rect.right,-rect.bottom);
                    169:            SetViewportOrgEx(hDC,0,rect.bottom);
                    170: 
                    171: #else
                    172: 
                    173:            SetWindowExtEx(hDC,512,512,NULL);
                    174:            SetViewportExtEx(hDC,rect.right,-rect.bottom,NULL);
                    175:            SetViewportOrgEx(hDC,0,rect.bottom,NULL);
                    176: 
                    177: #endif
                    178: 
                    179:             for(idx=0; idx < 256; idx++)
                    180:             {
                    181:                 hBrush = CreateSolidBrush(RGB(0,0,idx));
                    182:                 SetRect(&rect,idx,idx,512-idx,512-idx);
                    183:                 FillRect(hDC,&rect,hBrush);
                    184:                 DeleteObject(hBrush);
                    185:             }
                    186:         }
                    187: 
                    188:         SetMapMode(hDC,nMapMode);
                    189: 
                    190:         EndPaint(hWnd,&ps);
                    191:     }
                    192:     return;
                    193: }
                    194: 
                    195: 
                    196: 
                    197: 
                    198: 
                    199: 
                    200: /*---------------------------------------------------------------------------*\
                    201: | CREATE COLOR SCALE PALETTE
                    202: |   This routine creates a palette representing the scale values of a
                    203: |   particular RGB color.  A gray-scale palette can also be created.
                    204: |
                    205: | created: 01-Nov-90
                    206: | history: 01-Nov-90 <chriswil> created.
                    207: |
                    208: \*---------------------------------------------------------------------------*/
                    209: HPALETTE CreateColorScalePalette(HWND hDC, int nColor)
                    210: {
                    211:     HPALETTE     hPalette;
                    212:     GLOBALHANDLE hMem;
                    213:     LPLOGPALETTE lpMem;
                    214:     int          idx,nReserved,nSize;
                    215: 
                    216: 
                    217:     hPalette = NULL;
                    218:     if(GetDeviceCaps(hDC,RASTERCAPS) & RC_PALETTE)
                    219:     {
                    220:         nReserved = GetDeviceCaps(hDC,NUMRESERVED);
                    221:         nSize     = GetDeviceCaps(hDC,SIZEPALETTE) - nReserved;
                    222: 
                    223:         if(hMem = GlobalAlloc(GHND,(DWORD)sizeof(LOGPALETTE)+(sizeof(PALETTEENTRY)*nSize)))
                    224:         {
                    225:             if(lpMem = (LPLOGPALETTE)GlobalLock(hMem))
                    226:             {
                    227:                 lpMem->palNumEntries = (WORD)nSize;
                    228:                 lpMem->palVersion    = (WORD)0x0300;
                    229: 
                    230:                 switch(nColor)
                    231:                 {
                    232:                     case COLOR_SCALE_RED:
                    233:                         for(idx=0; idx < nSize; idx++)
                    234:                         {
                    235:                             lpMem->palPalEntry[idx].peRed   = (BYTE)idx;
                    236:                             lpMem->palPalEntry[idx].peGreen = 0;
                    237:                             lpMem->palPalEntry[idx].peBlue  = 0;
                    238:                             lpMem->palPalEntry[idx].peFlags = PC_RESERVED;
                    239:                         }
                    240:                         break;
                    241: 
                    242:                     case COLOR_SCALE_GREEN:
                    243:                         for(idx=0; idx < nSize; idx++)
                    244:                         {
                    245:                             lpMem->palPalEntry[idx].peRed   = 0;
                    246:                             lpMem->palPalEntry[idx].peGreen = (BYTE)idx;
                    247:                             lpMem->palPalEntry[idx].peBlue  = 0;
                    248:                             lpMem->palPalEntry[idx].peFlags = PC_RESERVED;
                    249:                         }
                    250:                         break;
                    251: 
                    252:                     case COLOR_SCALE_BLUE:
                    253:                         for(idx=0; idx < nSize; idx++)
                    254:                         {
                    255:                             lpMem->palPalEntry[idx].peRed   = 0;
                    256:                             lpMem->palPalEntry[idx].peGreen = 0;
                    257:                             lpMem->palPalEntry[idx].peBlue  = (BYTE)idx;
                    258:                             lpMem->palPalEntry[idx].peFlags = PC_RESERVED;
                    259:                         }
                    260:                         break;
                    261: 
                    262:                     default:
                    263:                     case COLOR_SCALE_GRAY:
                    264:                         for(idx=0; idx < nSize; idx++)
                    265:                         {
                    266:                             lpMem->palPalEntry[idx].peRed   = (BYTE)idx;
                    267:                             lpMem->palPalEntry[idx].peGreen = (BYTE)idx;
                    268:                             lpMem->palPalEntry[idx].peBlue  = (BYTE)idx;
                    269:                             lpMem->palPalEntry[idx].peFlags = PC_RESERVED;
                    270:                         }
                    271:                         break;
                    272:                 }
                    273: 
                    274:                 hPalette = CreatePalette(lpMem);
                    275: 
                    276:                 GlobalUnlock(hMem);
                    277:             }
                    278:             GlobalFree(hMem);
                    279:         }
                    280:     }
                    281:     return(hPalette);
                    282: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.