|
|
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.