|
|
1.1 ! root 1: /**************************************************************************\ ! 2: * getdev.c -- sample program demonstrating the getdev... APIs ! 3: * ! 4: * written March 92 by Steve Firebaugh ! 5: * ! 6: * In this sample the main window is a dialog box. There is no need to ! 7: * register a new window class or create a new window. Instead just call ! 8: * DialogBox() and use the template defined in the .RC file. All of the ! 9: * interesting code is thus in the window procedure for the dialog box. ! 10: * ! 11: * The dialog template currently specifies a "monospaced font." This makes ! 12: * the dialog look somewhat odd, but makes text formatting much easier. If ! 13: * the specified font does not exist on the system running this sample, the ! 14: * program will work fine, but the contents of the listbox will not look ! 15: * very good. ! 16: * ! 17: \**************************************************************************/ ! 18: ! 19: #include <windows.h> ! 20: #include "getdev.h" ! 21: ! 22: ! 23: /**************************************************************************\ ! 24: * ! 25: * function: WinMain() ! 26: * ! 27: * input parameters: c.f. generic sample ! 28: * ! 29: \**************************************************************************/ ! 30: int APIENTRY WinMain(HANDLE hInstance, HANDLE hPrevInstance, ! 31: LPSTR lpCmdLine, int nCmdShow) ! 32: { ! 33: int ret; ! 34: ! 35: UNREFERENCED_PARAMETER( hPrevInstance ); ! 36: UNREFERENCED_PARAMETER( lpCmdLine ); ! 37: UNREFERENCED_PARAMETER( nCmdShow); ! 38: ! 39: ret = DialogBox (hInstance, "getdevDlg", NULL, MainDlgProc); ! 40: return ret; ! 41: } ! 42: ! 43: ! 44: ! 45: /**************************************************************************\ ! 46: * ! 47: * function: MainDlgProc() ! 48: * ! 49: * input parameters: standard window procedure parameters. ! 50: * ! 51: * At initialization time, call GetDeviceCaps() repeatedly and place the ! 52: * results in the list box. ! 53: * ! 54: \**************************************************************************/ ! 55: LONG APIENTRY MainDlgProc(HWND hwnd, UINT message, UINT wParam, LONG lParam) ! 56: { ! 57: UNREFERENCED_PARAMETER(lParam); ! 58: ! 59: ! 60: switch (message) { ! 61: ! 62: case WM_INITDIALOG: { ! 63: int i; ! 64: int value; ! 65: HDC hdc; ! 66: ! 67: hdc = GetDC (hwnd); ! 68: ! 69: for (i = 0; i < NINDEX ; i++) { ! 70: value = GetDeviceCaps (hdc , DevCaps[i].Value); ! 71: wsprintf (buffer,"%s %8d", DevCaps[i].String, value); ! 72: SendDlgItemMessage (hwnd, DID_LISTBOX, LB_ADDSTRING, 0, (LONG) buffer); ! 73: ExpandInfo (hwnd, DevCaps[i].Value, value); ! 74: } ! 75: ! 76: ReleaseDC (hwnd,hdc); ! 77: } break; ! 78: ! 79: ! 80: /********************************************************************\ ! 81: * WM_SYSCOMMAND ! 82: * ! 83: * ignore all syscommand messages, except for SC_CLOSE. ! 84: * on this one, call EndDialog(). ! 85: \********************************************************************/ ! 86: case WM_SYSCOMMAND: ! 87: if (wParam == SC_CLOSE) { ! 88: EndDialog (hwnd, TRUE); ! 89: return TRUE; ! 90: } else ! 91: return FALSE; ! 92: break; ! 93: ! 94: ! 95: default: return FALSE; ! 96: } /* end switch(message) */ ! 97: } ! 98: ! 99: ! 100: ! 101: ! 102: ! 103: /**************************************************************************\ ! 104: * ! 105: * function: ExpandInfo() ! 106: * ! 107: * input parameters: ! 108: * hwnd - parent of the list box with the info. ! 109: * index - the input value which was sent to GetDeviceCaps(). ! 110: * value - the return value from calling GetDeviceCaps(). ! 111: * ! 112: * global variables: ! 113: * buffer - string to hold info sent to list box. ! 114: * space - format string to wsprintf ! 115: * ! 116: * Some of the return values from GetDeviceCaps() are bit strings ! 117: * where each bit has a constant defined for it in wingdi.h. This ! 118: * function simply translates the bits into the string constant and ! 119: * then places that in the listbox. ! 120: * ! 121: \**************************************************************************/ ! 122: VOID ExpandInfo (HWND hwnd, int index, int value) ! 123: { ! 124: int i; ! 125: ! 126: switch (index) { ! 127: ! 128: case TECHNOLOGY : ! 129: for (i = 0 ; i< NDevice ; i++) { ! 130: if (value == Device[i].Value) { ! 131: wsprintf (buffer,space, Device[i].String); ! 132: SendDlgItemMessage (hwnd, DID_LISTBOX, LB_ADDSTRING, 0, (LONG)buffer); ! 133: } ! 134: } ! 135: break; ! 136: ! 137: ! 138: ! 139: case CURVECAPS : ! 140: for (i = 0 ; i< NCurveCaps ; i++) { ! 141: if (value & CurveCaps[i].Value) { ! 142: wsprintf (buffer,space, CurveCaps[i].String); ! 143: SendDlgItemMessage (hwnd, DID_LISTBOX, LB_ADDSTRING, 0, (LONG)buffer); ! 144: } ! 145: } ! 146: break; ! 147: ! 148: ! 149: ! 150: case LINECAPS : ! 151: for (i = 0 ; i< NLineCaps ; i++) { ! 152: if (value & LineCaps[i].Value) { ! 153: wsprintf (buffer,space, LineCaps[i].String); ! 154: SendDlgItemMessage (hwnd, DID_LISTBOX, LB_ADDSTRING, 0, (LONG)buffer); ! 155: } ! 156: } ! 157: break; ! 158: ! 159: ! 160: ! 161: case POLYGONALCAPS: ! 162: for (i = 0 ; i< NPolygonalCaps ; i++) { ! 163: if (value & PolygonalCaps[i].Value) { ! 164: wsprintf (buffer,space, PolygonalCaps[i].String); ! 165: SendDlgItemMessage (hwnd, DID_LISTBOX, LB_ADDSTRING, 0, (LONG)buffer); ! 166: } ! 167: } ! 168: break; ! 169: ! 170: ! 171: ! 172: case TEXTCAPS : ! 173: for (i = 0 ; i< NTextCaps ; i++) { ! 174: if (value & TextCaps[i].Value) { ! 175: wsprintf (buffer,space, TextCaps[i].String); ! 176: SendDlgItemMessage (hwnd, DID_LISTBOX, LB_ADDSTRING, 0, (LONG)buffer); ! 177: } ! 178: } ! 179: break; ! 180: ! 181: ! 182: ! 183: case CLIPCAPS : ! 184: for (i = 0 ; i< NClipCaps ; i++) { ! 185: if (value & ClipCaps[i].Value) { ! 186: wsprintf (buffer,space, ClipCaps[i].String); ! 187: SendDlgItemMessage (hwnd, DID_LISTBOX, LB_ADDSTRING, 0, (LONG)buffer); ! 188: } ! 189: } ! 190: break; ! 191: ! 192: ! 193: ! 194: case RASTERCAPS : ! 195: for (i = 0 ; i< NRasterCaps ; i++) { ! 196: if (value & RasterCaps[i].Value) { ! 197: wsprintf (buffer,space, RasterCaps[i].String); ! 198: SendDlgItemMessage (hwnd, DID_LISTBOX, LB_ADDSTRING, 0, (LONG)buffer); ! 199: } ! 200: } ! 201: break; ! 202: ! 203: ! 204: default: ! 205: break; ! 206: ! 207: } /* end switch */ ! 208: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.