LWQ
2025-07-14 aef42eef51d1b86ac7217a88ce17c5156c30fe6d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
/************************************************************************/
/*
*
* Filename     :  MILDISPLAY.H
* Revision     :  10.40.0640
* Content      :  This file contains the defines necessary to use the
*                 Matrox Imaging Library display module
* Comments     :  
*
* Copyright © Matrox Electronic Systems Ltd., 1992-2020.
* All Rights Reserved
*************************************************************************/
#ifndef __MIL_DISPLAY_H__
#define __MIL_DISPLAY_H__
 
/************************************************************************/
/* MdispAlloc() for Windowed system                                     */
/************************************************************************/
#define M_MIL_DISPLAY_WND_CLASS_NAME MIL_TEXT("MIL Default Window")
 
// Maximum number of display that can be managed
#define M_MAX_VIDEO_DEVICE                            64L
 
/* DispNum */
#define M_DEV0                                        0L
#define M_DEV1                                        1L
#define M_DEV2                                        2L
#define M_DEV3                                        3L
#define M_DEV4                                        4L
#define M_DEV5                                        5L
#define M_DEV6                                        6L
#define M_DEV7                                        7L
#define M_DEV8                                        8L
#define M_DEV9                                        9L
#define M_DEV10                                       10L
#define M_DEV11                                       11L
#define M_DEV12                                       12L
#define M_DEV13                                       13L
#define M_DEV14                                       14L
#define M_DEV15                                       15L
#define M_DEV16                                       16L
#define M_DEV17                                       17L
#define M_DEV18                                       18L
#define M_DEV19                                       19L
#define M_DEV20                                       20L
#define M_DEV21                                       21L
#define M_DEV22                                       22L
#define M_DEV23                                       23L
#define M_DEV24                                       24L
#define M_DEV25                                       25L
#define M_DEV26                                       26L
#define M_DEV27                                       27L
#define M_DEV28                                       28L
#define M_DEV29                                       29L
#define M_DEV30                                       30L
#define M_DEV31                                       31L
#define M_DEV32                                       32L
#define M_DEV33                                       33L
#define M_DEV34                                       34L
#define M_DEV35                                       35L
#define M_DEV36                                       36L
#define M_DEV37                                       37L
#define M_DEV38                                       38L
#define M_DEV39                                       39L
#define M_DEV40                                       40L
#define M_DEV41                                       41L
#define M_DEV42                                       42L
#define M_DEV43                                       43L
#define M_DEV44                                       44L
#define M_DEV45                                       45L
#define M_DEV46                                       46L
#define M_DEV47                                       47L
#define M_DEV48                                       48L
#define M_DEV49                                       49L
#define M_DEV50                                       50L
#define M_DEV51                                       51L
#define M_DEV52                                       52L
#define M_DEV53                                       53L
#define M_DEV54                                       54L
#define M_DEV55                                       55L
#define M_DEV56                                       56L
#define M_DEV57                                       57L
#define M_DEV58                                       58L
#define M_DEV59                                       59L
#define M_DEV60                                       60L
#define M_DEV61                                       61L
#define M_DEV62                                       62L
#define M_DEV63                                       63L
#define M_CRTC0                                       0x00010000L
#define M_CRTC1                                       0x00020000L
#define M_CRTC2                                       0x00030000L
#define M_CRTC3                                       0x00040000L
#define M_CRTC4                                       0x00050000L
#define M_CRTC5                                       0x00060000L
#define M_CRTC6                                       0x00070000L
#define M_CRTC_MASK                                   0x00070000L
#define M_CRTC_OFFSET                                 (16)
#define M_CRTC_INDEX(a)                               (((a&M_CRTC_MASK)>>M_CRTC_OFFSET)-1)
#define M_DEVICE_NUMBER_MASK                          0x000003F
#define M_DEVICE_NUMBER(a)                            (a&M_DEVICE_NUMBER_MASK)
#define M_ALL_VALID_DISP_DEV_BITS                     (M_DEVICE_NUMBER_MASK | M_CRTC_MASK | M_MONITOR_BITS)
#define M_DISPLAY_NUMBER(devindex,crtcindex)          (devindex|((crtcindex+1)<<M_CRTC_OFFSET))
#define M_CENTER                                      0x00000080L
/* display positions values */
#define M_LEFT                                        0x00000100L
#define M_RIGHT                                       0x00000200L
#define M_TOP                                         0x00000400L
#define M_BOTTOM                                      0x00000800L
#define M_MONITOR_BITS                                0x00000F80
#define M_MONITOR_POSITION(p)                         ((M_NULL == (p&(~M_MONITOR_BITS)))? (p&M_MONITOR_BITS): M_NULL)
#define M_MOUSE_RESTRICTED                            0x00000001L
 
/* Init Flag */
#define M_REMOTE_DISPLAY                              0x00000001L
#define M_ASYNC_CUSTOM                                0x00000002L
#define M_DISPLAY_PROGRESSIVE                         0x00000004L
#define M_DISPLAY_INTERLACED                          0x00000008L
#define M_LOCAL_DISPLAY                               0x00000010L
//#define  AVAILABLE                                  0x00000020L Reserved for 3ddisp
//#define  AVAILABLE                                  0x00000040L
//#define  AVAILABLE                                  0x00000080L
//#define  AVAILABLE                                  0x00000100L
#define M_NETWORK                                     0x00000200L
#define M_EXCLUSIVE                                   0x00000400L
//#define  AVAILABLE                                  0x00000800L
#define M_XDUAL_SCREEN                                0x00001000L
#define M_VIDEO_HD                                    0x00002000L
#define M_DUAL_SCREEN                                 0x00004000L
#define M_VIDEO_ENCODER                               0x00008000L
#define M_AUXILIARY                                   0x00010000L
//#define  AVAILABLE                                  0x00020000L
#define M_EXTERNAL                                    0x00040000L
#define M_VIDEO_HARDWARE_DEVICE                       0x00080000L
#define M_WPF                                         0x00100000L
#define M_IN_BUFFER_DISPLAY                           0x00200000L
#define M_RENDER_TO_BUFFER                            0x00400000L
#define M_WEB                                         0x00800000L
#define M_WINDOWED                                    0x01000000L
//#define  AVAILABLE                                  0x02000000L
//#define  AVAILABLE                                  0x04000000L
#define M_MIL_WINDOW                                  0x08000000L
#define M_USER_WINDOW                                 0x10000000L
#define M_GDI_OVERLAY                                 0x20000000L
#define  M_FULL_SCREEN                                0x40000000L //M_LOCAL_DISPLAY_CONTROL
//NOT available (sign bit)                            0x80000000L
#define M_ALL_INIT_FLAGS                              0x41F5F62FL //for basic-display
#define M_DOCUMENTED_INIT_FLAGS                       (M_WINDOWED|M_AUXILIARY|M_DUAL_SCREEN|M_VIDEO_ENCODER|M_EXCLUSIVE)
#define M_DISPLAY_LOCATION                            (M_LOCAL_DISPLAY|M_REMOTE_DISPLAY)
#define M_IS_EXCLUSIVE(InitFlag)                      (InitFlag&M_EXCLUSIVE)
 
/************************************************************************/
/* MdispInquire() / MdispControl() Types                                */
/************************************************************************/
#define M_LOCAL_DISPLAY_CONTROL                       0X40000000L
#define M_REMOTE_DISPLAY_CONTROL                      0X20000000L
#define M_FORCED_LOCAL_DISPLAY_CONTROL                0x10000000L
#define M_FORCED_REMOTE_DISPLAY_CONTROL               0x08000000L
#define M_POST_CONTROL                                0x04000000L
 
#define M_IS_POST_CONTROL(X)                          ((X)&M_POST_CONTROL)
#define M_ORIGINAL_DISPLAY_CONTROL(X)                 ((X)&~(M_FORCED_LOCAL_DISPLAY_CONTROL|M_FORCED_REMOTE_DISPLAY_CONTROL))
#define M_FORCE_ON_LOCAL_DISPLAY(X)                   ((X) | M_FORCED_LOCAL_DISPLAY_CONTROL)
#define M_FORCE_ON_REMOTE_DISPLAY(X)                  ((X) | M_FORCED_REMOTE_DISPLAY_CONTROL)
#define M_IS_FORCED_ON_LOCAL_DISPLAY(X)               (((X) & M_FORCED_LOCAL_DISPLAY_CONTROL))
#define M_IS_FORCED_ON_REMOTE_DISPLAY(X)              (((X) & M_FORCED_REMOTE_DISPLAY_CONTROL))
 
// Shared controls/inquires with other modules (not all listed)
#define M_SIZE_X                                      1536L //M_LOCAL_DISPLAY_CONTROL // 0x600
#define M_SIZE_Y                                      1537L //M_LOCAL_DISPLAY_CONTROL // 0x601
#define M_SIZE_Z                                      1538L //M_LOCAL_DISPLAY_CONTROL // 0x602
#define M_SIZE_BAND                                   1005L //M_LOCAL_DISPLAY_CONTROL
#define M_SIZE_BAND_LUT                               1006L //M_REMOTE_DISPLAY_CONTROL
#define M_SIZE_BIT                                    1007L //M_REMOTE_DISPLAY_CONTROL
#define M_TYPE                                        1008L //M_REMOTE_DISPLAY_CONTROL
#define M_NUMBER                                      1009L //M_LOCAL_DISPLAY_CONTROL
#define M_INIT_FLAG                                   1012L //M_LOCAL_DISPLAY_CONTROL
#define M_ATTRIBUTE                                   1013L //M_REMOTE_DISPLAY_CONTROL
#define M_SIGN                                        1014L //M_REMOTE_DISPLAY_CONTROL
#define M_THREAD_PRIORITY                             1019L //M_LOCAL_DISPLAY_CONTROL // Already defined in mil.h
#define M_NEED_UPDATE                                 1020L //M_REMOTE_DISPLAY_CONTROL
#define M_ENCODER_START                               1025L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER                                     M_ENCODER_START
#define M_ENCODER_MODE                                1026L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_TYPE                                1027L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_SYNC_SOURCE                         1028L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_SYNC                                M_ENCODER_SYNC_SOURCE
#define M_ENCODER_PEDESTAL                            1029L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_FILTER                              1030L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_RGB_SYNC                            1031L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_INFO_MODE                           1032L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_RESET                               1033L //M_LOCAL_DISPLAY_CONTROL   //1034 reseved
#define M_ENCODER_SELECT_FIELD_ODD                    1037L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_SELECT_FIELD_EVEN                   1038L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_CONTRAST                            1039L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_BRIGHTNESS                          1040L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_SATURATION                          1041L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_HUE                                 1042L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_OVR_SHOW                            1043L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_OVR_LUT                             1044L //M_LOCAL_DISPLAY_CONTROL
#define M_ENCODER_OVR_BUF_ID                          1045L //M_LOCAL_DISPLAY_CONTROL
 
#define M_ENCODER_STATE                               M_ENCODER
#define M_SYNC_TYPE                                   M_ENCODER_RGB_SYNC
#define M_ENCODER_SYNC_LOCK                           M_ENCODER_SYNC_SOURCE
#define M_ENCODER_SYNC_FIELDS                         1047L //M_REMOTE_DISPLAY_CONTROL
#define M_ENCODER_CLOCK                               1048L //M_REMOTE_DISPLAY_CONTROL
#define M_ENCODER_END                                 M_ENCODER_CLOCK
#define M_Q_FACTOR                                    2564L //M_REMOTE_DISPLAY_CONTROL    // Already defined in mil.h
#define M_MODIFICATION_COUNT                          5010L //M_REMOTE_DISPLAY_CONTROL    // Already defined in mil.h
 
/************************************************************************/
/* MdispInquire() Types MIL_ID range start                              */
/************************************************************************/
#define M_DISP_INQUIRE_MIL_ID_START                   1100L
// Inquire value with MIL_ID type must be in that range : 1100-1199
#define M_OWNER_SYSTEM                                1101L //M_REMOTE_DISPLAY_CONTROL // Already define in mil.h
#define M_LUT_ID                                      1102L //M_REMOTE_DISPLAY_CONTROL // Already define in mil.h
#define M_SELECTED                                    1103L //M_REMOTE_DISPLAY_CONTROL
#define M_OVERLAY_LUT                                 1104L //M_REMOTE_DISPLAY_CONTROL
#define M_WINDOW_BUF_ID                               1105L //M_REMOTE_DISPLAY_CONTROL
#define M_OVERLAY_ID                                  1106L //M_REMOTE_DISPLAY_CONTROL
#define M_ASSOCIATED_LUT                              1110L //M_REMOTE_DISPLAY_CONTROL
#define M_AUXILIARY_BUF_ID                            1115L //M_LOCAL_DISPLAY_CONTROL
#define M_UNDERLAY_ID                                 1120L //M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_SURFACE                             1121L //M_LOCAL_DISPLAY_CONTROL
#define M_PRIMARY_SURFACE_ID                          1122L //M_REMOTE_DISPLAY_CONTROL
#define M_USER_OVERLAY_ID                             1123L //M_REMOTE_DISPLAY_CONTROL
#define M_COMPRESSED_DISPLAY_SURFACE                  1125L //M_REMOTE_DISPLAY_CONTROL
#define M_ASYNCHRONOUS_DISPLAY_SURFACE                1126L //M_REMOTE_DISPLAY_CONTROL
#define M_CURRENT_OVERLAY_ID                          1127L //M_REMOTE_DISPLAY_CONTROL
#define M_DISP_INQUIRE_MIL_ID_END                     1199L
/************************************************************************/
/* MdispInquire() Types MIL_ID range end                                */
/************************************************************************/
 
 
#define M_PAN_X                                       3000L //M_LOCAL_DISPLAY_CONTROL
#define M_PAN_Y                                       3001L //M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_X                                      3002L //M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_Y                                      3003L //M_LOCAL_DISPLAY_CONTROL
#define M_HARDWARE_PAN                                3004L //M_LOCAL_DISPLAY_CONTROL
#define M_HARDWARE_ZOOM                               3005L //M_LOCAL_DISPLAY_CONTROL
#define M_KEY_MODE                                    3007L //M_REMOTE_DISPLAY_CONTROL
#define M_KEY_CONDITION                               3008L //M_REMOTE_DISPLAY_CONTROL
#define M_KEY_MASK                                    3009L //M_REMOTE_DISPLAY_CONTROL
#define M_KEY_SUPPORTED                               3011L //M_REMOTE_DISPLAY_CONTROL
#define M_TRANSPARENT_COLOR                           0x01000060L //M_LOCAL_DISPLAY_CONTROL
#define M_OVERLAY                                     M_OVR //(0x00000080) M_REMOTE_DISPLAY_CONTROL
#define M_INTERPOLATION_MODE                          3018L //M_LOCAL_DISPLAY_CONTROL
#define M_HOOK_OFFSET                                 3019L
#define M_FRAME_START_HANDLER_PTR                     3020L//needed for mil.dll? -applicationinfo
#define M_FRAME_START_HANDLER_USER_PTR                3021L//needed for mil.dll? -applicationinfo
#define M_OVERLAY_SHOW                                3023L //M_REMOTE_DISPLAY_CONTROL
#define M_DISPLAY_MODE                                3029L //M_LOCAL_DISPLAY_CONTROL
#define M_PIXEL_FORMAT                                3032L //M_LOCAL_DISPLAY_CONTROL
#define M_LUT_SUPPORTED                               3033L //M_REMOTE_DISPLAY_CONTROL
#define M_WINDOW_ZOOM                                 3051L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_RESIZE                               3052L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_OVERLAP                              3053L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_SCROLLBAR                            3054L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_PROTECT_AREA                         3056L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_TITLE_BAR                            3057L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_MENU_BAR                             3058L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_TITLE_BAR_CHANGE                     3059L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_MENU_BAR_CHANGE                      3060L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_MOVE                                 3061L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_SYSBUTTON                            3062L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_MINBUTTON                            3063L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_MAXBUTTON                            3064L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_PALETTE_NOCOLLAPSE                   3069L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_RANGE                                3072L //M_LOCAL_DISPLAY_CONTROL // Already defined in mil.h
#define M_WINDOW_UPDATE_ON_PAINT                      3081L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_PAINT                                3083L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_INITIAL_POSITION_X                   3088L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_INITIAL_POSITION_Y                   3089L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_HANDLE                               3110L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_OFFSET_X                             3111L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_OFFSET_Y                             3112L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_SIZE_X                               3113L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_SIZE_Y                               3114L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_PAN_X                                3115L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_PAN_Y                                3116L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ZOOM_X                               3117L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ZOOM_Y                               3118L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_VISIBLE_OFFSET_X                     3141L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_VISIBLE_OFFSET_Y                     3142L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_VISIBLE_SIZE_X                       3145L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_VISIBLE_SIZE_Y                       3146L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ACTIVE                               3149L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ENABLE                               3150L //M_LOCAL_DISPLAY_CONTROL
#define M_PALETTE_HANDLE                              3151L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_THREAD_HANDLE                        3152L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_THREAD_ID                            3153L //M_LOCAL_DISPLAY_CONTROL
#define M_KEYBOARD_USE                                3155L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_SYNC_UPDATE                          3165L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_PAINT_MESSAGES                       3172L //M_LOCAL_DISPLAY_CONTROL
#define M_VIEW_MODE                                   3182L //M_REMOTE_DISPLAY_CONTROL
#define M_VIEW_BIT_SHIFT                              3183L //M_REMOTE_DISPLAY_CONTROL
#define M_UPDATE_WEB                                  3187L //M_LOCAL_DISPLAY_CONTROL
#define M_NO_TEARING                                  3188L //M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_MAX_X                                  3190L //M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_MIN_X                                  3191L //M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_MAX_Y                                  3192L //M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_MIN_Y                                  3193L //M_LOCAL_DISPLAY_CONTROL
#define M_DUAL_ZOOM                                   3197L //M_LOCAL_DISPLAY_CONTROL
#define M_DUAL_ZOOM_SUPPORTED                         3198L //M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE                                      3199L //M_REMOTE_DISPLAY_CONTROL
#define M_SYNCHRONOUS                                 0x00000001L
#define M_ASYNCHRONOUS                                0x00000002L
//      M_UPDATE+M_SYNCHRONOUS                        3200L //M_REMOTE_DISPLAY_CONTROL
//      M_UPDATE+M_ASYNCHRONOUS                       3201L //M_REMOTE_DISPLAY_CONTROL
#define M_WINDOW_VISIBLE                              3202L //M_LOCAL_DISPLAY_CONTROL
#define M_AUXILIARY_KEEP_DISPLAY_ALIVE                3207L //M_LOCAL_DISPLAY_CONTROL
#define M_USE_MOUSE_PAN                               3208L //M_LOCAL_DISPLAY_CONTROL
#define M_USE_MOUSE_ZOOM                              3209L //M_LOCAL_DISPLAY_CONTROL
#define M_SELECT_VIDEO_SOURCE                         3210L //M_LOCAL_DISPLAY_CONTROL
#define M_AUXILIARY_KEEP_UNDERLAY_ALIVE               3211L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_TRANSPARENCY                         3212L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_TRANSPARENT_COLOR                    3213L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ALPHA_BLENDING                       3214L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ALPHA_VALUE                          3215L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_LAYERED                              3216L //M_LOCAL_DISPLAY_CONTROL
#define M_RESTRICTED_MOUSE_ACTIVATED                  3217L //M_LOCAL_DISPLAY_CONTROL
#define M_INTERACTIVE_MODE                            3218L //M_LOCAL_DISPLAY_CONTROL
#define M_MOUSE_USE                                   3219L //M_LOCAL_DISPLAY_CONTROL
#define M_SOMEONE_HOOKED_TO_ANNOTATIONS_DRAW          3220L //M_LOCAL_DISPLAY_CONTROL
#define M_REGION_OUTSIDE_SHOW                         3221L //M_LOCAL_DISPLAY_CONTROL
#define M_REGION_INSIDE_SHOW                          3222L //M_LOCAL_DISPLAY_CONTROL
#define M_REGION_OUTSIDE_COLOR                        3223L //M_LOCAL_DISPLAY_CONTROL
#define M_REGION_INSIDE_COLOR                         3224L //M_LOCAL_DISPLAY_CONTROL
#define M_UNIFIED_ZOOM                                3225L //M_LOCAL_DISPLAY_CONTROL
#define M_ACTUAL_SIZE                                 3226L //M_LOCAL_DISPLAY_CONTROL
#define M_HANDLE_MESSAGES                             3227L //M_LOCAL_DISPLAY_CONTROL
#define M_MOUSE_CURSOR_CHANGE                         3229L //M_LOCAL_DISPLAY_CONTROL
#define M_HANDLE_SET_CURSOR_MESSAGE                   M_MOUSE_CURSOR_CHANGE
#define M_FORWARD_DISP_MESSAGES_TO_CLIENT             3233L //M_LOCAL_DISPLAY_CONTROL
 
/******************************************************************************/
 
#if OldDefinesSupport
#define M_KEY_COLOR                                   M_TRANSPARENT_COLOR
MIL_DEPRECATED(M_KEY_COLOR, 1000)
#define M_WINDOW_OVR_WRITE                            M_OVERLAY
MIL_DEPRECATED(M_WINDOW_OVR_WRITE, 1000)
#define M_WINDOW_OVR_BUF_ID                           M_OVERLAY_ID
MIL_DEPRECATED(M_WINDOW_OVR_BUF_ID, 1000)
#define M_WINDOW_OVR_SHOW                             M_OVERLAY_SHOW
MIL_DEPRECATED(M_WINDOW_OVR_SHOW, 1000)
#define M_WINDOW_OVR_LUT                              M_OVERLAY_LUT
MIL_DEPRECATED(M_WINDOW_OVR_LUT, 1000)
#define M_WINDOW_UPDATE                               M_UPDATE
MIL_DEPRECATED(M_WINDOW_UPDATE, 1000)
#define M_DISP_NUMBER                                 M_NUMBER
MIL_DEPRECATED(M_DISP_NUMBER, 1000)
#define M_DISP_FORMAT                                 M_FORMAT
MIL_DEPRECATED(M_DISP_FORMAT, 1000)
#define M_DISP_INIT_FLAG                              M_INIT_FLAG
MIL_DEPRECATED(M_DISP_INIT_FLAG, 1000)
#define M_DISP_PAN_X                                  M_PAN_X
MIL_DEPRECATED(M_DISP_PAN_X, 1000)
#define M_DISP_PAN_Y                                  M_PAN_Y
MIL_DEPRECATED(M_DISP_PAN_Y, 1000)
#define M_DISP_ZOOM_X                                 M_ZOOM_X
MIL_DEPRECATED(M_DISP_ZOOM_X, 1000)
#define M_DISP_ZOOM_Y                                 M_ZOOM_Y
MIL_DEPRECATED(M_DISP_ZOOM_Y, 1000)
#define M_DISP_HARDWARE_PAN                           M_HARDWARE_PAN
MIL_DEPRECATED(M_DISP_HARDWARE_PAN, 1000)
#define M_DISP_HARDWARE_ZOOM                          M_HARDWARE_ZOOM
MIL_DEPRECATED(M_DISP_HARDWARE_ZOOM, 1000)
#define M_DISP_KEY_MODE                               M_KEY_MODE
MIL_DEPRECATED(M_DISP_KEY_MODE, 1000)
#define M_DISP_KEY_CONDITION                          M_KEY_CONDITION
MIL_DEPRECATED(M_DISP_KEY_CONDITION, 1000)
#define M_DISP_KEY_MASK                               M_KEY_MASK
MIL_DEPRECATED(M_DISP_KEY_MASK, 1000)
#define M_DISP_KEY_COLOR                              M_TRANSPARENT_COLOR
MIL_DEPRECATED(M_DISP_KEY_COLOR, 1000)
#define M_DISP_MODE                                   M_DISPLAY_MODE
MIL_DEPRECATED(M_DISP_MODE, 1000)
#define M_DISP_THREAD_PRIORITY                        M_THREAD_PRIORITY
MIL_DEPRECATED(M_DISP_THREAD_PRIORITY, 1000)
#define M_DISP_INTERPOLATION_MODE                     M_INTERPOLATION_MODE
MIL_DEPRECATED(M_DISP_INTERPOLATION_MODE, 1000)
#define M_DISP_HOOK_OFFSET                            M_HOOK_OFFSET
MIL_DEPRECATED(M_DISP_HOOK_OFFSET, 1000)
#define M_DISP_KEY_SUPPORTED                          M_KEY_SUPPORTED
MIL_DEPRECATED(M_DISP_KEY_SUPPORTED, 1000)
#define M_DISP_WINDOW_ZOOM                            M_WINDOW_ZOOM
MIL_DEPRECATED(M_DISP_WINDOW_ZOOM, 1000)
#define M_DISP_WINDOW_RESIZE                          M_WINDOW_RESIZE
MIL_DEPRECATED(M_DISP_WINDOW_RESIZE, 1000)
#define M_DISP_WINDOW_OVERLAP                         M_WINDOW_OVERLAP
MIL_DEPRECATED(M_DISP_WINDOW_OVERLAP, 1000)
#define M_DISP_WINDOW_SCROLLBAR                       M_WINDOW_SCROLLBAR
MIL_DEPRECATED(M_DISP_WINDOW_SCROLLBAR, 1000)
#define M_DISP_WINDOW_UPDATE                          M_UPDATE
MIL_DEPRECATED(M_DISP_WINDOW_UPDATE, 1000)
#define M_DISP_WINDOW_PROTECT_AREA                    M_WINDOW_PROTECT_AREA
MIL_DEPRECATED(M_DISP_WINDOW_PROTECT_AREA, 1000)
#define M_DISP_WINDOW_TITLE_BAR                       M_WINDOW_TITLE_BAR
MIL_DEPRECATED(M_DISP_WINDOW_TITLE_BAR, 1000)
#define M_DISP_WINDOW_MENU_BAR                        M_WINDOW_MENU_BAR
MIL_DEPRECATED(M_DISP_WINDOW_MENU_BAR, 1000)
#define M_DISP_WINDOW_TITLE_BAR_CHANGE                M_WINDOW_TITLE_BAR_CHANGE
MIL_DEPRECATED(M_DISP_WINDOW_TITLE_BAR_CHANGE, 1000)
#define M_DISP_WINDOW_MENU_BAR_CHANGE                 M_WINDOW_MENU_BAR_CHANGE
MIL_DEPRECATED(M_DISP_WINDOW_MENU_BAR_CHANGE, 1000)
#define M_DISP_WINDOW_MOVE                            M_WINDOW_MOVE
MIL_DEPRECATED(M_DISP_WINDOW_MOVE, 1000)
#define M_DISP_WINDOW_SYSBUTTON                       M_WINDOW_SYSBUTTON
MIL_DEPRECATED(M_DISP_WINDOW_SYSBUTTON, 1000)
#define M_DISP_WINDOW_MINBUTTON                       M_WINDOW_MINBUTTON
MIL_DEPRECATED(M_DISP_WINDOW_MINBUTTON, 1000)
#define M_DISP_WINDOW_MAXBUTTON                       M_WINDOW_MAXBUTTON
MIL_DEPRECATED(M_DISP_WINDOW_MAXBUTTON, 1000)
#define M_DISP_WINDOW_PALETTE_NOCOLLAPSE              M_WINDOW_PALETTE_NOCOLLAPSE
MIL_DEPRECATED(M_DISP_WINDOW_PALETTE_NOCOLLAPSE, 1000)
#define M_DISP_WINDOW_UPDATE_WITH_MESSAGE             M_WINDOW_UPDATE_WITH_SEND_MESSAGE
MIL_DEPRECATED(M_DISP_WINDOW_UPDATE_WITH_MESSAGE, 1000)
#define M_DISP_WINDOW_PAINT                           M_WINDOW_PAINT
MIL_DEPRECATED(M_DISP_WINDOW_PAINT, 1000)
#define M_DISP_WINDOW_RANGE                           M_WINDOW_RANGE
MIL_DEPRECATED(M_DISP_WINDOW_RANGE, 1000)
#define M_DISP_WINDOW_HANDLE                          M_WINDOW_HANDLE
MIL_DEPRECATED(M_DISP_WINDOW_HANDLE, 1000)
#define M_DISP_WINDOW_OFFSET_X                        M_WINDOW_OFFSET_X
MIL_DEPRECATED(M_DISP_WINDOW_OFFSET_X, 1000)
#define M_DISP_WINDOW_OFFSET_Y                        M_WINDOW_OFFSET_Y
MIL_DEPRECATED(M_DISP_WINDOW_OFFSET_Y, 1000)
#define M_DISP_WINDOW_SIZE_X                          M_WINDOW_SIZE_X
MIL_DEPRECATED(M_DISP_WINDOW_SIZE_X, 1000)
#define M_DISP_WINDOW_SIZE_Y                          M_WINDOW_SIZE_Y
MIL_DEPRECATED(M_DISP_WINDOW_SIZE_Y, 1000)
#define M_DISP_WINDOW_PAN_X                           M_WINDOW_PAN_X
MIL_DEPRECATED(M_DISP_WINDOW_PAN_X, 1000)
#define M_DISP_WINDOW_PAN_Y                           M_WINDOW_PAN_Y
MIL_DEPRECATED(M_DISP_WINDOW_PAN_Y, 1000)
#define M_DISP_WINDOW_ZOOM_X                          M_WINDOW_ZOOM_X
MIL_DEPRECATED(M_DISP_WINDOW_ZOOM_X, 1000)
#define M_DISP_WINDOW_ZOOM_Y                          M_WINDOW_ZOOM_Y
MIL_DEPRECATED(M_DISP_WINDOW_ZOOM_Y, 1000)
#define M_DISP_WINDOW_TITLE_NAME                      M_WINDOW_TITLE_NAME
MIL_DEPRECATED(M_DISP_WINDOW_TITLE_NAME, 1000)
#define M_DISP_VISIBLE_OFFSET_X                       M_WINDOW_VISIBLE_OFFSET_X
MIL_DEPRECATED(M_DISP_VISIBLE_OFFSET_X, 1000)
#define M_DISP_VISIBLE_OFFSET_Y                       M_WINDOW_VISIBLE_OFFSET_Y
MIL_DEPRECATED(M_DISP_VISIBLE_OFFSET_Y, 1000)
#define M_DISP_VISIBLE_SIZE_X                         M_WINDOW_VISIBLE_SIZE_X
MIL_DEPRECATED(M_DISP_VISIBLE_SIZE_X, 1000)
#define M_DISP_VISIBLE_SIZE_Y                         M_WINDOW_VISIBLE_SIZE_Y
MIL_DEPRECATED(M_DISP_VISIBLE_SIZE_Y, 1000)
#define M_VISIBLE_OFFSET_X                            M_WINDOW_VISIBLE_OFFSET_X
MIL_DEPRECATED(M_VISIBLE_OFFSET_X, 1000)
#define M_VISIBLE_OFFSET_Y                            M_WINDOW_VISIBLE_OFFSET_Y
MIL_DEPRECATED(M_VISIBLE_OFFSET_Y, 1000)
#define M_VISIBLE_SIZE_X                              M_WINDOW_VISIBLE_SIZE_X
MIL_DEPRECATED(M_VISIBLE_SIZE_X, 1000)
#define M_VISIBLE_SIZE_Y                              M_WINDOW_VISIBLE_SIZE_Y
MIL_DEPRECATED(M_VISIBLE_SIZE_Y, 1000)
#define M_DISP_WINDOW_ACTIVE                          M_WINDOW_ACTIVE
MIL_DEPRECATED(M_DISP_WINDOW_ACTIVE, 1000)
#define M_DISP_WINDOW_ENABLE                          M_WINDOW_ENABLE
MIL_DEPRECATED(M_DISP_WINDOW_ENABLE, 1000)
#define M_DISP_PALETTE_HANDLE                         M_PALETTE_HANDLE
MIL_DEPRECATED(M_DISP_PALETTE_HANDLE, 1000)
#define M_DISP_WINDOW_THREAD_HANDLE                   M_WINDOW_THREAD_HANDLE
MIL_DEPRECATED(M_DISP_WINDOW_THREAD_HANDLE, 1000)
#define M_DISP_WINDOW_THREAD_ID                       M_WINDOW_THREAD_ID
MIL_DEPRECATED(M_DISP_WINDOW_THREAD_ID, 1000)
#define M_WINDOW_DIB_HEADER                           M_BITMAPINFO
MIL_DEPRECATED(M_WINDOW_DIB_HEADER, 1000)
#define M_WINDOW_UPDATE_WITH_SEND_MESSAGE             M_UPDATE_WITH_PAINT_MESSAGE
MIL_DEPRECATED(M_WINDOW_UPDATE_WITH_SEND_MESSAGE, 1000)
#define M_DDRAW_UNDERLAY_ID                           M_UNDERLAY_ID
MIL_DEPRECATED(M_DDRAW_UNDERLAY_ID, 1000)
#define M_DDRAW_UNDERLAY_SHOW                         M_UNDERLAY_SHOW
MIL_DEPRECATED(M_DDRAW_UNDERLAY_SHOW, 1000)
#define M_MAX_VGA_DEVICE                              M_MAX_VIDEO_DEVICE
MIL_DEPRECATED(M_MAX_VGA_DEVICE, 1000)
#define M_WINDOW_KEYBOARD_USE                         M_KEYBOARD_USE
MIL_DEPRECATED(M_WINDOW_KEYBOARD_USE, 1000)
#endif //OldDefinesSupport
 
// Display reserved area for Sys or Dev Inquire/Control
#define M_SYS_DISPLAY_START                           4501L
#define M_IS_IN_DISPLAY_SYS_RANGE(X)     (((M_STRIP_INTERMOD_BITS(X) >= M_SYS_DISPLAY_START) && ( M_STRIP_INTERMOD_BITS(X) <= M_SYS_DISPLAY_END)) || \
                                          ((M_STRIP_INTERMOD_BITS(X) >= M_SYS_DISPLAY_RANGE2_START) && (M_STRIP_INTERMOD_BITS(X) <= M_SYS_DISPLAY_RANGE2_END)))
 
#define M_MAIN_DDRAW_OBJECT                           M_SYS_DISPLAY_START+0L     //4501
#define M_DDRAW_AVAILABLE                             M_SYS_DISPLAY_START+2L     //4503
#define M_PRIMARY_SURFACE_FORMAT                      M_SYS_DISPLAY_START+9L     //4510
#define M_PRIMARY_SURFACE_SIZE_BITS                   M_SYS_DISPLAY_START+10L    //4511
#define M_PRIMARY_SURFACE_SIZE_X                      M_SYS_DISPLAY_START+11L    //4512
#define M_PRIMARY_SURFACE_SIZE_Y                      M_SYS_DISPLAY_START+12L    //4513
#define M_PRIMARY_SURFACE_PITCH_BYTE                  M_SYS_DISPLAY_START+13L    //4514
#define M_WINDOWED_DISPLAY_AVAILABLE                  M_SYS_DISPLAY_START+19L    //4520
#define M_UNDERLAY_LIVE_FORMAT_SUPPORTED              M_SYS_DISPLAY_START+26L    //4527
#define M_UNDERLAY_FORMAT_SUPPORTED                   M_SYS_DISPLAY_START+28L    //4529
#define M_UNDERLAY_SUPPORTED                          M_SYS_DISPLAY_START+29L    //4530
#define M_UNDERLAY_ZOOM_MAX                           M_SYS_DISPLAY_START+30L    //4531
#define M_UNDERLAY_ZOOM_MIN                           M_SYS_DISPLAY_START+31L    //4532
 
#define M_UNDERLAY_DOUBLE_RANGE_START                 M_SYS_DISPLAY_START+33L    //4534
#define M_UNDERLAY_DOUBLE_RANGE_END                   M_SYS_DISPLAY_START+40L    //4541
 
#define M_VENDOR_ID                                   M_SYS_DISPLAY_START+48L    //4549
#define M_DEVICE_ID                                   M_SYS_DISPLAY_START+49L    //4550
#define M_DIRECTX_USED_FOR_AUXILIARY                  M_SYS_DISPLAY_START+50L    //4551
#define M_SUPPORTED_DISPLAY_TYPE_STRING               ((M_SYS_DISPLAY_START+52L) | M_CLIENT_ENCODING)    //4553
#define M_NEED_LOCK_UNLOCK                            M_SYS_DISPLAY_START+54L    //4555
#define M_CAN_ALLOCATE_VIDEO_MEMORY                   M_SYS_DISPLAY_START+56L    //4557
#define M_SCAN_LINE_ORDERING_MODE                     M_SYS_DISPLAY_START+58L    //4559
#define M_REFRESH_RATE                                M_SYS_DISPLAY_START+59L    //4560
#define M_VIDEO_DEVICE_DESCRIPTION_STRING             ((M_SYS_DISPLAY_START+64L) | M_CLIENT_ENCODING)    //4565
#define M_SUB_SYSTEM_ID                               M_SYS_DISPLAY_START+66L    //4567
#define M_CAN_ALLOCATE_MONO8_IN_VIDEO_MEMORY          M_SYS_DISPLAY_START+75L    //4576
#define M_D3D_AVAILABLE                               M_SYS_DISPLAY_START+77L    //4578
#define M_MAIN_D3D9_OBJECT                            M_SYS_DISPLAY_START+78L    //4579
#define M_PART_OF_DESKTOP                             M_SYS_DISPLAY_START+79L    //4580
#if (MIL_COMPILE_VERSION < MIL_COMPILE_TRUNK_VERSION)
#endif
#define M_DISPLAY_TYPE_SUPPORTED                      M_SYS_DISPLAY_START+88L    //4589
#if (MIL_COMPILE_VERSION < MIL_COMPILE_TRUNK_VERSION)
#endif
#define M_CAN_ALLOCATE_CONTIGUOUS_VIDEO_MEMORY        M_SYS_DISPLAY_START+94L    //4595
#define M_REVISION                                    M_SYS_DISPLAY_START+95L    //4596
 
#define M_SYS_BUFFER_HANDLER_START                    M_SYS_DISPLAY_START+96L       // 4597
#define M_REGISTER_EXTERN_BUFFER_API_MODULE           M_SYS_BUFFER_HANDLER_START+0L // 4598
#define M_UNREGISTER_EXTERN_BUFFER_API_MODULE         M_SYS_BUFFER_HANDLER_START+1L // 4599
#define M_SYS_BUFFER_HANDLER_END                      M_SYS_DISPLAY_START+99L       // 4600
#define M_IS_IN_BUFFER_HANDLER_SYS_RANGE(X)           ((M_STRIP_INTERMOD_BITS(X) >= M_SYS_BUFFER_HANDLER_START) && (M_STRIP_INTERMOD_BITS(X) <= M_SYS_BUFFER_HANDLER_END))
#define M_SYS_DISPLAY_END                             4600L
 
#define M_COMPRESSION_TYPE                            5045L //M_REMOTE_DISPLAY_CONTROL // already defined in mil.h
#define M_GRAB_BUFFERS                                5095L // internal use only
#define M_GRAB_BUFFERS_NO_LOCK                        5096L // internal use only
#define M_NUMBER_OF_GRAB_IN_PROGRESS                  5097L
 
#define M_APP_DIRECTX_RANGE_START                    (M_APP_INQUIRE_SYS_START+300L)
 
// Value reserved for AppInquire/AppControl to the hardware manager (300 to 374)
#define M_SYSTEM_ASSOCIATED_TO_DX_OBJECT             (M_APP_DIRECTX_RANGE_START+2L)      // 302
#define M_DIRECTX_VERSION                            (M_APP_DIRECTX_RANGE_START+3L)      // 303
#define M_IS_GPU_AVAILABLE                           (M_APP_DIRECTX_RANGE_START+7L)      // 307
#define M_DUAL_HEAD                                  (M_APP_DIRECTX_RANGE_START+20L)     // 320
#define M_XORG_ACCELERATION                          (M_APP_DIRECTX_RANGE_START+21L)     // 321
#define M_NB_OF_VIDEO_DEVICE                         (M_APP_DIRECTX_RANGE_START+22L)     // 322
#define M_NB_OF_VGA_DEVICE                           M_NB_OF_VIDEO_DEVICE
#define M_VGA_SYSTEM_FROM_PHYSICAL_ADDRESS           (M_APP_DIRECTX_RANGE_START+23L)     // 323
#define M_USE_UNDERLAY_IN_ALL_DISPLAY                (M_APP_DIRECTX_RANGE_START+24L)     // 324
#define M_USE_DDRAW_UNDERLAY                         M_USE_UNDERLAY_IN_ALL_DISPLAY
#define M_USE_UNDERLAY                               (M_APP_DIRECTX_RANGE_START+25L)     // 325 //This define is used as an AppControl/Inquire *AND* a DispControl/Inquire //M_LOCAL_DISPLAY_CONTROL
#define M_USE_DDRAW_UNDERLAY_SURFACE                 M_USE_UNDERLAY                      // This control is used in both directX and display dll (but use internally only for display DLL)
#if (MIL_COMPILE_VERSION < MIL_COMPILE_TRUNK_VERSION)
#endif
#define M_NB_OF_DESKTOP_VGA_DEVICE                   (M_APP_DIRECTX_RANGE_START+29L)     // 329
#define M_CURRENT_DIRECTX_VERSION                    (M_APP_DIRECTX_RANGE_START+31L)     // 331
#define M_NB_OF_GRAPHIC_ADAPTER                      (M_APP_DIRECTX_RANGE_START+32L)     // 332
#define M_GPU_NO_TEARING_AVAILABLE                   (M_APP_DIRECTX_RANGE_START+34L)     // 334
#define M_NB_OF_PCI_VIDEO_DEVICE                     (M_APP_DIRECTX_RANGE_START+38L)     // 338
#define M_FIRST_VIDEO_DEVICE_ON_DESKTOP              (M_APP_DIRECTX_RANGE_START+40L)     // 340
#define M_CONFIG_CHANGE_THREAD_PRIORITY              (M_APP_DIRECTX_RANGE_START+41L)     // 341
#define M_GPU_BILINEAR_SUPPORTED                     (M_APP_DIRECTX_RANGE_START+42L)     // 342
#define M_ENUM_PCI_VIDDEV_MEMORY_RANGE               (M_APP_DIRECTX_RANGE_START+43L)     // 343 
#define M_GENERATE_CAPS_FILE                         (M_APP_DIRECTX_RANGE_START+45L)     // 345
#define M_CAN_ALLOC_NON_PAGED_IN_VIDEO_MEMORY        (M_APP_DIRECTX_RANGE_START+46L)     // 346
//#define                                            (M_APP_DIRECTX_RANGE_START+48L)     // 348
#define M_DESKTOP_FORMAT                             (M_APP_DIRECTX_RANGE_START+49L)     // 349
#define M_DESKTOP_SIZE_BIT                           (M_APP_DIRECTX_RANGE_START+50L)     // 350
#define M_IS_ONE_DISPLAY_8_BITS                      (M_APP_DIRECTX_RANGE_START+51L)     // 351
#define M_IS_ONE_DISPLAY_15_BITS                     (M_APP_DIRECTX_RANGE_START+52L)     // 352
#define M_IS_ONE_DISPLAY_16_BITS                     (M_APP_DIRECTX_RANGE_START+53L)     // 353
#define M_IS_ONE_DISPLAY_24_BITS                     (M_APP_DIRECTX_RANGE_START+54L)     // 354
#define M_IS_ONE_DISPLAY_32_BITS                     (M_APP_DIRECTX_RANGE_START+55L)     // 355
#define M_APP_DIRECTX_RANGE_END                      (M_APP_DIRECTX_RANGE_START+74L)
 
// Display reserved area for AppInquire/Control
/*Reserve values between M_APP_DISPLAY_START and M_APP_DISPLAY_END*/
#define M_APP_DISPLAY_START                          (M_APP_INQUIRE_SYS_START+375L)
// General purpose AppInquire/AppControl for MilDisplay (375 to 450)
#define M_APP_GENERAL_DISPLAY_START                  (M_APP_DISPLAY_START)             // 375
#define M_CAN_ALLOC_MTX0                             (M_APP_GENERAL_DISPLAY_START+0L)  // 375
#define M_DISPLAY_NUMBER_ALLOCATED                   (M_APP_GENERAL_DISPLAY_START+3L)  // 378
#define M_DEFAULT_3BITS_3BANDS_DISP_BUFFER_FORMAT    (M_APP_GENERAL_DISPLAY_START+4L)  // 379
 
#if (M_MIL_USE_UNICODE && !M_MIL_UNICODE_API && (!defined(M_COMPILING_MILDLL) || !M_COMPILING_MILDLL)) //Within ASCII client apps
   #define M_TRACE_INFORMATION                        M_TRACE_ASCII_INFORMATION
#else //Inside MIL and in Backward
   #define M_TRACE_INFORMATION                       (M_APP_GENERAL_DISPLAY_START+6L)  // 381
#endif
 
#define M_SHOW_COUNTER_IN_TITLE                      (M_APP_GENERAL_DISPLAY_START+8L)  // 383
#define M_KILL_SCHEME                                (M_APP_GENERAL_DISPLAY_START+10L) // 385
#define M_DISP_BUFFER_NUMBER_ALLOCATED               (M_APP_GENERAL_DISPLAY_START+11L) // 386
#define M_READY_TO_BE_FREED                          (M_APP_GENERAL_DISPLAY_START+12L) // 387
#define M_USER_TRACE_TEXT                            (M_APP_GENERAL_DISPLAY_START+15L) // 390
#define M_USER_TRACE_VALUE                           (M_APP_GENERAL_DISPLAY_START+16L) // 391
#define M_RESUSCITATE_SCHEME                         (M_APP_GENERAL_DISPLAY_START+17L) // 392
#define M_NB_EXTERN_BUFFER_API_MODULE                (M_APP_GENERAL_DISPLAY_START+18L) // 393
#define M_WANT_TO_HANDLE_AUXILIARY_UPDATE            (M_APP_GENERAL_DISPLAY_START+19L) // 394
#define M_TRACE_ASCII_INFORMATION                    (M_APP_GENERAL_DISPLAY_START+22L) // 397
#define M_DESKTOP_COMPOSITION                        (M_APP_GENERAL_DISPLAY_START+24L) // 399
#define M_EXCLUSIVE_ON_LAST_MONITOR                  (M_APP_GENERAL_DISPLAY_START+27L) // 402
#define M_MILDISPLAY_DLL_IN_DEBUG_MODE               (M_APP_GENERAL_DISPLAY_START+28L) // 403
 
// End of reserved value for display
#define M_APP_DISPLAY_END                            (M_APP_INQUIRE_SYS_START+450L)
 
#define M_IS_IN_DIRECTX_APP_RANGE(X)                 (((M_STRIP_INTERMOD_BITS(X) >= M_APP_DIRECTX_RANGE_START) && (M_STRIP_INTERMOD_BITS(X) <= M_APP_DIRECTX_RANGE_END))   || \
                                                      M_IS_IN_DIRECTX_APP_DX_HANDLER_RANGE(X) || \
                                                      M_IS_IN_VGA_DEVICE_SYSTEM_RANGE(X))
 
#define M_IS_IN_DISPLAY_APP_RANGE(X)                 (((M_STRIP_INTERMOD_BITS(X) >= M_APP_DISPLAY_START) && (M_STRIP_INTERMOD_BITS(X) <= M_APP_DISPLAY_END))         || \
                                                      M_IS_IN_APP_SCREEN_MANAGER_RANGE(X))
 
#define M_DISP_INQUIRE_SIZEOF_DOUBLE_START            6600L
// Inquire value with a size of double, must be in that range : 6600-6699
//#define                                             (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+0L)  // 6600L //M_LOCAL_DISPLAY_CONTROL
#define M_SCALE_X                                     (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+1L)  // 6601L //M_LOCAL_DISPLAY_CONTROL
#define M_SCALE_Y                                     (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+2L)  // 6602L //M_LOCAL_DISPLAY_CONTROL
#define M_PAN_OFFSET_X                                (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+3L)  // 6603L //M_LOCAL_DISPLAY_CONTROL
#define M_PAN_OFFSET_Y                                (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+4L)  // 6604L //M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_FACTOR_X                               (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+5L)  // 6605L //M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_FACTOR_Y                               (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+6L)  // 6606L //M_LOCAL_DISPLAY_CONTROL
#define M_REAL_ZOOM_FACTOR_X                          (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+7L)  // 6607L //M_LOCAL_DISPLAY_CONTROL
#define M_REAL_ZOOM_FACTOR_Y                          (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+8L)  // 6608L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_MAXIMUM_ZOOM_FACTOR                  (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+9L)  // 6609L //M_LOCAL_DISPLAY_CONTROL // obsolete
#define M_WINDOW_MINIMUM_ZOOM_FACTOR                  (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+10L) // 6610L //M_LOCAL_DISPLAY_CONTROL // obsolete
#define M_WINDOW_ZOOM_FACTOR_X                        (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+11L) // 6611L //M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ZOOM_FACTOR_Y                        (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+12L) // 6612L //M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_RATE                                 (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+13L) // 6613L //M_LOCAL_DISPLAY_CONTROL
#define M_REAL_OFFSET_X                               (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+14L) // 6614L //M_LOCAL_DISPLAY_CONTROL
#define M_REAL_OFFSET_Y                               (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+15L) // 6615L //M_LOCAL_DISPLAY_CONTROL
#define M_INTERACTIVE_ZOOM_MAX                        (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+16L) // 6616L //M_LOCAL_DISPLAY_CONTROL
#define M_INTERACTIVE_ZOOM_MIN                        (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+17L) // 6617L //M_LOCAL_DISPLAY_CONTROL
#define M_INTERACTIVE_ZOOM_INCREMENT                  (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+18L) // 6618L //M_LOCAL_DISPLAY_CONTROL
#define M_INTERACTIVE_ZOOM                            (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+19L) // 6619L //M_LOCAL_DISPLAY_CONTROL
#define M_DISP_INQUIRE_SIZEOF_DOUBLE_END              (M_DISP_INQUIRE_SIZEOF_DOUBLE_START+99L) // 6699L
 
 
#define M_DISP_INQUIRE_SIZEOF_INT64_START             6700L
// Inquire value with a size of 64 bit, must be in that range : 6700-6799
#define M_EXTENDED_DISPLAY_SCHEME                     (M_DISP_INQUIRE_SIZEOF_INT64_START+0L) //(6700) M_LOCAL_DISPLAY_CONTROL
 
#define M_EXTENDED_INIT_FLAG                          6705L //M_LOCAL_DISPLAY_CONTROL
#define M_DISP_INQUIRE_SIZEOF_INT64_END               6799L
 
#define M_DISP_INQUIRE_UNKNOWN_SIZEOF_START           6800L
// Inquire value with unknown size of,
//            and require a user array, must be in that range : 6800-6899
#define M_DISP_INQUIRE_UNKNOWN_SIZEOF_END             6899L
 
 
#define M_DISP_INQUIRE_STRING_START                   7700L
   #define M_FORMAT                                (7701L|M_CLIENT_ENCODING) //M_LOCAL_DISPLAY_CONTROL  // Already defined in mil.h, considered as a shared control
   #define M_TITLE                                 (7702L|M_CLIENT_ENCODING) //M_LOCAL_DISPLAY_CONTROL
 
//      M_FORMAT+M_STRING_SIZE                       (M_STRING_SIZE + M_FORMAT)  //M_LOCAL_DISPLAY_CONTROL
//      M_TITLE+M_STRING_SIZE                        (M_STRING_SIZE + M_TITLE)  //M_LOCAL_DISPLAY_CONTROL
 
#if OldDefinesSupport
   #define M_FORMAT_SIZE                              (M_STRING_SIZE + M_FORMAT) // Already defined in mil.h, considered as a shared control
   #define M_TITLE_SIZE                               (M_STRING_SIZE + M_TITLE)  
   #define M_WINDOW_TITLE_NAME_SIZE                   M_TITLE_SIZE
   #define M_WINDOW_TITLE_NAME                     M_TITLE
// MIL_DEPRECATED(M_FORMAT_SIZE, 1040)
// MIL_DEPRECATED(M_TITLE_SIZE, 1040)
MIL_DEPRECATED(M_WINDOW_TITLE_NAME_SIZE, 1040)
MIL_DEPRECATED(M_WINDOW_TITLE_NAME, 1040)
#endif
 
#define M_DISP_INQUIRE_STRING_END                     7799L
 
 
 
 
// MdispControl(M_REMAP_TYPE)
#define M_MULTI_BYTES                                    1L
#define M_AUTO_SCALE                                     2L
#define M_BIT_SHIFT                                      3L
#define M_LOGARITHMIC                                    4L
#define M_PIXEL_VALUES                                   5L
#define M_OPAQUE                                         0x01000058L
#define M_TRANSPARENT                                    0x01000059L
 
// MdispControl(M_WINDOW_SHOW)
#define M_FORCE_DISABLE                                  2L
 
// Mouse cursor types
//
// MdispControl(Id, M_SET_USER_CURSOR+[M_CURSOR_XYZ], (MIL_INT)hCursor)
//
#define M_CURSOR_NULL                  0L    // To hide the cursor
#define M_CURSOR_DEFAULT               1L    // Standard arrow
#define M_OS_CURSOR_ARROW              2L    // Standard arrow
#define M_OS_CURSOR_IBEAM              3L    // I-beam
#define M_OS_CURSOR_WAIT               4L    // Hourglass
#define M_OS_CURSOR_CROSS              5L    // Crosshair
#define M_OS_CURSOR_UPARROW            6L    // Vertical arrow
#define M_OS_CURSOR_SIZENWSE           7L    // Double-pointed arrow pointing northwest and southeast
#define M_OS_CURSOR_SIZENESW           8L    // Double-pointed arrow pointing northeast and southwest
#define M_OS_CURSOR_SIZEWE             9L    // Double-pointed arrow pointing west and east
#define M_OS_CURSOR_SIZENS             10L   // Double-pointed arrow pointing north and south
#define M_OS_CURSOR_SIZEALL            11L   // Four-pointed arrow pointing north, south, east, and west
#define M_OS_CURSOR_NO                 12L   // Slashed circle
#define M_OS_CURSOR_HAND               13L   // Pointing Hand
#define M_OS_CURSOR_APPSTARTING        14L   // Standard arrow and small hourglass
#define M_OS_CURSOR_HELP               15L   // Arrow and question mark
#define M_CURSOR_HAND_OPEN             16L   // Open hand
#define M_CURSOR_HAND_CLOSED           17L   // Closed hand
#define M_GRA_CURSOR_SIZENWSE          18L   // Double-pointed arrow pointing northwest and southeast 
#define M_GRA_CURSOR_SIZENESW          19L   // Double-pointed arrow pointing northeast and southwest
#define M_GRA_CURSOR_SIZEWE            20L   // Double-pointed arrow pointing west and east
#define M_GRA_CURSOR_SIZENS            21L   // Double-pointed arrow pointing north and south
#define M_GRA_CURSOR_SIZEALL           22L   // Four-pointed arrow pointing north, south, east, and west
#define M_GRA_CURSOR_SIZEALL_POINTER   23L   // Arrow and four-pointed arrow pointing north, south, east, and west
#define M_GRA_CURSOR_NO                24L   // Slashed circle
#define M_GRA_CURSOR_ROTATE            25L   // Circular arrow
#define M_GRA_CURSOR_IN_ROTATION       26L   // Quadruple circular arrows
#define M_GRA_CURSOR_HAND              27L   // Pointing Hand
#define M_CURSOR_COLOR_PICKER          28L   // Pointing Hand
// =======================================
#define M_NUMBER_OF_CURSORS            29L// *** Must be updated when adding new cursor ***
#define M_MAX_CURSOR                   63L
#define M_CURSOR_TYPE_MASK             0x0000003F
 
// 7872 to 7935
#define M_SET_USER_CURSOR                             7872L //(0x00001EC0) M_LOCAL_DISPLAY_CONTROL
/*Reserve next values      from                       (M_SET_USER_CURSOR+M_CURSOR_NULL)      //7872L */ //M_LOCAL_DISPLAY_CONTROL
/*                         to                         (M_SET_USER_CURSOR+M_MAX_CURSOR)       //7935L */ //M_LOCAL_DISPLAY_CONTROL
 
//Pseudo-ID to apply a control on all displays
#define M_ALL_DISPLAYS                                (M_PSEUDO_ID+3)
 
// Value to represent all scheme id. Used with M_RESUSCITATE_SCHEME control
#define M_ALL_DISPLAY_SCHEMES                         (0x80000000)
 
//Second range that is reserved for Display Sys or Dev Inquire/Control
/* Reserve next values     from    M_SYS_DISPLAY_RANGE2_START    8500L 
                           to      M_SYS_DISPLAY_RANGE2_END      8699L */
#define M_SYS_DISPLAY_RANGE2_START                    8500L 
#define M_D3D_SUPPORTED_NO_TEARING_MODE               (M_SYS_DISPLAY_RANGE2_START+1L)    //8501L
#define M_NO_TEARING_DEVICE                           (M_SYS_DISPLAY_RANGE2_START+5L)    //8505L
#define M_NO_TEARING_ACTIVE_DEVICE                    (M_SYS_DISPLAY_RANGE2_START+6L)    //8506L
#define M_VGA_INFO_DISPLAY_RECT                       (M_SYS_DISPLAY_RANGE2_START+7L)    //8507L    // 
#define M_VGA_INFO_DISPLAY_DEVICE_NAME                (M_SYS_DISPLAY_RANGE2_START+10L)   //8510L    // 
#define M_CURRENT_MONITOR_RECT                        (M_SYS_DISPLAY_RANGE2_START+12L)   //8512L
#define M_CURRENT_MONITOR_WORK_RECT                   (M_SYS_DISPLAY_RANGE2_START+13L)   //8513L
#define M_VIDEO_DEVICE_SYNC                           (M_SYS_DISPLAY_RANGE2_START+14L)   //8514L
#define M_MAIN_D3D10_OBJECT                           (M_SYS_DISPLAY_RANGE2_START+19L)   //8519L
#define M_IS_VIRTUAL_DEVICE                           (M_SYS_DISPLAY_RANGE2_START+37L)   //8537L
#define M_MAIN_D3D11_OBJECT                           (M_SYS_DISPLAY_RANGE2_START+39L)   //8539L
#define M_D3D_NO_TEARING                              (M_SYS_DISPLAY_RANGE2_START+43L)   //8543L
#define M_ALLOW_NONPAGED_BUFFERS_IN_VIDEO_MEMORY      (M_SYS_DISPLAY_RANGE2_START+48L)   //8548L
#define M_IS_VIDEO_DEVICE_ALIVE                       (M_SYS_DISPLAY_RANGE2_START+51L)   //8551L
#define M_VGA_DEVICE_SYSTEM_START                     (M_SYS_DISPLAY_RANGE2_START+100L)  //8600L
#define M_VGA_DEVICE_SYSTEM                           (M_VGA_DEVICE_SYSTEM_START+0L)     //8600L
//8600L to 8663L reserved for M_VGA_DEVICE_SYSTEM
#define M_VGA_DEVICE_SYSTEM_END                       (M_VGA_DEVICE_SYSTEM_START+M_MAX_VIDEO_DEVICE-1) //8663L
#define M_SYS_DISPLAY_RANGE2_END                      (M_SYS_DISPLAY_RANGE2_START+199L)  //8699L
 
// This range is an App inquire range not a DEV range
#define M_IS_IN_VGA_DEVICE_SYSTEM_RANGE(X)            ((M_STRIP_INTERMOD_BITS(X)>=M_VGA_DEVICE_SYSTEM_START) && \
                                                       (M_STRIP_INTERMOD_BITS(X)<=M_VGA_DEVICE_SYSTEM_END)     )  // 8600 to 8663
 
 
#define M_DIB_HANDLE                                  (M_BUF_DISPLAY_START+31L) // 9031
 
//Reserved values for Screen Manager 9200 - 9399
#define M_SCREEN_MANAGER_START                        9200L
//Reserved APP control/inquire values for Screen Manager 9200 - 9249
#define M_APP_SCREEN_MANAGER_START                    (M_SCREEN_MANAGER_START+0L)      // 9200L
#define M_PHYS_SHOW_TASKBAR                           (M_APP_SCREEN_MANAGER_START+0L)  // 9200L
#define M_BEST_DESKTOP_MONITOR                        (M_APP_SCREEN_MANAGER_START+1L)  // 9201L
#define M_BEST_DESKTOP_RECT                           (M_APP_SCREEN_MANAGER_START+2L)  // 9202L
#define M_BEST_EXCLUSIVE_MONITOR                      (M_APP_SCREEN_MANAGER_START+3L)  // 9203L
#define M_MULTI_MONITOR                               (M_APP_SCREEN_MANAGER_START+4L)  // 9204L
#define M_MONITORS_RECTS_LIST                         (M_APP_SCREEN_MANAGER_START+5L)  // 9205L
#define M_NEW_EXTERNAL_DISPLAY_ID                     (M_APP_SCREEN_MANAGER_START+6L)  // 9206L
#define M_DELETE_EXTERNAL_DISPLAY_ID                  (M_APP_SCREEN_MANAGER_START+7L)  // 9207L
#define M_SCREEN_ID_FROM_SYSTEM_ID                    (M_APP_SCREEN_MANAGER_START+8L)  // 9208L
#define M_SCREEN_MANAGER_SYSTEM_ID                    (M_APP_SCREEN_MANAGER_START+9L)  // 9209L
#define M_EXTERNAL_DISPLAY_NUMBER                     (M_APP_SCREEN_MANAGER_START+10L) // 9210L
#define M_NB_MONITORS_AVAILABLE                       (M_APP_SCREEN_MANAGER_START+13L) // 9213L
#define M_APP_SCREEN_MANAGER_END                      (M_APP_SCREEN_MANAGER_START+49L) // 9249L
 
//Reserved DEV control/inquire values for dev Screen Manager 9250 - 9299
#define M_DEV_SCREEN_MANAGER_START                    (M_APP_SCREEN_MANAGER_END+1L)    // 9250L
#define M_DESKTOP_RESOLUTION                          (M_DEV_SCREEN_MANAGER_START+0L)  // 9250L
#define M_TEST_DESKTOP_RESOLUTION                     (M_DEV_SCREEN_MANAGER_START+1L)  // 9251L
#define M_DESKTOP_DEVICE_NAME                         (M_DEV_SCREEN_MANAGER_START+2L)  // 9252L
//#define M_DESKTOP_DEVICE_NAME_SIZE                    (M_STRING_SIZE + M_DESKTOP_DEVICE_NAME)
#define M_EXCLUSIVE_MONITOR_RANK                      (M_DEV_SCREEN_MANAGER_START+4L)  // 9254L
#define M_IS_EXCLUSIVE_MONITOR_AVAILABLE              (M_DEV_SCREEN_MANAGER_START+5L)  // 9255L
#define M_EXTERN_DISPLAY_AVAILABLE                    (M_DEV_SCREEN_MANAGER_START+6L)  // 9256L
#define M_EXTERN_DISPLAY_SUPPORTED_FORMAT             (M_DEV_SCREEN_MANAGER_START+9L)  // 9259L
#define M_EXTERN_UNDERLAY_AVAILABLE                   (M_DEV_SCREEN_MANAGER_START+10L) // 9260L
#define M_IS_EXTERNAL_DISPLAY                         (M_DEV_SCREEN_MANAGER_START+14L) // 9264L
#define M_CURRENT_SCREEN_RECT                         (M_DEV_SCREEN_MANAGER_START+15L) // 9265L (M_CURRENT_MONITOR_RECT)
#define M_CURRENT_SCREEN_WORK_RECT                    (M_DEV_SCREEN_MANAGER_START+16L) // 9266L (M_CURRENT_MONITOR_WORK_RECT)
#define M_IS_SCREEN_FORBIDDEN                         (M_DEV_SCREEN_MANAGER_START+18L) // 9268L
#define M_IS_SCREEN_RECT_USABLE                       (M_DEV_SCREEN_MANAGER_START+19L) // 9269L
#define M_DEV_SCREEN_MANAGER_END                      (M_DEV_SCREEN_MANAGER_START+49L) // 9299L
//Reserved but unused values for Screen Manager 9300 - 9374
#define M_SCREEN_MANAGER_END                          9374L
 
#define M_IS_IN_SCREEN_MANAGER_RANGE(X)               (((M_STRIP_INTERMOD_BITS(X)>=M_SCREEN_MANAGER_START) && (M_STRIP_INTERMOD_BITS(X)<=M_SCREEN_MANAGER_END)))                     // 9200 - 9399
#define M_IS_IN_APP_SCREEN_MANAGER_RANGE(X)           (((M_STRIP_INTERMOD_BITS(X)>=M_APP_SCREEN_MANAGER_START) && (M_STRIP_INTERMOD_BITS(X)<=M_APP_SCREEN_MANAGER_END)))             // 9200 - 9249
#define M_IS_IN_DEV_SCREEN_MANAGER_RANGE(X)           (((M_STRIP_INTERMOD_BITS(X)>=M_DEV_SCREEN_MANAGER_START) && (M_STRIP_INTERMOD_BITS(X)<=M_DEV_SCREEN_MANAGER_END)))             // 9250 - 9299
 
//Reserved APP control/inquire values for Directx and Display 9400 - 9499
#define M_DUAL_DISP_DX_APP_RANGE_START                9400L
#define M_RESET_CRTC                                  (M_DUAL_DISP_DX_APP_RANGE_START+0L)  // 9400L
#define M_NEW_VIDEO_DEVICE_ADDED                      (M_DUAL_DISP_DX_APP_RANGE_START+6L)  // 9406L
#define M_VIDEO_DEVICE_REMOVED                        (M_DUAL_DISP_DX_APP_RANGE_START+7L)  // 9407L
#define M_DUAL_DISP_DX_APP_RANGE_END                  (M_DUAL_DISP_DX_APP_RANGE_START+99L) // 9499L
#define M_IS_IN_DUAL_DISP_DX_APP_RANGE(X)             (((M_STRIP_INTERMOD_BITS(X) >= M_DUAL_DISP_DX_APP_RANGE_START) && (M_STRIP_INTERMOD_BITS(X) <= M_DUAL_DISP_DX_APP_RANGE_END)))     // 9400 - 9499
 
#define M_DIRECTX_APP_DX_HANDLER_START                9500L
#define M_DIRECTX_CAN_CREATE_OVER_HOST_MEMORY         (M_DIRECTX_APP_DX_HANDLER_START+0L)  // 9500L
#define M_MTX0_SERVICE                                (M_DIRECTX_APP_DX_HANDLER_START+1L)  // 9501L
#define M_DIRECTX_VIDEO_BUFFER_MAPPABLE               (M_DIRECTX_APP_DX_HANDLER_START+2L)  // 9502L
#define M_KEEP_POLLING_ON_MODE_CHANGED                (M_DIRECTX_APP_DX_HANDLER_START+3L)  // 9503L
#define M_DIRECTX_APP_DX_HANDLER_END                  (M_DIRECTX_APP_DX_HANDLER_START+49L) // 9549L
#define M_IS_IN_DIRECTX_APP_DX_HANDLER_RANGE(X)       ((M_STRIP_INTERMOD_BITS(X) >= M_DIRECTX_APP_DX_HANDLER_START) && (M_STRIP_INTERMOD_BITS(X) <= M_DIRECTX_APP_DX_HANDLER_END))       // 9500 - 9549
 
//Reserved values for DispControl
#define M_DISP_CONTROL_START                          10000L
#define M_NO_TEARING_SKIP_MODE                        (M_DISP_CONTROL_START+1L) //(10001) M_LOCAL_DISPLAY_CONTROL
#define M_NO_SKIP                                     (M_DISP_CONTROL_START+2L) //(10002) M_LOCAL_DISPLAY_CONTROL
#define M_SKIP_OLDEST                                 (M_DISP_CONTROL_START+3L) //(10003) M_LOCAL_DISPLAY_CONTROL
#define M_SKIP_NEWEST                                 (M_DISP_CONTROL_START+4L) //(10004) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_SCHEME                              (M_DISP_CONTROL_START+5L) //(10005) M_LOCAL_DISPLAY_CONTROL
#define M_OVERLAY_CLEAR                               (M_DISP_CONTROL_START+6L) //(10006) M_REMOTE_DISPLAY_CONTROL
#define M_FORCE_MONO_OVR                              (M_DISP_CONTROL_START+7L) //(10007) M_REMOTE_DISPLAY_CONTROL
#define M_D3D_VSYNC_INTERVAL_ONE                      (M_DISP_CONTROL_START+8L) //(10008) M_LOCAL_DISPLAY_CONTROL
#define M_D3D_VSYNC_INTERVAL_TWO                      (M_DISP_CONTROL_START+9L) //(10009) M_LOCAL_DISPLAY_CONTROL
#define M_D3D_VSYNC_INTERVAL_THREE                    (M_DISP_CONTROL_START+10L) //(10010) M_LOCAL_DISPLAY_CONTROL
#define M_D3D_VSYNC_INTERVAL_FOUR                     (M_DISP_CONTROL_START+11L) //(10011) M_LOCAL_DISPLAY_CONTROL
#define M_DIRECTX_VIDEO_DEVICE_ID                     (M_DISP_CONTROL_START+12L) //(10012) M_LOCAL_DISPLAY_CONTROL
#define M_VGA_INDEX                                   M_DIRECTX_VIDEO_DEVICE_ID
#define M_GDI_COMPATIBLE_OVERLAY                      (M_DISP_CONTROL_START+13L) //(10013) M_REMOTE_DISPLAY_CONTROL
#define M_HSCROLL_VISIBLE                             (M_DISP_CONTROL_START+14L) //(10014) M_LOCAL_DISPLAY_CONTROL
#define M_VSCROLL_VISIBLE                             (M_DISP_CONTROL_START+15L) //(10015) M_LOCAL_DISPLAY_CONTROL
#define M_SRC_UPDATE_REGION_OFFSET_X                  (M_DISP_CONTROL_START+16L) //(10016) M_LOCAL_DISPLAY_CONTROL
#define M_SRC_UPDATE_REGION_OFFSET_Y                  (M_DISP_CONTROL_START+17L) //(10017) M_LOCAL_DISPLAY_CONTROL
#define M_NEAREST_COLOR                               (M_DISP_CONTROL_START+18L) //(10018) M_LOCAL_DISPLAY_CONTROL
#define M_CENTER_DISPLAY                              (M_DISP_CONTROL_START+19L) //(10019) M_LOCAL_DISPLAY_CONTROL
#define M_USE_RESERVED_COLOR                          (M_DISP_CONTROL_START+20L) //(10020) M_LOCAL_DISPLAY_CONTROL
#define M_LOWER_RESERVED_COLOR_START                  (M_DISP_CONTROL_START+21L) //(10021) M_LOCAL_DISPLAY_CONTROL
#define M_LOWER_RESERVED_COLOR_END                    (M_DISP_CONTROL_START+22L) //(10022) M_LOCAL_DISPLAY_CONTROL
#define M_HIGHER_RESERVED_COLOR_START                 (M_DISP_CONTROL_START+23L) //(10023) M_LOCAL_DISPLAY_CONTROL
#define M_HIGHER_RESERVED_COLOR_END                   (M_DISP_CONTROL_START+24L) //(10024) M_LOCAL_DISPLAY_CONTROL
#define M_PREFERED_DISPLAY_FORMAT                     (M_DISP_CONTROL_START+25L) //(10025) M_LOCAL_DISPLAY_CONTROL
#define M_SAVE_INTERNAL_BUFFERS                       (M_DISP_CONTROL_START+26L) //(10026) M_LOCAL_DISPLAY_CONTROL
#define M_HARDWARE_LUT_AVAILABLE                      (M_DISP_CONTROL_START+27L) //(10027) M_LOCAL_DISPLAY_CONTROL
#define M_IS_IN_MEGA_BUFFER_MODE                      (M_DISP_CONTROL_START+28L) //(10028) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_THREAD_PRIORITY                      (M_DISP_CONTROL_START+29L) //(10029) M_LOCAL_DISPLAY_CONTROL
#define M_VISIBLE_BUFFER_RECT_SIZE_X                  (M_DISP_CONTROL_START+30L) //(10030) M_LOCAL_DISPLAY_CONTROL
#define M_VISIBLE_BUFFER_RECT_SIZE_Y                  (M_DISP_CONTROL_START+31L) //(10031) M_LOCAL_DISPLAY_CONTROL
#define M_NO_TEARING_ACTIVE                           (M_DISP_CONTROL_START+32L) //(10032) M_LOCAL_DISPLAY_CONTROL
#define M_FORCE_DISPLAY_RESOLUTION                    (M_DISP_CONTROL_START+33L) //(10033) M_LOCAL_DISPLAY_CONTROL
#define M_USE_INTERNAL_BUFFER_FOR_GRAB_CONTINUOUS     (M_DISP_CONTROL_START+34L) //(10034) M_REMOTE_DISPLAY_CONTROL
#define M_NO_TEARING_MODE                             (M_DISP_CONTROL_START+35L) //(10035) M_REMOTE_DISPLAY_CONTROL
#define M_UNDERLAY_UPDATE_STATE                       (M_DISP_CONTROL_START+36L) //(10036) M_LOCAL_DISPLAY_CONTROL
#define M_USE_PRIMARY_SURFACE                         (M_DISP_CONTROL_START+37L) //(10037) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_RATE_DIVIDER                         (M_DISP_CONTROL_START+38L) //(10038) M_REMOTE_DISPLAY_CONTROL
#define M_STOP_UPDATE                                 (M_DISP_CONTROL_START+39L) //(10039) M_REMOTE_DISPLAY_CONTROL
#define M_CAN_DO_HARDWARE_COMPOSITION                 (M_DISP_CONTROL_START+40L) //(10040) M_REMOTE_DISPLAY_CONTROL
#define M_MIN_MAX_OF_SELECTED_BUFFER_CHANGED          (M_DISP_CONTROL_START+41L) //(10041) M_REMOTE_DISPLAY_CONTROL
#define M_UPDATE_MEGA_BUFFER_CHILD_POSITION           (M_DISP_CONTROL_START+42L) //(10042) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_DX_VERSION_ON_TITLEBAR               (M_DISP_CONTROL_START+43L) //(10043) M_LOCAL_DISPLAY_CONTROL
#define M_DEBUG_COLOR                                 (M_DISP_CONTROL_START+44L) //(10044) M_LOCAL_DISPLAY_CONTROL
#define M_LOSING_VIDEO_MEMORY                         (M_DISP_CONTROL_START+45L) //(10045) M_LOCAL_DISPLAY_CONTROL
#define M_VIDEO_MEMORY_RESTORED                       (M_DISP_CONTROL_START+46L) //(10046) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_SYNC                                (M_DISP_CONTROL_START+47L) //(10047) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_USAGE                               (M_DISP_CONTROL_START+48L) //(10048) M_REMOTE_DISPLAY_CONTROL
#define M_GENERATE_PENDING_HOOKS                      (M_DISP_CONTROL_START+49L) //(10049) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_GRAB_TYPE                            (M_DISP_CONTROL_START+50L) //(10050) M_REMOTE_DISPLAY_CONTROL
#define M_GRAB_TYPE_ON_TITLE_BAR                      (M_DISP_CONTROL_START+51L) //(10051) M_LOCAL_DISPLAY_CONTROL
#define M_VIDEO_DEVICE_WAS_MODIFIED                   (M_DISP_CONTROL_START+52L) //(10052) M_LOCAL_DISPLAY_CONTROL
#define M_PAR_ENCODER_WAIT_FIELD                      (M_DISP_CONTROL_START+53L) //(10053) M_LOCAL_DISPLAY_CONTROL
#define M_USE_YCBCR_RANGE                             (M_DISP_CONTROL_START+54L) //(10054) M_REMOTE_DISPLAY_CONTROL
#define M_RESTRICT_CURSOR                             (M_DISP_CONTROL_START+55L) //(10055) M_LOCAL_DISPLAY_CONTROL
#define M_RESTRICT_FOCUS                              (M_DISP_CONTROL_START+56L) //(10056) M_LOCAL_DISPLAY_CONTROL
#define M_SHOW_TASKBAR                                (M_DISP_CONTROL_START+57L) //(10057) M_LOCAL_DISPLAY_CONTROL
#define M_EXCLUSIVE_MODE                              (M_DISP_CONTROL_START+58L) //(10058) M_LOCAL_DISPLAY_CONTROL
#define M_PRE_DISPSELECT_OPERATIONS                   (M_DISP_CONTROL_START+59L) //(10059) M_LOCAL_DISPLAY_CONTROL
#define M_POST_DISPSELECT_OPERATIONS                  (M_DISP_CONTROL_START+60L) //(10060) M_LOCAL_DISPLAY_CONTROL
#define M_PRE_DISPDESELECT_OPERATIONS                 (M_DISP_CONTROL_START+61L) //(10061) M_LOCAL_DISPLAY_CONTROL
#define M_POST_DISPDESELECT_OPERATIONS                (M_DISP_CONTROL_START+62L) //(10062) M_LOCAL_DISPLAY_CONTROL
#define M_PROPAGATE_CALIBRATION_TO_OVERLAY            (M_DISP_CONTROL_START+63L) //(10063) M_REMOTE_DISPLAY_CONTROL
#define M_SAVE_BASIC_SELECTED_BUFFER                  (M_DISP_CONTROL_START+64L) //(10064) M_LOCAL_DISPLAY_CONTROL
#define M_ACQUIRE_WINDOW_FOCUS                        (M_DISP_CONTROL_START+65L) //(10065) M_LOCAL_DISPLAY_CONTROL
#define M_BACKGROUND_COLOR                            (M_DISP_CONTROL_START+66L) //(10066) M_LOCAL_DISPLAY_CONTROL
#define M_BASIC_DISPLAY_SYSTEM_ID                     (M_DISP_CONTROL_START+67L) //(10067) M_LOCAL_DISPLAY_CONTROL
#define M_VGA_DEVICE_SYSTEM_ID                        (M_DISP_CONTROL_START+100L) //(10100) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_RESOLUTION                          (M_DISP_CONTROL_START+107L) //(10107) M_LOCAL_DISPLAY_CONTROL
#define M_DEFAULT_DISPLAY_RESOLUTION                  (M_DISP_CONTROL_START+108L) //(10108) M_LOCAL_DISPLAY_CONTROL
#define M_SAFE_MODE                                   (M_DISP_CONTROL_START+109L) //(10109) M_LOCAL_DISPLAY_CONTROL
#define M_USE_VIDEO_MEMORY_BUFFER                     (M_DISP_CONTROL_START+110L) //(10110) M_LOCAL_DISPLAY_CONTROL
#define M_SELECT_USER_BUFFER_DIRECTLY_ON_DISPLAY      (M_DISP_CONTROL_START+111L) //(10111) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_FORMAT                              (M_DISP_CONTROL_START+112L) //(10112) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_FORMAT_SUPPORTED                    (M_DISP_CONTROL_START+113L) //(10113) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_TYPE                                (M_DISP_CONTROL_START+114L) //(10114) M_LOCAL_DISPLAY_CONTROL
#define M_EXTENDED_DISPLAY_TYPE                       (M_DISP_CONTROL_START+115L) //(10115) M_LOCAL_DISPLAY_CONTROL
#define M_USE_UNDERLAY_IN_DUALHEAD                    (M_DISP_CONTROL_START+116L) //(10116) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_SCHEME_ON_TITLEBAR                  (M_DISP_CONTROL_START+117L) //(10117) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_SYNCHRONIZATION                      (M_DISP_CONTROL_START+118L) //(10118) M_LOCAL_DISPLAY_CONTROL
#define M_UNDERLAY_ALWAYS_ON_TOP                      (M_DISP_CONTROL_START+119L) //(10119) M_LOCAL_DISPLAY_CONTROL
#define M_ALLOW_GRA_MESSAGE_WITH_NO_UPDATE            (M_DISP_CONTROL_START+120L) //(10120) M_LOCAL_DISPLAY_CONTROL
#define M_USER_WINDOW_HANDLE                          (M_DISP_CONTROL_START+121L) //(10121) M_LOCAL_DISPLAY_CONTROL
#define M_USE_HOST_OVERLAY                            (M_DISP_CONTROL_START+122L) //(10122) M_REMOTE_DISPLAY_CONTROL
#define M_SELECTED_LINK_COPY                          (M_DISP_CONTROL_START+123L) //(10123) M_LOCAL_DISPLAY_CONTROL
#define M_HOOK_ON_ERROR                               (M_DISP_CONTROL_START+124L) //(10124) M_LOCAL_DISPLAY_CONTROL
#define M_USE_LIVE_UNDERLAY                           (M_DISP_CONTROL_START+125L) //(10125) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_WITH_PAINT_MESSAGE                   (M_DISP_CONTROL_START+126L) //(10126) M_LOCAL_DISPLAY_CONTROL
 
#define M_DISPLAY_SCHEME_COUNT                        (M_DISP_CONTROL_START+131L) //(10131) M_LOCAL_DISPLAY_CONTROL
#define M_USE_DOUBLE_BUFFERING_SCHEME                 (M_DISP_CONTROL_START+132L) //(10132) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_STATE                                (M_DISP_CONTROL_START+133L) //(10133) M_LOCAL_DISPLAY_CONTROL
#define M_FORCE_DISPLAY_SCHEME_CHANGE                 (M_DISP_CONTROL_START+134L) //(10134) M_LOCAL_DISPLAY_CONTROL
#define M_UNDERLAY_SHOW                               (M_DISP_CONTROL_START+137L) //(10137) M_LOCAL_DISPLAY_CONTROL
#define M_MINIMUM_DISPLAY_SIZE_X                      (M_DISP_CONTROL_START+138L) //(10138) M_LOCAL_DISPLAY_CONTROL
#define M_MINIMUM_DISPLAY_SIZE_Y                      (M_DISP_CONTROL_START+139L) //(10139) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_SHOW                                 (M_DISP_CONTROL_START+140L) //(10140) M_LOCAL_DISPLAY_CONTROL
#define M_BUFFER_FORMAT_TO_SELECT_DIRECTLY            (M_DISP_CONTROL_START+141L) //(10141) M_LOCAL_DISPLAY_CONTROL
 
#define M_USE_USER_BUFFER_FOR_UNDERLAY                (M_DISP_CONTROL_START+144L) //(10144) M_REMOTE_DISPLAY_CONTROL
#define M_USE_CREATE_OVER_USER_BUFFER                 (M_DISP_CONTROL_START+145L) //(10145) M_REMOTE_DISPLAY_CONTROL
#define M_USE_FLICKER_FREE_BUFFER                     (M_DISP_CONTROL_START+146L) //(10146) M_REMOTE_DISPLAY_CONTROL
#define M_USE_CONVERT_TO_COLOR_DIB                    (M_DISP_CONTROL_START+147L) //(10147) M_REMOTE_DISPLAY_CONTROL
#define M_USE_SOFTWARE_COMPOSITION                    (M_DISP_CONTROL_START+148L) //(10148) M_REMOTE_DISPLAY_CONTROL
#define M_USE_HOST_ENTRY_BUFFER                       (M_DISP_CONTROL_START+149L) //(10149) M_REMOTE_DISPLAY_CONTROL
#define M_DISPLAY_SCHEME_BASE                         (M_DISP_CONTROL_START+150L) //(10150) M_REMOTE_DISPLAY_CONTROL
 
#define M_QT_MODE                                     (M_DISP_CONTROL_START+151L) //(10151) M_LOCAL_DISPLAY_CONTROL
#define M_GTK_MODE                                    (M_DISP_CONTROL_START+152L) //(10152) M_LOCAL_DISPLAY_CONTROL
#define M_USE_DISPLAY_SIZE_BUFFER                     (M_DISP_CONTROL_START+153L) //(10153) M_LOCAL_DISPLAY_CONTROL
 
#define M_USE_MEGA_BUFFER                             (M_DISP_CONTROL_START+154L) //(10154) M_REMOTE_DISPLAY_CONTROL
#define M_UPDATE_TRANSFER_TYPE                        (M_DISP_CONTROL_START+155L) //(10155) M_REMOTE_DISPLAY_CONTROL
 
#define M_DEFAULT_MEGA_DISPLAY_SIZE_X                 (M_DISP_CONTROL_START+158L) //(10158) M_LOCAL_DISPLAY_CONTROL
#define M_DEFAULT_MEGA_DISPLAY_SIZE_Y                 (M_DISP_CONTROL_START+159L) //(10159) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_INITIAL_SIZE_X                       (M_DISP_CONTROL_START+160L) //(10160) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_INITIAL_SIZE_Y                       (M_DISP_CONTROL_START+161L) //(10161) M_LOCAL_DISPLAY_CONTROL
#define M_PREFER_COLOR_DISPLAY_RESOLUTION             (M_DISP_CONTROL_START+162L) //(10162) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_ON_OVERLAY_MODIFIED_INTERNAL         (M_DISP_CONTROL_START+164L) //(10164) M_REMOTE_DISPLAY_CONTROL
#define M_USE_GIGACOLOR_SCHEME                        (M_DISP_CONTROL_START+165L) //(10165) M_LOCAL_DISPLAY_CONTROL
#define M_ZOOMED_DESTINATION_OUT_DESKTOP              (M_DISP_CONTROL_START+168L) //(10168) M_LOCAL_DISPLAY_CONTROL
#define M_VALIDATE_DISPLAY                            (M_DISP_CONTROL_START+169L) //(10169) M_LOCAL_DISPLAY_CONTROL
#define M_HOOKS                                       (M_DISP_CONTROL_START+170L) //(10170) M_LOCAL_DISPLAY_CONTROL
#define M_HOOK_ON_OUT_OF_MONITOR                      (M_DISP_CONTROL_START+171L) //(10171) M_LOCAL_DISPLAY_CONTROL
#define M_HOOK_ON_ZOOM_CHANGE                         (M_DISP_CONTROL_START+172L) //(10172) M_LOCAL_DISPLAY_CONTROL
#define M_HOOK_ON_MB_CHILD_RESIZE                     (M_DISP_CONTROL_START+173L) //(10173) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLACE_WINDOWS                            (M_DISP_CONTROL_START+174L) //(10174) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_TITLE                                (M_DISP_CONTROL_START+175L) //(10175) M_LOCAL_DISPLAY_CONTROL
#define M_RESET_WINDOW_SIZE                           (M_DISP_CONTROL_START+176L) //(10176) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_CURRENTLY_MAXIMIZED                  (M_DISP_CONTROL_START+177L) //(10177) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_CURRENTLY_MINIMIZED                  (M_DISP_CONTROL_START+178L) //(10178) M_LOCAL_DISPLAY_CONTROL
#define M_MEGA_BUFFER_LOW_LIMIT                       (M_DISP_CONTROL_START+179L) //(10179) M_LOCAL_DISPLAY_CONTROL
#define M_MAXIMUM_VISIBLE_DEST_SIZE_X                 (M_DISP_CONTROL_START+180L) //(10180) M_LOCAL_DISPLAY_CONTROL
#define M_MAXIMUM_VISIBLE_DEST_SIZE_Y                 (M_DISP_CONTROL_START+181L) //(10181) M_LOCAL_DISPLAY_CONTROL
#define M_DO_SELECT                                   (M_DISP_CONTROL_START+182L) //(10182) M_LOCAL_DISPLAY_CONTROL
#define M_RESTRICT_WINDOWS                            (M_DISP_CONTROL_START+183L) //(10183) M_LOCAL_DISPLAY_CONTROL
#define M_NUMBER_OF_BASIC_IMPLEMENTATIONS             (M_DISP_CONTROL_START+185L) //(10185) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_CURRENTLY_VISIBLE                    (M_DISP_CONTROL_START+187L) //(10187) M_LOCAL_DISPLAY_CONTROL
#define M_VIRTUAL_GRAB                                (M_DISP_CONTROL_START+188L) //(10188) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_RESIZE_ON_ZOOM                       (M_DISP_CONTROL_START+189L) //(10189) M_LOCAL_DISPLAY_CONTROL
#define M_USE_NO_VIDEO_OVERLAY_BUFFER                 (M_DISP_CONTROL_START+191L) //(10191) M_LOCAL_DISPLAY_CONTROL
#define M_USE_YUV16_UYVY_SCHEME                       (M_DISP_CONTROL_START+192L) //(10192_
#define M_FILL_COLOR                                  (M_DISP_CONTROL_START+193L) //(10193) M_LOCAL_DISPLAY_CONTROL
#define M_CURRENTLY_CENTERED_X                        (M_DISP_CONTROL_START+194L) //(10194) M_LOCAL_DISPLAY_CONTROL
#define M_XDISPLAY                                    (M_DISP_CONTROL_START+195L) //(10195)
#define M_WINDOW_TASKBAR                              (M_DISP_CONTROL_START+196L) //(10196) M_LOCAL_DISPLAY_CONTROL
#define M_SHOW_WINDOW_IN_TASKBAR                      M_WINDOW_TASKBAR
#define M_WINDOW_TASKBAR_ON_FULLSCREEN                (M_DISP_CONTROL_START+197L) //(10197) M_LOCAL_DISPLAY_CONTROL
#define M_CURRENTLY_CENTERED_Y                        (M_DISP_CONTROL_START+198L) //(10198) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_CURSOR                               (M_DISP_CONTROL_START+199L) //(10199) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ROI_BUTTONS                          (M_DISP_CONTROL_START+200L) //(10200) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_AUTO_RESET                              (M_DISP_CONTROL_START+201L) //(10201) M_LOCAL_DISPLAY_CONTROL
#define M_COPY_TO_CLIPBOARD                           (M_DISP_CONTROL_START+202L) //(10202) M_LOCAL_DISPLAY_CONTROL
#define M_SAVE_TO_FILE                                ((M_DISP_CONTROL_START+203L)|M_CLIENT_ENCODING)  // M_LOCAL_DISPLAY_CONTROL
#define M_COPY_DISPLAY_TO_ID                          (M_DISP_CONTROL_START+204L) //(10204) M_LOCAL_DISPLAY_CONTROL
#define M_SAVE_TO_BUFFER                              M_COPY_DISPLAY_TO_ID
#define M_COPY_TO_BUFFER                              M_COPY_DISPLAY_TO_ID
#define M_UPDATE_RATE_MAX                             (M_DISP_CONTROL_START+205L) //(10205) M_REMOTE_DISPLAY_CONTROL
#define M_ASYNC_UPDATE                                (M_DISP_CONTROL_START+206L) //(10206) M_REMOTE_DISPLAY_CONTROL
#define M_MEGA_BUFFER_LOW_LIMIT_X                     (M_DISP_CONTROL_START+207L) //(10207) M_LOCAL_DISPLAY_CONTROL
#define M_COMMON_DIRECTX_VIDEO_DEVICE_ID              (M_DISP_CONTROL_START+208L) //(10208) M_LOCAL_DISPLAY_CONTROL
#define M_COMMON_VGA_INDEX                            M_COMMON_DIRECTX_VIDEO_DEVICE_ID
#define M_FAST_SELECT                                 (M_DISP_CONTROL_START+209L) //(10209) M_REMOTE_DISPLAY_CONTROL
#define M_FAST_UNDERLAY_MODE                          (M_DISP_CONTROL_START+210L) //(10210) M_LOCAL_DISPLAY_CONTROL
#define M_CUSTOM_SCHEME_CHANGING                      (M_DISP_CONTROL_START+211L) //(10211) M_REMOTE_DISPLAY_CONTROL
#define M_DISPLAY_FRAME_RATE_ON_TITLEBAR              (M_DISP_CONTROL_START+212L) //(10212) M_LOCAL_DISPLAY_CONTROL
#define M_SCREEN_RECT                                 (M_DISP_CONTROL_START+213L) //(10213) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_ZOOM_FACTOR_ON_TITLEBAR             (M_DISP_CONTROL_START+214L) //(10214) M_LOCAL_DISPLAY_CONTROL
#define M_COPY_BUFFER_LAYER_TO_CLIPBOARD              (M_DISP_CONTROL_START+215L) //(10215) M_LOCAL_DISPLAY_CONTROL
#define M_COPY_BUFFER_LAYER_TO_ID                     (M_DISP_CONTROL_START+216L) //(10216) M_LOCAL_DISPLAY_CONTROL
#define M_COPY_ANNOTATIONS_LAYER_TO_CLIPBOARD         (M_DISP_CONTROL_START+217L) //(10217) M_LOCAL_DISPLAY_CONTROL
#define M_COPY_ANNOTATIONS_LAYER_TO_ID                (M_DISP_CONTROL_START+218L) //(10218) M_LOCAL_DISPLAY_CONTROL
#define M_COPY_TO_BUFFER_WITH_SCALE                   (M_DISP_CONTROL_START+219L) //(10219) M_LOCAL_DISPLAY_CONTROL
 
#define M_ROI_DISPCONTROL_START                       (M_DISP_CONTROL_START+500L) // 10500
#define M_ROI_DEFINE                                  (M_DISP_CONTROL_START+500L) //(10500) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_SHOW                                    (M_DISP_CONTROL_START+501L) //(10501) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_SUPPORT                                 (M_DISP_CONTROL_START+502L) //(10502) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_LINE_COLOR                              (M_DISP_CONTROL_START+503L) //(10503) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_RESET                                   (M_DISP_CONTROL_START+504L) //(10504) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_RECT_DISPLAY                            (M_DISP_CONTROL_START+505L) //(10505) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_RECT_BUFFER                             (M_DISP_CONTROL_START+506L) //(10506) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_SET_POINT                               (M_DISP_CONTROL_START+507L) //(10507) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_LINE_WIDTH                              (M_DISP_CONTROL_START+508L) //(10508) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_HANDLE_COLOR                            (M_DISP_CONTROL_START+509L) //(10509) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_HANDLE_SIZE                             (M_DISP_CONTROL_START+510L) //(10510) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_DISPLAY_OFFSET_X                        (M_DISP_CONTROL_START+511L) //(10511) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_DISPLAY_OFFSET_Y                        (M_DISP_CONTROL_START+512L) //(10512) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_DISPLAY_SIZE_X                          (M_DISP_CONTROL_START+513L) //(10513) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_DISPLAY_SIZE_Y                          (M_DISP_CONTROL_START+514L) //(10514) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_BUFFER_OFFSET_X                         (M_DISP_CONTROL_START+515L) //(10515) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_BUFFER_OFFSET_Y                         (M_DISP_CONTROL_START+516L) //(10516) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_BUFFER_SIZE_X                           (M_DISP_CONTROL_START+517L) //(10517) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_BUFFER_SIZE_Y                           (M_DISP_CONTROL_START+518L) //(10518) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_SHAPE                                   (M_DISP_CONTROL_START+519L) //(10519) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_MINIMUM_SIZE                            (M_DISP_CONTROL_START+520L) //(10521) M_LOCAL_DISPLAY_CONTROL
#define M_ROI_DISPCONTROL_END                         (M_DISP_CONTROL_START+550L) // 10550
#define M_IS_IN_ROI_DISPLAY_RANGE(X)                  ((M_ORIGINAL_DISPLAY_CONTROL(M_STRIP_INTERMOD_BITS(X))>=M_ROI_DISPCONTROL_START) && (M_ORIGINAL_DISPLAY_CONTROL(M_STRIP_INTERMOD_BITS(X))<=M_ROI_DISPCONTROL_END))
#define M_CONTEXTUAL_MENU                             (M_DISP_CONTROL_START+551L) //(10551) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_IS_INTERNALLY_ALLOCATED             (M_DISP_CONTROL_START+553L) //(10553) M_LOCAL_DISPLAY_CONTROL
#define M_HOOK_ON_DEVICE_LOSING                       (M_DISP_CONTROL_START+554L) //(10554) 
#define M_WINDOW_ANNOTATIONS                          (M_DISP_CONTROL_START+556L) //(10556) M_LOCAL_DISPLAY_CONTROL  
#define M_SCALE_DISPLAY                               (M_DISP_CONTROL_START+557L) //(10557) M_LOCAL_DISPLAY_CONTROL
#define M_WINDOW_ANNOTATIONS_STATE                    (M_DISP_CONTROL_START+558L) //(10558) M_LOCAL_DISPLAY_CONTROL
#define M_NO_TEARING_ALLOWED                          (M_DISP_CONTROL_START+559L) //(10559) M_LOCAL_DISPLAY_CONTROL
#define M_ZOOM_ACCURACY                               (M_DISP_CONTROL_START+560L) //(10560) M_LOCAL_DISPLAY_CONTROL
#define M_USE_EXTERNAL_NO_TEARING                     (M_DISP_CONTROL_START+561L) //(10561) M_LOCAL_DISPLAY_CONTROL
#define M_ASSOCIATED_GRAPHIC_LIST_ID                  (M_DISP_CONTROL_START+562L) //(10562) M_LOCAL_DISPLAY_CONTROL
#define M_DISPLAY_GRAPHIC_LIST                        M_ASSOCIATED_GRAPHIC_LIST_ID
#define M_ZOOM_PAN_HANDLED_BY_SCHEME                  (M_DISP_CONTROL_START+563L) //(10563) M_LOCAL_DISPLAY_CONTROL
#define M_UPDATE_GRAPHIC_LIST                         (M_DISP_CONTROL_START+564L) //(10564) M_LOCAL_DISPLAY_CONTROL
#define M_MEGA_BUFFER_SIZE_X_TO_USE                   (M_DISP_CONTROL_START+565L) //(10565) M_LOCAL_DISPLAY_CONTROL
#define M_MEGA_BUFFER_SIZE_Y_TO_USE                   (M_DISP_CONTROL_START+566L) //(10566) M_LOCAL_DISPLAY_CONTROL
#define M_GRAPHIC_LIST_INTERACTIVE                    (M_DISP_CONTROL_START+567L) //(10567) M_LOCAL_DISPLAY_CONTROL
#define M_USE_GDI_TO_APPLY_LUT                        (M_DISP_CONTROL_START+568L) //(10568) M_LOCAL_DISPLAY_CONTROL //available for customers
#define M_GRAPHIC_LIST_BOUNDING_RECT                  (M_DISP_CONTROL_START+570L) //(10570) M_LOCAL_DISPLAY_CONTROL
#define M_DMIL_REALLOC_SURFACE                        (M_DISP_CONTROL_START+571L) //(10571) M_REMOTE_DISPLAY_CONTROL
#define M_ASSOCIATED_REMOTE_DISPLAY_ID                (M_DISP_CONTROL_START+572L) //(10572) M_LOCAL_DISPLAY_CONTROL
#define M_FILL_DISPLAY                                (M_DISP_CONTROL_START+574L) //(10574) M_LOCAL_DISPLAY_CONTROL
#define M_GRAPHIC_LIST_LIMITED_TO_BUFFER_AREA         (M_DISP_CONTROL_START+575L) //(10575) M_LOCAL_DISPLAY_CONTROL
#define M_GRAPHIC_LIST_RELATIVE_TO_ANCESTOR           (M_DISP_CONTROL_START+576L) //(10576) M_LOCAL_DISPLAY_CONTROL
 
 
#define M_DISP_CONTROL_DIRECT_STOP                    11000L
 
#define M_APP_BH_DISPLAY_START                        12000L
#define M_DESCRIPTOR_LOCK                             (M_APP_BH_DISPLAY_START+00L)     // 12000
#define M_APP_BH_DISPLAY_END                          12099L
#define M_IS_IN_DISPLAY_APP_BH_RANGE(X)               ((M_STRIP_INTERMOD_BITS(X) >= M_APP_BH_DISPLAY_START) && (M_STRIP_INTERMOD_BITS(X) <= M_APP_BH_DISPLAY_END))
 
 
#define M_SCALE                                       0x00008010L
#define M_CUSTOM_DISPLAY                              M_IN_BUFFER_DISPLAY
#define M_CUSTOM_DISPLAY_BUFFER                       M_DISPLAY_SURFACE
#define M_RENDER_BUFFER_ID                            M_DISPLAY_SURFACE
#define M_WPF_DISPLAY_BUFFER_ID                       M_DISPLAY_SURFACE
 
/************************************************************************/
/* MdispControl() / MdispInquire() Values                               */
/************************************************************************/
 
#define M_FULL_SIZE                      0L
#define M_NORMAL_SIZE                    1L
 
#define M_BENCHMARK_IN_DEBUG_ON          0x00000001L
#define M_BENCHMARK_IN_DEBUG_OFF         0
#define M_BENCHMARK_IN_DEBUG_TRACE       0x00000002L
#define M_BENCHMARK_IN_DEBUG_NOTRACE     0
#define M_BENCHMARK_IN_DEBUG_ALLSIZE     0x00000004L
#define M_BENCHMARK_IN_DEBUG_CSTSIZE     0
 
#define M_DISPLAY_SCAN_LINE_START        0x00000000L
#define M_DISPLAY_SCAN_LINE_END                   -1
 
#define M_SLAVE                          0L
#define M_MASTER                         1L
 
#define M_TRANSPARENT_COLOR              0x01000060L //M_LOCAL_DISPLAY_CONTROL
#define M_TEST_UPDATE_IF_ASYNCHRONOUS    0x00000010L
 
//For M_NO_TEARING dispControl
#define M_ENABLE                                      -9997L
#define M_FULL_UPDATE                                 -9998L
#define M_DISABLE                                     -9999L
#define M_DEFAULT                                     0x10000000L
#define M_GRAB_CONTINUOUS_ONLY                        0x00100000L
#define M_BASIC                                       0x00200000L
#define M_ADVANCED                                    0x00400000L
#define M_NO_SKIP                                     (M_DISP_CONTROL_START+2L) //(10002) M_LOCAL_DISPLAY_CONTROL
#define M_SKIP_OLDEST                                 (M_DISP_CONTROL_START+3L) //(10003) M_LOCAL_DISPLAY_CONTROL
#define M_SKIP_NEWEST                                 (M_DISP_CONTROL_START+4L) //(10004) 
#define M_NO_TEARING_SKIP_MODE_MASK                   0x000FFFFFL //M_LOCAL_DISPLAY_CONTROL
#define M_NO_TEARING_MODE_MASK                        0x00F00000L
#define M_CURRENT_RESOLUTION                          MIL_TEXT("M_CURRENT_RESOLUTION")
#define M_RESET_RESOLUTION                            MIL_TEXT("M_RESET_RESOLUTION")
#define M_RESTORE_RESOLUTION                          MIL_TEXT("M_RESTORE_RESOLUTION")
 
#define BIN_TO_MIL(b)                                 ( ((M_DEFAULT==b)||(M_ENABLE==b)||(M_DISABLE==b)||(M_FULL_UPDATE==b))?(b):(b?M_ENABLE:M_DISABLE) )
 
#define M_ON_SELECT                      1L
#define M_ON_DESELECT                    2L
 
// For the control M_GRAB_BUFFERS
#define M_DRIVER_ERROR_PENDING                        0x40000000L
 
// For the M_STOP_UPDATE control/inquire
#define M_WHEN_MINIMIZED                              0x00000001L
#define M_WHEN_NOT_VISIBLE                            0x00000002L
 
// For M_VIDEO_DEVICE_LOST control/inquire
#define M_SIGNAL_OFF                                  0x00000000L
#define M_CLEAR                                       0x00000001L
#define M_NO_CLEAR                                    0x00000002L
 
// For M_ROI_DEFINE control
#define M_START                                       0x00000002L
#define M_STOP                                        0x00000004L
#define M_RESET                                       9L
#define M_RECTANGULAR                                 0x00000010L
 
 
// For M_VGA_INDEX inquire
#define M_INVALID_VGA_INDEX                           M_INVALID
 
// Used for DispMessage when comming from HTML Client
#define M_HTML5_MESSAGE                               0x01000000L
 
// For M_CAN_ALLOCATE_CONTIGUOUS_VIDEO_MEMORY inquire
#define M_CONTIGUOUS                    0x00000001L
#define M_START_IN_VIDEO_MEMORY         0x00000010L
#define M_END_IN_VIDEO_MEMORY           0x00000020L
#define M_START_IN_HOST_MEMORY          0x00000040L
#define M_END_IN_HOST_MEMORY            0x00000080L
#define M_NO_PHYSICAL_ADDRESS           0x00000100L
#define M_IN_VIDEO_MEMORY(x)               ((x&M_START_IN_VIDEO_MEMORY) && (x&M_END_IN_VIDEO_MEMORY))
#define M_IN_HOST_MEMORY(x)                ((x&M_START_IN_HOST_MEMORY) && (x&M_END_IN_HOST_MEMORY))
#define M_CONTIGUOUS_AND_IN_VIDEO_MEMORY(x)((x&M_CONTIGUOUS) && M_IN_VIDEO_MEMORY(x))
 
// For M_ZOOM_ACCURACY
#define M_MEDIUM                                2L
#define M_HIGH                                  3L
 
 
// For M_INTERACTIVE_MODE
//M_LEGACY
#define M_MOUSE_DRIVEN                          0x00000002L
 
// For M_UPDATE_RATE_MAX
#define M_SCREEN_REFRESH_RATE                   0x01000000L
#define M_MAX_REFRESH_RATE                      0x02000000L
 
 
/************************************************************************/
/* MdispLut()                                                           */
#define M_PSEUDO                                       M_PSEUDO_LUT //(M_PSEUDO_ID+2)
 
 
/************************************************************************/
/* MdispHook()                                                          */
/************************************************************************/
#define M_ASYNC_HOOK                  0x08000000L
 
/* Defines for hook to modification to bitmap and window */
#define M_NOT_MODIFIED                0 /* No changed at all              */
#define M_MODIFIED_LUT                1 /* Disp lut is changed            */
#define M_MODIFIED_DIB                2 /* Disp buffer data is changed    */
#define M_MODIFIED_ZOOM               3 /* Disp is zoomed                 */
#define M_MODIFIED_PAN                4 /* Disp is panned                 */
#define M_MODIFIED_DIB_CREATION       5 /* Disp receives a new buffer ID  */
#define M_MODIFIED_DIB_DESTRUCTION    6 /* Disp receives a buffer ID 0    */
#define M_MODIFIED_WINDOW_CREATION    7 /* Wnd is created                 */
#define M_MODIFIED_WINDOW_DESTRUCTION 8 /* Wnd is destroyed               */
#define M_MODIFIED_WINDOW_LOCATION    9 /* Wnd size is changed            */
#define M_MODIFIED_WINDOW_OVERLAP    11 /* Wnd overlap is changed         */
#define M_MODIFIED_WINDOW_ICONIZED   12 /* Wnd is changed to iconic state */
#define M_MODIFIED_WINDOW_ZOOM       13 /* Wnd is zoomed                  */
#define M_MODIFIED_WINDOW_PAN        14 /* Wnd is panned                  */
#define M_MODIFIED_WINDOW_MENU       15 /* Wnd menu pulled-down           */
#define M_MODIFIED_WINDOW_PAINT      16 /* Wnd is painted with image      */
#define M_MODIFIED_WINDOW_ACTIVE     17 /* Wnd activation state changed   */
#define M_MODIFIED_WINDOW_ENABLE     18 /* Wnd enable state changed       */
#define M_MODIFIED_WINDOW_CLIP_LIST  19 /* Wnd clip list changed          */
 
/* M_MODIFIED_WINDOW_MENU modification hook defines */
#define M_MODIFIED_SYS_MENU            0x00100L
#define M_MODIFIED_APP_MENU            0x00200L
#define M_MODIFIED_USER_APP_MENU       0x10000L
#define M_MODIFIED_RESTORE_MENUITEM    0x00001L
#define M_MODIFIED_MOVE_MENUITEM       0x00002L
#define M_MODIFIED_SIZE_MENUITEM       0x00003L
#define M_MODIFIED_MINIMIZE_MENUITEM   0x00004L
#define M_MODIFIED_MAXIMIZE_MENUITEM   0x00005L
#define M_MODIFIED_CLOSE_MENUITEM      0x00006L
#define M_MODIFIED_TASKLIST_MENUITEM   0x00007L
#define M_MODIFIED_MENUBAR_MENUITEM    0x00008L
#define M_MODIFIED_TITLEOFF_MENUITEM   0x00009L
#define M_MODIFIED_ZOOMIN_MENUITEM     0x0000AL
#define M_MODIFIED_ZOOMOUT_MENUITEM    0x0000BL
#define M_MODIFIED_NOZOOM_MENUITEM     0x0000CL
 
/* M_MODIFIED_WINDOW_ACTIVE modification hook defines */
/* M_MODIFIED_WINDOW_ENABLE modification hook defines */
#define M_MODIFIED_STATE_FROM_WINDOW   0
#define M_MODIFIED_STATE_FROM_PARENT   0x00000010L
#define M_MODIFIED_OFF                 0
#define M_MODIFIED_ON                  0x00000001L
 
/* M_MODIFIED_WINDOW_CLIP_LIST modification hook defines */
/* M_MODIFIED_WINDOW_CLIP_LIST modification hook defines */
#define M_MODIFIED_ACCESS_RECTANGULAR_OFF 0
#define M_MODIFIED_ACCESS_RECTANGULAR_ON  0x00000001L
#define M_MODIFIED_ACCESS_OFF             0
#define M_MODIFIED_ACCESS_ON              0x00000002L
#define M_MODIFIED_ACCESS_COMMAND_PROMPT  0x00000004L
 
/* Type of event to hook for a display */
#define M_HOOK_AFTER                0x10000000L          /* For hook after modification      */
#define M_HOOK_BEFORE               0x20000000L          /* For hook before modification     */
#define M_LOCAL_HOOK_RANGE1_START   M_HOOK_MODIFIED_DIB  /* Start of first range of local hooks */
#define M_HOOK_MODIFIED_DIB         1L                                                 /* For buffer bitmap modification   */
#define M_HOOK_MODIFIED_WINDOW      2L                                                 /* For disp window modification     */
#define M_HOOK_MESSAGE_LOOP         4L                                                 /* For disp window modification     */
#define M_LOCAL_HOOK_RANGE1_END     M_HOOK_MESSAGE_LOOP  /* End of first range of local hooks */
#define M_FRAME_START               9L                   /* For disp frame start             */
#define M_PRE_GRAB_BUFFER_CHANGE    10L                  /* For hook before the display scheme change when it imply the change of the grab buffers */
#define M_POST_GRAB_BUFFER_CHANGE   11L                  /* For hook after the display scheme change when it imply the change of the grab buffers  */
#define M_PRE_SCHEME_CHANGE         M_PRE_GRAB_BUFFER_CHANGE   /* Old Name */
#define M_POST_SCHEME_CHANGE        M_POST_GRAB_BUFFER_CHANGE  /* Old Name */
#define M_LOCAL_HOOK_RANGE2_START   (M_BASIC_DISPLAY_EVENT & ~M_ASYNC_HOOK)   /* Start of second range of local hooks */
#define M_BASIC_DISPLAY_EVENT       (12L | M_ASYNC_HOOK)                               /* For hook when disp window is displayed in another VGA,or between, or unsupported zoom or more (new MIL8) */
#define M_SURFACE_LOST              (14L | M_ASYNC_HOOK)                               /* For hook when DirectX surface is lost (new event for MIL8.0)     */
#define M_LOCAL_HOOK_RANGE2_END     (M_SURFACE_LOST & ~M_ASYNC_HOOK) /* End of second range of local hooks */
#define M_INVALIDATE_DISPLAY        (16L | M_ASYNC_HOOK) /* For hook when a full internal update is needed (new event for MIL8.0)     */
#define M_LOCAL_HOOK_RANGE3_START   M_WINDOW_CLOSE_BEFORE   /* Start of third range of local hooks */
#define M_WINDOW_CLOSE_BEFORE       17L
#define M_WINDOW_CLOSE_AFTER        18L
#define M_WINDOW_MINIMIZE_BEFORE    19L
#define M_WINDOW_MINIMIZE_AFTER     20L
#define M_WINDOW_MAXIMIZE_BEFORE    21L
#define M_WINDOW_MAXIMIZE_AFTER     22L
#define M_WINDOW_RESTORE_BEFORE     23L
#define M_WINDOW_RESTORE_AFTER      24L
#define M_WINDOW_POSCHANGE_BEFORE   25L
#define M_WINDOW_POSCHANGE_AFTER    26L
#define M_WINDOW_ZOOM_BEFORE        27L
#define M_WINDOW_ZOOM_AFTER         28L
#define M_WINDOW_SCROLL_BEFORE      29L
#define M_WINDOW_SCROLL_AFTER       30L
#define M_WINDOW_PAINT_BEFORE       31L
#define M_WINDOW_PAINT_AFTER        32L
#define M_WINDOW_ACTIVE_BEFORE      33L
#define M_WINDOW_ACTIVE_AFTER       34L
#define M_WINDOW_ENABLE_BEFORE      35L
#define M_WINDOW_ENABLE_AFTER       36L
#define M_WINDOW_SHOW_BEFORE        37L
#define M_WINDOW_SHOW_AFTER         38L
#define M_MODIFIED_DISPLAY          39L
#define M_LOCAL_HOOK_RANGE3_END     M_MODIFIED_DISPLAY   /* End of third range of local hooks */
#define M_DISPLAY_SCHEME_CHANGED    40L
#define M_PRE_OVERLAY_ID_CHANGE     41L
#define M_POST_OVERLAY_ID_CHANGE    42L
#define M_LOCAL_HOOK_RANGE4_START   M_WINDOW_VISIBLE_CHANGE /* Start of fourth range of local hooks */
#define M_WINDOW_VISIBLE_CHANGE     43L
#define M_LOCAL_HOOK_RANGE4_END     M_WINDOW_VISIBLE_CHANGE /* End of fourth range of local hooks */
#define M_PRIMARY_SURFACE_ID_CHANGED 44L
#define M_LOCAL_HOOK_RANGE5_START   M_DEVICE_LOSING   /* Start of fifth range of local hooks */
#define M_DEVICE_LOSING             45L
#define M_DEVICE_LOST               46L
#define M_DEVICE_RESTORING          47L
#define M_DEVICE_RESTORED           48L
#define M_ROI_CHANGE                49L
#define M_ROI_CHANGE_END            50L
#define M_ROI_HANDLE_RELEASE        51L
#define M_VIDEO_DEVICE_MODIFIED_BEFORE 52L
#define M_VIDEO_DEVICE_MODIFIED_AFTER  53L
#define M_DEVICE_LEAVEVT            54L
#define M_DEVICE_ENTERVT            55L
#define M_MOUSE_LEFT_BUTTON_DOWN    56L
#define M_MOUSE_RIGHT_BUTTON_DOWN   57L
#define M_MOUSE_LEFT_BUTTON_UP      58L
#define M_MOUSE_RIGHT_BUTTON_UP     59L
#define M_ANNOTATIONS_DRAW          60L
#define M_LOCAL_HOOK_RANGE5_END     M_ANNOTATIONS_DRAW   /* End of fifth of local hooks */
#define M_WINDOW_ACTION             61L
#define M_WINDOW_RESIZED            62L
#define M_LOCAL_HOOK_RANGE6_START   M_MOUSE_MOVE /* Start of sixth range of local hooks */
#define M_MOUSE_MOVE                64L
#define M_MOUSE_WHEEL               65L
#define M_MOUSE_MIDDLE_BUTTON_DOWN  66L
#define M_MOUSE_MIDDLE_BUTTON_UP    67L
#define M_KEY_DOWN                  68L
#define M_KEY_UP                    69L
#define M_DISP_MESSAGE_ANY          70L
#define M_MOUSE_LEFT_DOUBLE_CLICK   71L
#define M_KEY_CHAR                  72L
#define M_SET_CURSOR                73L
#define M_WINDOW_SIZING             74L
#define M_CUSTOM_MESSAGE_SERVER     75L
#define M_CUSTOM_MESSAGE_CLIENT     76L
#define M_GRA_INTERACTIVE_ENABLED   77L
#define M_GRA_INTERACTIVE_DISABLED  78L
#define M_DISP_DESELECT_BEFORE      79L
#define M_DISP_DESELECT_AFTER       80L
#define M_DISP_SELECT_AFTER         81L
#define M_DISP_PAN_BEFORE           82L
#define M_DISP_PAN_AFTER            83L
#define M_UPDATE_INTERACTIVE_STATE  84L
#define M_MOUSE_LEAVE               85L
#define M_DISP_SELECT_BEFORE        86L
#define M_LOCAL_HOOK_RANGE6_END     M_SET_CURSOR   /* End of sixth of local hooks */
 
#define M_IS_LOCAL_HOOK(HookType)   (((((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) >= M_LOCAL_HOOK_RANGE1_START) &&  \
                                      (((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) <= M_LOCAL_HOOK_RANGE1_END)) ||   \
                                     ((((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) >= M_LOCAL_HOOK_RANGE2_START) &&  \
                                      (((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) <= M_LOCAL_HOOK_RANGE2_END)) ||   \
                                     ((((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) >= M_LOCAL_HOOK_RANGE3_START) &&  \
                                      (((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) <= M_LOCAL_HOOK_RANGE3_END)) ||   \
                                     ((((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) >= M_LOCAL_HOOK_RANGE4_START) &&  \
                                      (((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) <= M_LOCAL_HOOK_RANGE4_END)) ||   \
                                      ((((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) >= M_LOCAL_HOOK_RANGE5_START) &&  \
                                     ((((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) <= M_LOCAL_HOOK_RANGE5_END)) ||   \
                                     ((((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) >= M_LOCAL_HOOK_RANGE6_START) &&  \
                                      (((HookType) & ~(M_HOOK_AFTER | M_HOOK_BEFORE)) <= M_LOCAL_HOOK_RANGE6_END))))
 
//Old names
#define M_WINDOW_LBUTTONDOWN        M_MOUSE_LEFT_BUTTON_DOWN
#define M_WINDOW_RBUTTONDOWN        M_MOUSE_RIGHT_BUTTON_DOWN
#define M_WINDOW_LBUTTONUP          M_MOUSE_LEFT_BUTTON_UP
#define M_WINDOW_RBUTTONUP          M_MOUSE_RIGHT_BUTTON_UP
#define M_PRE_SCHEME_CHANGE         M_PRE_GRAB_BUFFER_CHANGE 
#define M_POST_SCHEME_CHANGE        M_POST_GRAB_BUFFER_CHANGE
 
#if OldDefinesSupport
#define M_ROI_ANCHOR_COLOR    M_ROI_HANDLE_COLOR
MIL_DEPRECATED(M_ROI_ANCHOR_COLOR, 1000)
#define M_ROI_ANCHOR_SIZE     M_ROI_HANDLE_SIZE
MIL_DEPRECATED(M_ROI_ANCHOR_SIZE, 1000)
#define M_ROI_ANCHOR_RELEASE  M_ROI_HANDLE_RELEASE
MIL_DEPRECATED(M_ROI_ANCHOR_RELEASE, 1000)
#define M_WINDOW_ROI          M_WINDOW_ROI_BUTTONS
MIL_DEPRECATED(M_WINDOW_ROI, 1000)
#endif
 
 
// Flag passed via the EventId of the hook
#define M_INVALIDATE_OVERLAY     (0x00000001)
#define M_INVALIDATE_UNDERLAY    (0x00000002)
#define M_INVALIDATE_ALL_DISPLAY (M_INVALIDATE_OVERLAY|M_INVALIDATE_UNDERLAY)
 
/************************************************************************/
/* MdispGetHookInfo() Info types                                        */
/************************************************************************/
#define M_DISPLAY                0x00200000L
#define M_MOUSE_POSITION_X       1L
#define M_MOUSE_POSITION_Y       2L
#define M_ANNOTATIONS_DC         3L
#define M_ANNOTATIONS_PIXMAP     M_ANNOTATIONS_DC // Pixmap for Linux 
#define M_MOUSE_POSITION_BUFFER_X  4L
#define M_MOUSE_POSITION_BUFFER_Y  5L
#define M_USER_FLAG                6L
#define M_COMBINATION_KEYS         7L
#define M_EVENT_VALUE              8L
#define M_MIL_KEY_VALUE            9L // OS-independent Key Code
 
// documented aliases for M_EVENT_VALUE
#define M_MOUSE_WHEEL_VALUE   M_EVENT_VALUE
#define M_KEY_VALUE           M_EVENT_VALUE  // OS-dependent Key Code
 
// aliases for some infos, for easier documentation of M_CUSTOM_MESSAGE_CLIENT/SERVER
#define M_EVENT_VALUE_1          M_MOUSE_POSITION_X
#define M_EVENT_VALUE_2          M_MOUSE_POSITION_Y
#define M_EVENT_VALUE_3          M_EVENT_VALUE
#define M_EVENT_VALUE_4          M_COMBINATION_KEYS
 
/************************************************************************/
/* MdispMessage flags                                                   */
/************************************************************************/
 
#define M_KEY_SHIFT              0x00010000
#define M_KEY_CTRL               0x00020000
#define M_KEY_ALT                0x00040000
#define M_MOUSE_LEFT_BUTTON      0x00080000
#define M_MOUSE_MIDDLE_BUTTON    0x00100000
#define M_MOUSE_RIGHT_BUTTON     0x00200000
#define M_KEY_WIN                0x00400000
 
#if M_MIL_USE_WINDOWS
 
#define M_COMBINATION_KEYS_FROM_KEY_STATE()  (((GetKeyState(VK_SHIFT)&0x8000)    ?  M_KEY_SHIFT : M_NULL)   | \
                                              ((GetKeyState(VK_CONTROL)&0x8000)  ?  M_KEY_CTRL  : M_NULL)   | \
                                              ((GetKeyState(VK_MENU)&0x8000)     ?  M_KEY_ALT   : M_NULL)   | \
                                              ((GetKeyState(VK_LWIN) & 0x8000)   ?  M_KEY_WIN   : M_NULL)   | \
                                              ((GetKeyState(VK_RWIN) & 0x8000)   ?  M_KEY_WIN   : M_NULL))
 
#define M_COMBINATION_KEYS_FROM_WPARAM(X) ( M_COMBINATION_KEYS_FROM_KEY_STATE() | \
                                           ((X&MK_LBUTTON) ? M_MOUSE_LEFT_BUTTON : M_NULL) | \
                                           ((X&MK_MBUTTON) ? M_MOUSE_MIDDLE_BUTTON : M_NULL) | \
                                           ((X&MK_RBUTTON) ? M_MOUSE_RIGHT_BUTTON : M_NULL))
 
#else
#define M_COMBINATION_KEYS_FROM_STATE(X)(((X&ShiftMask)    ?  M_KEY_SHIFT           : M_NULL)   | \
                                         ((X&ControlMask)  ?  M_KEY_CTRL            : M_NULL)   | \
                                         ((X&Mod1Mask)     ?  M_KEY_ALT             : M_NULL)   | \
                                         ((X&Mod4Mask)     ?  M_KEY_WIN             : M_NULL)   | \
                                         ((X&Button1Mask)  ?  M_MOUSE_LEFT_BUTTON   : M_NULL)   | \
                                         ((X&Button2Mask)  ?  M_MOUSE_MIDDLE_BUTTON : M_NULL)   | \
                                         ((X&Button3Mask)  ?  M_MOUSE_RIGHT_BUTTON  : M_NULL))
 
#define M_COMBINATION_KEYS_FROM_BUTTON(X) (((X==Button1) ? M_MOUSE_LEFT_BUTTON : M_NULL) | \
                                           ((X==Button2) ? M_MOUSE_MIDDLE_BUTTON : M_NULL) | \
                                           ((X==Button3) ? M_MOUSE_RIGHT_BUTTON : M_NULL))
 
#endif
 
// OS-Independent Key Codes (mapped to the windows virtual key codes)
#define M_KEY_BACK               0x08 // VK_BACK      (Backspace key)
#define M_KEY_TAB                0x09 // VK_TAB       (Tab key)
 
#define M_KEY_CLEAR              0x0C // VK_CLEAR     (Clear key)
#define M_KEY_RETURN             0x0D // VK_RETURN    (Enter key)
 
#define M_KEY_PAUSE              0x13 // VK_PAUSE     (Pause key)
#define M_KEY_CAPS_LOCK          0x14 // VK_CAPITAL   (Caps lock key)
 
#define M_KEY_ESC                0x1B // VK_ESCAPE    (Esc key)
 
#define M_KEY_SPACE              0x20 // VK_SPACE     (Spacebar)
#define M_KEY_PAGEUP             0x21 // VK_PRIOR     (Page Up key)
#define M_KEY_PAGEDOWN           0x22 // VK_NEXT      (Page Down key)
#define M_KEY_END                0x23 // VK_END       (End key)
#define M_KEY_HOME               0x24 // VK_HOME      (Home key)
#define M_KEY_ARROW_LEFT         0x25 // VK_LEFT      (Left Arrow key)
#define M_KEY_ARROW_UP           0x26 // VK_UP        (Up Arrow key)
#define M_KEY_ARROW_RIGHT        0x27 // VK_RIGHT     (Right Arrow key)
#define M_KEY_ARROW_DOWN         0x28 // VK_DOWN      (Down Arrow key)
 
#define M_KEY_SELECT             0x29 // VK_SELECT    (Select key)
#define M_KEY_PRINT              0x2A // VK_PRINT     (Print key)
#define M_KEY_EXECUTE            0x2B // VK_EXECUTE   (Execute key)
#define M_KEY_INSERT             0x2D // VK_INSERT    (Ins key)
#define M_KEY_DELETE             0x2E // VK_DELETE    (Del key)
#define M_KEY_HELP               0x2F // VK_HELP      (Help key)
 
#define M_KEY_0                  0x30 // 0 key
#define M_KEY_1                  0x31 // 1 key
#define M_KEY_2                  0x32 // 2 key
#define M_KEY_3                  0x33 // 3 key
#define M_KEY_4                  0x34 // 4 key
#define M_KEY_5                  0x35 // 5 key
#define M_KEY_6                  0x36 // 6 key
#define M_KEY_7                  0x37 // 7 key
#define M_KEY_8                  0x38 // 8 key
#define M_KEY_9                  0x39 // 9 key
#define M_KEY_A                  0x41 // A key
#define M_KEY_B                  0x42 // B key
#define M_KEY_C                  0x43 // C key
#define M_KEY_D                  0x44 // D key
#define M_KEY_E                  0x45 // E key
#define M_KEY_F                  0x46 // F key
#define M_KEY_G                  0x47 // G key
#define M_KEY_H                  0x48 // H key
#define M_KEY_I                  0x49 // I key
#define M_KEY_J                  0x4A // J key
#define M_KEY_K                  0x4B // K key
#define M_KEY_L                  0x4C // L key
#define M_KEY_M                  0x4D // M key
#define M_KEY_N                  0x4E // N key
#define M_KEY_O                  0x4F // O key
#define M_KEY_P                  0x50 // P key
#define M_KEY_Q                  0x51 // Q key
#define M_KEY_R                  0x52 // R key
#define M_KEY_S                  0x53 // S key
#define M_KEY_T                  0x54 // T key
#define M_KEY_U                  0x55 // U key
#define M_KEY_V                  0x56 // V key
#define M_KEY_W                  0x57 // W key
#define M_KEY_X                  0x58 // X key
#define M_KEY_Y                  0x59 // Y key
#define M_KEY_Z                  0x5A // Z key
 
#define M_KEY_NUMPAD0            0x60 // VK_NUMPAD0   (Numeric keypad 0 key)
#define M_KEY_NUMPAD1            0x61 // VK_NUMPAD1   (Numeric keypad 1 key)
#define M_KEY_NUMPAD2            0x62 // VK_NUMPAD2   (Numeric keypad 2 key)
#define M_KEY_NUMPAD3            0x63 // VK_NUMPAD3   (Numeric keypad 3 key)
#define M_KEY_NUMPAD4            0x64 // VK_NUMPAD4   (Numeric keypad 4 key)
#define M_KEY_NUMPAD5            0x65 // VK_NUMPAD5   (Numeric keypad 5 key)
#define M_KEY_NUMPAD6            0x66 // VK_NUMPAD6   (Numeric keypad 6 key)
#define M_KEY_NUMPAD7            0x67 // VK_NUMPAD7   (Numeric keypad 7 key)
#define M_KEY_NUMPAD8            0x68 // VK_NUMPAD8   (Numeric keypad 8 key)
#define M_KEY_NUMPAD9            0x69 // VK_NUMPAD9   (Numeric keypad 9 key)
#define M_KEY_MULTIPLY           0x6A // VK_MULTIPLY  (Multiply key)
#define M_KEY_ADD                0x6B // VK_ADD       (Add key)
#define M_KEY_SEPARATOR          0x6C // VK_SEPARATOR (Separator key)
#define M_KEY_SUBTRACT           0x6D // VK_SUBTRACT  (Subtract key)
#define M_KEY_DECIMAL            0x6E // VK_DECIMAL   (Decimal key)
#define M_KEY_DIVIDE             0x6F // VK_DIVIDE    (Divide key)
#define M_KEY_F1                 0x70 // VK_F1        (F1 key)
#define M_KEY_F2                 0x71 // VK_F2        (F2 key)
#define M_KEY_F3                 0x72 // VK_F3        (F3 key)
#define M_KEY_F4                 0x73 // VK_F4        (F4 key)
#define M_KEY_F5                 0x74 // VK_F5        (F5 key)
#define M_KEY_F6                 0x75 // VK_F6        (F6 key)
#define M_KEY_F7                 0x76 // VK_F7        (F7 key)
#define M_KEY_F8                 0x77 // VK_F8        (F8 key)
#define M_KEY_F9                 0x78 // VK_F9        (F9 key)
#define M_KEY_F10                0x79 // VK_F10       (F10 key)
#define M_KEY_F11                0x7A // VK_F11       (F11 key)
#define M_KEY_F12                0x7B // VK_F12       (F12 key)
#define M_KEY_F13                0x7C // VK_F13       (F13 key)
#define M_KEY_F14                0x7D // VK_F14       (F14 key)
#define M_KEY_F15                0x7E // VK_F15       (F15 key)
#define M_KEY_F16                0x7F // VK_F16       (F16 key)
#define M_KEY_F17                0x80 // VK_F17       (F17 key)
#define M_KEY_F18                0x81 // VK_F18       (F18 key)
#define M_KEY_F19                0x82 // VK_F19       (F19 key)
#define M_KEY_F20                0x83 // VK_F20       (F20 key)
#define M_KEY_F21                0x84 // VK_F21       (F21 key)
#define M_KEY_F22                0x85 // VK_F22       (F22 key)
#define M_KEY_F23                0x86 // VK_F23       (F23 key)
#define M_KEY_F24                0x87 // VK_F24       (F24 key)
 
#define M_KEY_NUM_LOCK           0x90   // VK_NUMLOCK (Num Lock key)
#define M_KEY_SCROLL_LOCK        0x91   // VK_SCROLL (Scroll Lock key)
 
#define M_KEY_OEM_PLUS           0xBB  // VK_OEM_PLUS '+' any country    //  (For any country / region, the '+' key)
#define M_KEY_OEM_COMMA          0xBC  // VK_OEM_COMMA ',' any country    //  (For any country / region, the ',' key)
#define M_KEY_OEM_MINUS          0xBD  // VK_OEM_MINUS '-' any country    //  (For any country / region, the '-' key)
#define M_KEY_OEM_PERIOD         0xBE  // VK_OEM_PERIOD '.' any country    //  (For any country / region, the '.' key)
 
// Deprecated names, kept for code backward compatibility
#if OldDefinesSupport
#define M_KEY_SUBSTRACT    M_KEY_SUBTRACT
MIL_DEPRECATED(M_KEY_SUBSTRACT, 1030)
#endif
 
 
#if M_MIL_USE_WINDOWS
#define M_WHEEL_DELTA            WHEEL_DELTA
#define M_MOUSE_WHEEL_DELTA_FROM_WPARAM(X)  (GET_WHEEL_DELTA_WPARAM(X)/M_WHEEL_DELTA)
#else
#define M_WHEEL_DELTA            120 
#define M_MOUSE_WHEEL_DELTA_FROM_WPARAM(X)   ((X<0)?-1:1)
#endif
 
 
/************************************************************************/
/* MdispOverlayKey()                                                    */
/************************************************************************/
#define M_KEY_ON_COLOR                                1L
#define M_KEY_OFF                                     2L
#define M_KEY_ALWAYS                                  3L
 
 
      /* -------------------------------------------------------------- */
      /* -------------------------------------------------------------- */
 
      /* FUNCTION PROTOTYPES */
 
      /* -------------------------------------------------------------- */
 
/* C++ directive if needed */
#ifdef __cplusplus
extern "C"
   {
#endif
 
typedef MIL_HOOK_FUNCTION_PTR MDISPHOOKFCTPTR;
typedef MIL_HOOK_FUNCTION_PTR MIL_DISP_HOOK_FUNCTION_PTR;
 
MIL_DLLFUNC void MFTYPE    MdispHookFunction    (MIL_ID DisplayId,
                                     MIL_INT HookType,
                                     MIL_DISP_HOOK_FUNCTION_PTR HookHandlerPtr,
                                     void *UserDataPtr);
 
 
#if M_MIL_USE_UNICODE
MIL_DLLFUNC MIL_ID MFTYPE  MdispAllocA          (MIL_ID SystemId,
                                     MIL_INT DispNum,
                                     MIL_CONST_TEXTA_PTR DispFormat,
                                     MIL_INT64 InitFlag,
                                     MIL_ID *DisplayIdPtr);
MIL_DLLFUNC MIL_ID MFTYPE  MdispAllocW          (MIL_ID SystemId,
                                     MIL_INT DispNum,
                                     MIL_CONST_TEXTW_PTR DispFormat,
                                     MIL_INT64 InitFlag,
                                     MIL_ID *DisplayIdPtr);
#if M_MIL_UNICODE_API
#define MdispAlloc MdispAllocW
#else
#define MdispAlloc MdispAllocA
#endif
#else
 
MIL_DLLFUNC MIL_ID MFTYPE  MdispAlloc           (MIL_ID SystemId,
                                     MIL_INT DispNum,
                                     MIL_CONST_TEXT_PTR DispFormat,
                                     MIL_INT64 InitFlag,
                                     MIL_ID *DisplayIdPtr);
 
#endif
 
 
MIL_DLLFUNC void MFTYPE    MdispFree            (MIL_ID DisplayId);
 
MIL_DLLFUNC void MFTYPE    MdispSelect          (MIL_ID DisplayId,
                                     MIL_ID ImageBufId);
 
#define MdispDeselect(DisplayId, ImageId) MdispSelect(DisplayId, M_NULL)
 
MIL_DLLFUNC MIL_INT MFTYPE MdispInquire         (MIL_ID DisplayId,
                                     MIL_INT64 InquireType,
                                     void* UserVarPtr);
 
MIL_DLLFUNC void MFTYPE    MdispPan             (MIL_ID DisplayId,
                                     MIL_DOUBLE XOffset,
                                     MIL_DOUBLE YOffset);
MIL_DLLFUNC void MFTYPE    MdispZoom            (MIL_ID DisplayId,
                                     MIL_DOUBLE XFactor,
                                     MIL_DOUBLE YFactor);
 
MIL_DLLFUNC void MFTYPE    MdispLut             (MIL_ID DisplayId,
                                     MIL_ID LutBufId);
 
MIL_DLLFUNC void MFTYPE    MdispMessage(         MIL_ID  DisplayId, 
                                     MIL_INT EventType, 
                                     MIL_INT MousePositionX, 
                                     MIL_INT MousePositionY, 
                                     MIL_INT EventValue, 
                                     MIL_INT CombinationKeys,
                                     MIL_INT UserValue);
 
#if M_MIL_USE_64BIT
// Prototypes for 64 bits OSs
 
MIL_DLLFUNC void MFTYPE    MdispControlInt64        (MIL_ID DisplayId,
                                         MIL_INT64 ControlType,
                                         MIL_INT64 ControlValue);
 
MIL_DLLFUNC void MFTYPE    MdispControlDouble       (MIL_ID DisplayId,
                                         MIL_INT64 ControlType,
                                         MIL_DOUBLE ControlValue);
#else
// Prototypes for 32 bits OSs
 
#define MdispControlDouble MdispControl
#define MdispControlInt64  MdispControl
MIL_DLLFUNC void MFTYPE       MdispControl         (MIL_ID DisplayId,
                                        MIL_INT64 ControlType,
                                        MIL_DOUBLE ControlValue);
#endif
 
 
MIL_DLLFUNC void MFTYPE    MdispUpdate         (MIL_ID DisplayId,
                                    MIL_INT OffsetX,
                                    MIL_INT OffsetY,
                                    MIL_INT SizeX,
                                    MIL_INT SizeY,
                                    MIL_INT64 ControlFlag);
 
MIL_DLLFUNC MIL_INT MFTYPE    MdispGetHookInfo    (MIL_ID EventId,
                                       MIL_INT64 InfoType,
                                       void* UserVarPtr);
 
MIL_DLLFUNC void MFTYPE    MdispSelectWindow    (MIL_ID DisplayId,
                                     MIL_ID ImageBufId,
                                     MIL_WINDOW_HANDLE ClientWindowHandle);
 
 
/* C++ directive if needed */
#ifdef __cplusplus
}
#endif
 
#ifdef __cplusplus
#if M_MIL_USE_64BIT
 
//////////////////////////////////////////////////////////////
// MdispControl function definition when compiling c++ files
//////////////////////////////////////////////////////////////
#if !M_MIL_USE_LINUX
inline void MdispControl(MIL_ID DisplayId,
                         MIL_INT64 ControlType,
                         int ControlValue)
   {
   MdispControlInt64(DisplayId, ControlType, ControlValue);
   };
#endif
inline void MdispControl(MIL_ID DisplayId,
                         MIL_INT64 ControlType,
                         MIL_INT32 ControlValue)
   {
   MdispControlInt64(DisplayId, ControlType, ControlValue);
   }
 
inline void MdispControl(MIL_ID DisplayId,
                         MIL_INT64 ControlType,
                         MIL_INT64 ControlValue)
   {
   MdispControlInt64(DisplayId, ControlType, ControlValue);
   }
 
inline void MdispControl(MIL_ID DisplayId,
   MIL_INT64 ControlType,
   MIL_DOUBLE ControlValue)
   {
   MdispControlDouble(DisplayId, ControlType, ControlValue);
   }
 
inline void MdispControl(MIL_ID DisplayId,
   MIL_INT64 ControlType,
   MIL_CONST_TEXT_PTR ControlValue)
   {
   MdispControl(DisplayId, ControlType, M_PTR_TO_MIL_INT(ControlValue));
   }
#else // M_MIL_USE_64BIT
inline void MdispControl(MIL_ID DisplayId,
                         MIL_INT64 ControlType,
                         int ControlValue)
   {
   MdispControl(DisplayId, ControlType, (double)ControlValue);
   };
inline void MdispControl(MIL_ID DisplayId,
                         MIL_INT64 ControlType,
                         MIL_INT32 ControlValue)
   {
   MdispControl(DisplayId, ControlType, (double)ControlValue);
   };
 
inline void MdispControl(MIL_ID DisplayId,
                         MIL_INT64 ControlType,
                         MIL_INT64 ControlValue)
   {
   MdispControl(DisplayId, ControlType, (double)ControlValue);
   };
 
inline void MdispControl(MIL_ID DisplayId,
   MIL_INT64 ControlType,
   MIL_CONST_TEXT_PTR ControlValue)
   {
   MdispControl(DisplayId, ControlType, M_PTR_TO_MIL_INT(ControlValue));
   };
#endif // M_MIL_USE_64BIT
#else // __cplusplus
 
#define MdispControl MdispControlInt64
#endif // __cplusplus
 
//////////////////////////////////////////////////////////////
// SafeType functions.
//////////////////////////////////////////////////////////////
 
//////////////////////////////////////////////////////////////
// See milos.h for explanation about these functions.
//////////////////////////////////////////////////////////////
 
// M_MIL_USE_SAFE_TYPE defined in milos.h.
#if M_MIL_USE_SAFE_TYPE
 
// ----------------------------------------------------------
// MdispInquire
 
inline MIL_INT MFTYPE MdispInquireUnsafe  (MIL_ID DisplayId, MIL_INT64 InquireType, void*                 ResultPtr);
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, int                   ResultPtr);
#if M_MIL_SAFE_TYPE_M_NULL_PTR_TYPE_EXISTS
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, std::nullptr_t);
#endif
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_TEXT_CHAR*        ResultPtr);
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_INT*              ResultPtr);
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_DOUBLE*           ResultPtr);
#if M_MIL_SAFE_TYPE_SUPPORTS_UNSIGNED
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_UINT*             ResultPtr);
#endif
#if   M_MIL_USE_WINDOWS
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_WINDOW_HANDLE*    ResultPtr);
#endif
#if !M_MIL_USE_64BIT
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_INT64*            ResultPtr);
#endif
 
inline MIL_INT64 MdispInquireRequiredType(MIL_INT64 InquireType)
   {
   if (M_IN_DISP_INQUIRE_MIL_ID_RANGE(InquireType))
      return M_TYPE_MIL_ID;
 
   if (M_IN_DISP_INQUIRE_DOUBLE_RANGE(InquireType))
      return M_TYPE_DOUBLE;
 
   if (M_IN_DISP_INQUIRE_STRING_RANGE(InquireType))
      return M_TYPE_TEXT_CHAR;
 
   if (M_IN_DISP_INQUIRE_MIL_INT64_RANGE(InquireType))
      return M_TYPE_MIL_INT64;
 
   return M_TYPE_MIL_INT;
   }
 
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, int UserVarPtr)
   {
   if (UserVarPtr || M_DISP_INQUIRE_MUST_HAVE_USER_PTR(InquireType))
      SafeTypeError(MIL_TEXT("MdispInquire"));
 
   return MdispInquire(DisplayId, InquireType, NULL);
   }
 
#if M_MIL_SAFE_TYPE_M_NULL_PTR_TYPE_EXISTS
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, std::nullptr_t)
   {
   if(M_DISP_INQUIRE_MUST_HAVE_USER_PTR(InquireType))
      SafeTypeError(MIL_TEXT("MdispInquire"));
 
   return MdispInquire(DisplayId, InquireType, NULL);
   }
#endif
 
inline MIL_INT MFTYPE MdispInquireExecute (MIL_ID DisplayId, MIL_INT64 InquireType, void* ValuePtr, MIL_INT64 GivenType)
   {
   MIL_INT64 RequiredType = MdispInquireRequiredType(InquireType);
   ReplaceTypeMilIdByTypeMilIntXX(&RequiredType);
 
   if (RequiredType != GivenType)
      SafeTypeError(MIL_TEXT("MdispInquire"));
 
   return MdispInquire(DisplayId, InquireType, ValuePtr);
   }
 
inline MIL_INT MFTYPE MdispInquireUnsafe  (MIL_ID DisplayId, MIL_INT64 InquireType, void*          UserVarPtr) {return MdispInquire       (DisplayId, InquireType, UserVarPtr                  );}
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_TEXT_CHAR* UserVarPtr) {return MdispInquireExecute(DisplayId, InquireType, UserVarPtr, M_TYPE_TEXT_CHAR);}
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_INT*       UserVarPtr) {return MdispInquireExecute(DisplayId, InquireType, UserVarPtr, M_TYPE_MIL_INT  );}
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_DOUBLE*    UserVarPtr) {return MdispInquireExecute(DisplayId, InquireType, UserVarPtr, M_TYPE_DOUBLE   );}
#if M_MIL_SAFE_TYPE_SUPPORTS_UNSIGNED
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_UINT*      UserVarPtr) {return MdispInquireExecute(DisplayId, InquireType, UserVarPtr, M_TYPE_MIL_INT  );}
#endif
#if !M_MIL_USE_64BIT
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_INT64*     UserVarPtr) {return MdispInquireExecute(DisplayId, InquireType, UserVarPtr, M_TYPE_MIL_INT64);}
#endif
 
#if   M_MIL_USE_WINDOWS
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DisplayId, MIL_INT64 InquireType, MIL_WINDOW_HANDLE* ResultPtr)
   {
   if (InquireType != M_WINDOW_HANDLE)
      SafeTypeError(MIL_TEXT("MdispInquire"));
 
   return MdispInquire(DisplayId, InquireType, ResultPtr);
   }
#endif
// ----------------------------------------------------------
// MdispGetHookInfo
 
inline MIL_INT MFTYPE MdispGetHookInfoUnsafe  (MIL_ID EventId, MIL_INT64 InfoType, void            *UserVarPtr);
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, int             *UserVarPtr);
#if M_MIL_SAFE_TYPE_M_NULL_PTR_TYPE_EXISTS
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, std::nullptr_t);
#endif
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, MIL_INT         *UserVarPtr);
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, MIL_DC_HANDLE   *UserVarPtr);
 
//safe type checking 
inline MIL_INT64 MdispGetHookInfoRequiredType(MIL_INT64 InfoType)
   {
   //check if InfoType requires a double
   if ((M_MOUSE_POSITION_BUFFER_X == InfoType) || (M_MOUSE_POSITION_BUFFER_Y == InfoType))
      {
      return M_TYPE_MIL_DOUBLE;
      }
 
   return M_TYPE_MIL_INT;
   }
 
inline MIL_INT MFTYPE MdispGetHookInfoSafeTypeExecute (MIL_ID EventId, MIL_INT64 InfoType, void* UserVarPtr, MIL_INT64 GivenType)
   {
   MIL_INT64 RequiredType = MdispGetHookInfoRequiredType(InfoType);
 
   if (RequiredType != GivenType)
      SafeTypeError(MIL_TEXT("MdispGetHookInfo"));
 
   return MdispGetHookInfo(EventId, InfoType, UserVarPtr);
   }
 
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, int UserVarPtr)
   {
   if (UserVarPtr)
      SafeTypeError(MIL_TEXT("MdispGetHookInfo"));
 
   return MdispGetHookInfo(EventId, InfoType, NULL);
   }
 
#if M_MIL_SAFE_TYPE_M_NULL_PTR_TYPE_EXISTS
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, std::nullptr_t)
   {
   return MdispGetHookInfo(EventId, InfoType, NULL);
   }
#endif
 
inline MIL_INT MFTYPE MdispGetHookInfoUnsafe  (MIL_ID EventId, MIL_INT64 InfoType, void            *UserVarPtr) {return MdispGetHookInfo               (EventId, InfoType, UserVarPtr)                  ;}
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, MIL_INT         *UserVarPtr) {return MdispGetHookInfoSafeTypeExecute(EventId, InfoType, UserVarPtr, M_TYPE_MIL_INT  );}
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, MIL_DOUBLE      *UserVarPtr) {return MdispGetHookInfoSafeTypeExecute(EventId, InfoType, UserVarPtr, M_TYPE_DOUBLE   );}
 
#if !M_MIL_USE_LINUX
inline MIL_INT MFTYPE MdispGetHookInfoSafeType(MIL_ID EventId, MIL_INT64 InfoType, MIL_DC_HANDLE   *UserVarPtr)
      {
      if (InfoType != M_ANNOTATIONS_DC)
         SafeTypeError(MIL_TEXT("MdispHookFunction"));
 
      return MdispGetHookInfo(EventId, InfoType, UserVarPtr);
      }
#endif
 
#define MdispInquire         MdispInquireSafeType
#define MdispGetHookInfo     MdispGetHookInfoSafeType
 
#else // #if M_MIL_USE_SAFE_TYPE
 
#define MdispGetHookInfoUnsafe     MdispGetHookInfo
#define MdispInquireUnsafe         MdispInquire
 
#endif
#if M_MIL_USE_STRING
///***************************************************************************/
///* DISP MODULE                                                             */
///***************************************************************************/
inline void MdispControl(MIL_ID DisplayId, MIL_INT64 ControlType, const MIL_STRING& ControlValue)
   {
   if(M_IN_DISP_INQUIRE_STRING_RANGE(ControlType))
      {
      MdispControl(DisplayId, ControlType, ControlValue.c_str());
      }
   else
      {
#if M_MIL_USE_SAFE_TYPE
      SafeTypeError(MIL_TEXT("MdispControl: ControlType does not support string argument."));
#endif
      }
   }
#if M_MIL_USE_UNICODE
#if M_MIL_UNICODE_API
inline MIL_ID MFTYPE  MdispAllocW(MIL_ID SystemId, MIL_INT DispNum, const MIL_STRING& DispFormat, MIL_INT64 InitFlag, MIL_ID *DisplayIdPtr)
   {
   return MdispAllocW(SystemId, DispNum, DispFormat.c_str(), InitFlag, DisplayIdPtr);
   }
#else
inline MIL_ID MFTYPE  MdispAllocA(MIL_ID SystemId, MIL_INT DispNum, const MIL_STRING& DispFormat, MIL_INT64 InitFlag, MIL_ID *DisplayIdPtr)
   {
   return MdispAllocA(SystemId, DispNum, DispFormat.c_str(), InitFlag, DisplayIdPtr);
   }
#endif /* M_MIL_USE_UNICODE */
#else
inline MIL_ID MFTYPE  MdispAlloc(MIL_ID SystemId, MIL_INT DispNum, const MIL_STRING& DispFormat, MIL_INT64 InitFlag, MIL_ID *DisplayIdPtr)
   {
   return MdispAlloc(SystemId, DispNum, DispFormat.c_str(), InitFlag, DisplayIdPtr);
   }
#endif /* M_MIL_UNICODE_API */
 
#if !M_MIL_USE_SAFE_TYPE
inline MIL_INT MFTYPE MdispInquire(MIL_ID DispId, MIL_INT64 InquireType, MIL_STRING      &UserVarPtr)
   {
   MIL_INT RetValue = 0;
   MIL_INT InternalStringSize = 0;
   MdispInquire(DispId, InquireType + M_STRING_SIZE, &InternalStringSize);
 
   if(InternalStringSize > 0)
      {
      UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
      RetValue = MdispInquire(DispId, InquireType, &UserVarPtr[0]);
      UserVarPtr.resize(InternalStringSize - 1);
 
      }
 
   return RetValue;
   }
#else
inline MIL_INT MFTYPE MdispInquireSafeType(MIL_ID DispId, MIL_INT64 InquireType, MIL_STRING      &UserVarPtr)
   {
   MIL_INT RetValue = 0;
   MIL_INT InternalStringSize = 0;
   MdispInquire(DispId, InquireType + M_STRING_SIZE, &InternalStringSize);
 
   if(InternalStringSize > 0)
      {
      UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
      RetValue = MdispInquire(DispId, InquireType, &UserVarPtr[0]);
      UserVarPtr.resize(InternalStringSize - 1);
 
      }
 
   return RetValue;
   }
#endif /* M_MIL_UNICODE */
#endif /* M_MIL_USE_STRING*/
 
////////////////////////////////////////////////////////////////////////////////
// MIL_UNIQUE_ID support
 
#if M_MIL_USE_MIL_UNIQUE_ID
 
#if M_MIL_USE_SAFE_TYPE
template <> inline bool MilIsCorrectObjectType<&MdispFree>(MIL_INT64 ObjectType)
   {
   return M_IS_DISPLAY_TYPE(ObjectType);
   }
#endif
 
typedef MIL_UNIQUE_ID<&MdispFree> MIL_UNIQUE_DISP_ID;
 
#if M_MIL_USE_MOVE_SEMANTICS
 
inline MIL_UNIQUE_DISP_ID MdispAlloc(MIL_ID SystemId, MIL_INT DispNum, MIL_CONST_TEXT_PTR DispFormat, MIL_INT64 InitFlag, MIL_UNIQUE_ID_TAG)
   {
   return MIL_UNIQUE_DISP_ID(MdispAlloc(SystemId, DispNum, DispFormat, InitFlag, M_NULL));
   }
#if M_MIL_USE_STRING
inline MIL_UNIQUE_DISP_ID MdispAlloc(MIL_ID SystemId, MIL_INT DispNum, const MIL_STRING& DispFormat, MIL_INT64 InitFlag, MIL_UNIQUE_ID_TAG)
   {
   return MIL_UNIQUE_DISP_ID(MdispAlloc(SystemId, DispNum, DispFormat, InitFlag, M_NULL));
   }
#endif // M_MIL_USE_STRING
template <MilFreeFuncType FreeFunc> inline void MdispFree(const MIL_UNIQUE_ID<FreeFunc>&) = delete;
 
#endif // M_MIL_USE_MOVE_SEMANTICS
#endif // M_MIL_USE_MIL_UNIQUE_ID
 
// End of MIL_UNIQUE_ID support
////////////////////////////////////////////////////////////////////////////////
 
#endif //__MIL_DISPLAY_H__