{"id":38793,"date":"2004-06-21T07:00:00","date_gmt":"2004-06-21T07:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2004\/06\/21\/the-evolution-of-dialog-templates-32-bit-classic-templates\/"},"modified":"2004-06-21T07:00:00","modified_gmt":"2004-06-21T07:00:00","slug":"the-evolution-of-dialog-templates-32-bit-classic-templates","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20040621-00\/?p=38793","title":{"rendered":"The evolution of dialog templates &#8211; 32-bit Classic Templates"},"content":{"rendered":"<p>\nOkay,\n<a href=\"http:\/\/blogs.msdn.com\/oldnewthing\/archive\/2004\/06\/18\/159248.aspx\">\nlast time we talked about the 16-bit classic DIALOG template<\/a>.\nThis time, we&#8217;re going to talk about the 32-bit classic DIALOG template.\n<\/p>\n<p>\nThere really isn&#8217;t much going on.\nSome 8-bit fields got expanded to 16-bit fields,\nsome 16-bit fields got expanded to 32-bit fields,\nextended styles were added,\nand all strings got changed from ANSI to Unicode.\n<\/p>\n<p>\nThe template starts like this:\n<\/p>\n<pre>\nDWORD dwStyle;   \/\/ dialog style\nDWORD dwExStyle; \/\/ extended dialog style\nWORD  cItems;    \/\/ number of controls in this dialog\nWORD  x;         \/\/ x-coordinate\nWORD  y;         \/\/ y-coordinate\nWORD  cx;        \/\/ width\nWORD  cy;        \/\/ height\n<\/pre>\n<p>\nThis is basically the same as the 16-bit dialog template,\nexcept that there&#8217;s a new <code>dwExStyle<\/code> field,\nand the <code>cItems<\/code> went from a BYTE to a WORD.\nConsequently, the maximum number of controls per 32-bit\ndialog is 65535.  That should be enough for a while.\n<\/p>\n<p>\nAfter this header come a series of strings,\njust like in 16-bit dialog templates.\nBut this time, the strings are Unicode.\nFor example, if you wanted to store the string &#8220;Hello&#8221;,\nyou would write out the twelve bytes<\/p>\n<pre>\n48 00 65 00 6C 00 6C 00 6F 00 00 00 ; \"Hello\"\n<\/pre>\n<p>\nAs with the 16-bit case, in the 32-bit dialog template,\nyou can often specify an ordinal instead of a string.\nHere, it&#8217;s done by writing the bytes FF 00 followed by the\n16-bit ordinal (in little-endian format).\nFor example, if you wanted to specify\nthe ordinal 42, you would write out the four bytes<\/p>\n<pre>\nFF 00 2A 00        ; 00FF followed by WORD (little-endian)\n<\/pre>\n<p>\nThe three strings are the same as last time:\n<\/p>\n<ul>\n<li>The menu name, which can be a string or an ordinal.\n<li>The class, which must be a string (no ordinals allowed).\n<li>The dialog title, which must be a string (no ordinals allowed).\n<\/ul>\n<p>\nIf the DS_SETFONT style is set, then what follows next is\na WORD indicating the point size and a string specifying\nthe font name. Otherwise, there is no font information.\nSame as in the 16-bit dialog template.\n<\/p>\n<p>\nSo far, everything has been WORD-aligned.\n<\/p>\n<p>\nAfter the header comes a series of dialog item templates.\nEach item template begins on a DWORD boundary.\n(Insert padding if necessary to achieve this.)\n<\/p>\n<pre>\nDWORD dwStyle;   \/\/ window style\nDWORD dwExStyle; \/\/ window extended style\nWORD  x;         \/\/ x-coordinate (DLUs)\nWORD  y;         \/\/ y-coordinate (DLUs)\nWORD  cx;        \/\/ width (DLUs)\nWORD  cy;        \/\/ height (DLUs)\nWORD  wID;       \/\/ control ID\n<\/pre>\n<p>\nAs before, the dialog coordinates are recorded\nin dialog units (DLUs).\n<\/p>\n<p>\nNext comes the class name, either as a\nnull-terminated Unicode string or as an ordinal.\nThe ordinal codes for the six &#8220;standard&#8221; window classes are the same\nas for 16-bit dialog templates:\n<\/p>\n<ul>\n<li>0x0080 = &#8220;button&#8221;\n<li>0x0081 = &#8220;edit&#8221;\n<li>0x0082 = &#8220;static&#8221;\n<li>0x0083 = &#8220;listbox&#8221;\n<li>0x0084 = &#8220;scrollbar&#8221;\n<li>0x0085 = &#8220;combobox&#8221;\n<\/ul>\n<p>\nAfter the class name comes the control text, either as a null-terminated\nstring or as an ordinal, following the same rules as for the 16-bit\ntemplate.  <strong>Extra weirdness<\/strong>: To specify an ordinal here,\nuse FFFF instead of 00FF as the ordinal marker.\nI don&#8217;t know why.\n<\/p>\n<p>\nAfter the control text comes up to 65535 bytes of &#8220;extra data&#8221;\nin the form of a 16-bit count, followed by the actual data.\nIf there is no &#8220;extra data&#8221;, then use a count of zero.\n<\/p>\n<p>\nAnd that&#8217;s all there is.  As with last time, I&#8217;ll present\nan annotated dialog template.\n<\/p>\n<pre>\n0000  C4 20 C8 80 00 00 00 00-0B 00 24 00 2C 00 E6 00  . ........$.,...\n0010  5E 00 00 00 00 00 52 00-65 00 70 00 6C 00 61 00  ^.....R.e.p.l.a.\n0020  63 00 65 00 00 00 08 00-4D 00 53 00 20 00 53 00  c.e.....M.S. .S.\n0030  68 00 65 00 6C 00 6C 00-20 00 44 00 6C 00 67 00  h.e.l.l. .D.l.g.\n0040  00 00 00 00 00 00 02 50-00 00 00 00 04 00 09 00  .......P........\n0050  30 00 08 00 FF FF FF FF-82 00 46 00 69 00 26 00  0.........F.i.&amp;.\n0060  6E 00 64 00 20 00 77 00-68 00 61 00 74 00 3A 00  n.d. .w.h.a.t.:.\n0070  00 00 00 00 80 00 83 50-00 00 00 00 36 00 07 00  .......P....6...\n0080  72 00 0C 00 80 04 FF FF-81 00 00 00 00 00 00 00  r...............\n0090  00 00 02 50 00 00 00 00-04 00 1A 00 30 00 08 00  ...P........0...\n00A0  FF FF FF FF 82 00 52 00-65 00 26 00 70 00 6C 00  ......R.e.&amp;.p.l.\n00B0  61 00 63 00 65 00 20 00-77 00 69 00 74 00 68 00  a.c.e. .w.i.t.h.\n00C0  3A 00 00 00 00 00 00 00-80 00 83 50 00 00 00 00  :..........P....\n00D0  36 00 18 00 72 00 0C 00-81 04 FF FF 81 00 00 00  6...r...........\n00E0  00 00 00 00 03 00 03 50-00 00 00 00 05 00 2E 00  .......P........\n00F0  68 00 0C 00 10 04 FF FF-80 00 4D 00 61 00 74 00  h.........M.a.t.\n0100  63 00 68 00 20 00 26 00-77 00 68 00 6F 00 6C 00  c.h. .&amp;.w.h.o.l.\n0110  65 00 20 00 77 00 6F 00-72 00 64 00 20 00 6F 00  e. .w.o.r.d. .o.\n0120  6E 00 6C 00 79 00 00 00-00 00 00 00 03 00 01 50  n.l.y..........P\n0130  00 00 00 00 05 00 3E 00-3B 00 0C 00 11 04 FF FF  ......&gt;.;.......\n0140  80 00 4D 00 61 00 74 00-63 00 68 00 20 00 26 00  ..M.a.t.c.h. .&amp;.\n0150  63 00 61 00 73 00 65 00-00 00 00 00 01 00 03 50  c.a.s.e........P\n0160  00 00 00 00 AE 00 04 00-32 00 0E 00 01 00 FF FF  ........2.......\n0170  80 00 26 00 46 00 69 00-6E 00 64 00 20 00 4E 00  ..&amp;.F.i.n.d. .N.\n0180  65 00 78 00 74 00 00 00-00 00 00 00 00 00 01 50  e.x.t..........P\n0190  00 00 00 00 AE 00 15 00-32 00 0E 00 00 04 FF FF  ........2.......\n01A0  80 00 26 00 52 00 65 00-70 00 6C 00 61 00 63 00  ..&amp;.R.e.p.l.a.c.\n01B0  65 00 00 00 00 00 00 00-00 00 01 50 00 00 00 00  e..........P....\n01C0  AE 00 26 00 32 00 0E 00-01 04 FF FF 80 00 52 00  ..&amp;.2.........R.\n01D0  65 00 70 00 6C 00 61 00-63 00 65 00 20 00 26 00  e.p.l.a.c.e. .&amp;.\n01E0  41 00 6C 00 6C 00 00 00-00 00 00 00 00 00 01 50  A.l.l..........P\n01F0  00 00 00 00 AE 00 37 00-32 00 0E 00 02 00 FF FF  ......7.2.......\n0200  80 00 43 00 61 00 6E 00-63 00 65 00 6C 00 00 00  ..C.a.n.c.e.l...\n0210  00 00 00 00 00 00 01 50-00 00 00 00 AE 00 4B 00  .......P......K.\n0220  32 00 0E 00 0E 04 FF FF-80 00 26 00 48 00 65 00  2.........&amp;.H.e.\n0230  6C 00 70 00 00 00 00 00                          l.p.....\n<\/pre>\n<p>\nAs before, we start with the header.<\/p>\n<pre>\n0000  C4 20 C8 80  \/\/ dwStyle\n0004  00 00 00 00  \/\/ dwExStyle\n0008  0B 00        \/\/ cItems\n000A  24 00 2C 00  \/\/ x, y\n000E  E6 00 5E 00  \/\/ cx, cy\n<\/pre>\n<p>\nIn other words, the header says\n<\/p>\n<table>\n<tr>\n<td>dwStyle<\/td>\n<td>= 0x80C820C4<\/td>\n<td>= WS_POPUP | WS_CAPTION | WS_SYSMENU |<br \/>\n        &nbsp;  DS_CONTEXTHELP | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK\n    <\/td>\n<\/tr>\n<tr>\n<td>dwExStyle<\/td>\n<td>= 0x00000000<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>cItems<\/td>\n<td>= 0x0B<\/td>\n<td>= 11<\/td>\n<\/tr>\n<tr>\n<td>x<\/td>\n<td>= 0x0024<\/td>\n<td>= 36<\/td>\n<\/tr>\n<tr>\n<td>y<\/td>\n<td>= 0x002C<\/td>\n<td>= 44<\/td>\n<\/tr>\n<tr>\n<td>cx<\/td>\n<td>= 0x00E6<\/td>\n<td>= 230<\/td>\n<\/tr>\n<tr>\n<td>cy<\/td>\n<td>= 0x005E<\/td>\n<td>= 94<\/td>\n<\/tr>\n<\/table>\n<p>\nAfter the header come the menu name, class name, and\ndialog title:\n<\/p>\n<pre>\n0012  00 00         \/\/ no menu\n0014  00 00         \/\/ default dialog class\n0016  52 00 65 00 70 00 6C 00 61 00 63 00\n      65 00 00 00   \/\/ \"Replace\"\n<\/pre>\n<p>\nAgain, since the DS_SETFONT bit is set in the style,\nthe next section describes the font to be used by the dialog:\n<\/p>\n<pre>\n0026  08 00         \/\/ wSize = 8\n0028  4D 00 53 00 20 00 53 00 68 00 65 00 6C 00\n      6C 00 20 00 44 00 6C 00 67 00 00 00\n                    \/\/ \"MS Shell Dlg\"\n<\/pre>\n<p>\nThis dialog box uses 8pt &#8220;MS Shell Dlg&#8221; as its dialog font.\n<\/p>\n<p>\nNext come the eleven dialog item templates.\nNot remember that each template must be DWORD-aligned,\nso we need some padding here to get up to a four-byte boundary.\n<\/p>\n<pre>\n0042 00 00          \/\/ Padding for alignment\n<\/pre>\n<p>\nNow that we are once again DWORD-aligned, we can read the first\ndialog item template.\n<\/p>\n<pre>\n0044  00 00 02 50   \/\/ dwStyle\n0048  00 00 00 00   \/\/ dwExStyle\n004C  04 00 09 00   \/\/ x, y\n0050  30 00 08 00   \/\/ cx, cy\n0054  FF FF         \/\/ wID\n0056  FF FF 82 00   \/\/ \"static\"\n005A  46 00 69 00 26 00\n0060  6E 00 64 00 20 00 77 00-68 00 61 00 74 00 3A 00\n0070  00 00         \/\/ \"Fi&amp;nd what:\"\n0072  00 00         \/\/ no extra data\n<\/pre>\n<p>\nNotice here that the &#8220;static&#8221; class was encoded as an ordinal.\nThe template for this item is therefore\n<\/p>\n<table>\n<tr>\n<td>dwStyle<\/td>\n<td>= 0x50020000<\/td>\n<td>= WS_CHILD | WS_VISIBLE | WS_GROUP | SS_LEFT\n    <\/td>\n<\/tr>\n<tr>\n<td>dwExStyle<\/td>\n<td>= 0x00000000<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>x<\/td>\n<td>= 0x0004<\/td>\n<td>= 4<\/td>\n<\/tr>\n<tr>\n<td>y<\/td>\n<td>= 0x0009<\/td>\n<td>= 9<\/td>\n<\/tr>\n<tr>\n<td>cx<\/td>\n<td>= 0x0030<\/td>\n<td>= 48<\/td>\n<\/tr>\n<tr>\n<td>cy<\/td>\n<td>= 0x0008<\/td>\n<td>= 8<\/td>\n<\/tr>\n<tr>\n<td>wID<\/td>\n<td>= 0xFFFF<\/td>\n<td>= -1<\/td>\n<\/tr>\n<tr>\n<td>szClass<\/td>\n<td>= ordinal 0x0082<\/td>\n<td>= &#8220;static&#8221;\n    <\/td>\n<\/tr>\n<tr>\n<td>szText<\/td>\n<td>= &#8220;Fi&amp;nd what:&#8221;<\/td>\n<\/tr>\n<\/table>\n<p>\nThe other controls are similarly unexciting.<\/p>\n<pre>\n\/\/ Second control\n0074  80 00 83 50   \/\/ dwStyle\n0078  00 00 00 00   \/\/ dwExStyle\n007C  36 00 07 00   \/\/ x, y\n0080  72 00 0C 00   \/\/ cx, cy\n0084  80 04         \/\/ wID\n0086  FF FF 81 00   \/\/ \"edit\"\n008A  00 00         \/\/ \"\"\n008C  00 00         \/\/ no extra data\n008E  00 00         \/\/ padding to achieve DWORD alignment\n\/\/ Third control\n0090  00 00 02 50   \/\/ dwStyle\n0094  00 00 00 00   \/\/ dwExStyle\n0098  04 00 1A 00   \/\/ x, y\n009C  30 00 08 00   \/\/ cx, cy\n00A0  FF FF         \/\/ wID\n00A2  FF FF 82 00   \/\/ \"static\"\n00A6  52 00 65 00 26 00 70 00 6C 00\n00B0  61 00 63 00 65 00 20 00 77 00 69 00 74 00 68 00\n00C0  3A 00 00 00   \/\/ \"Re&amp;place with:\"\n00C4  00 00         \/\/ no extra data\n00C6  00 00         \/\/ padding to achieve DWORD alignment\n\/\/ Fourth control\n00C8  80 00 83 50   \/\/ dwStyle\n00CC  00 00 00 00   \/\/ dwExStyle\n00D0  36 00 18 00   \/\/ x, y\n00D4  72 00 0C 00   \/\/ cx, cy\n00D8  81 04         \/\/ wID\n00DA  FF FF 81 00   \/\/ \"edit\"\n00DE  00 00         \/\/ \"\"\n00E0  00 00         \/\/ no extra data\n00E2  00 00         \/\/ padding to achieve DWORD alignment\n\/\/ Fifth control\n00E4  03 00 03 50   \/\/ dwStyle\n00E8  00 00 00 00   \/\/ dwExStyle\n00EC  05 00 2E 00   \/\/ x, y\n00F0  68 00 0C 00   \/\/ cx, cy\n00F4  10 04         \/\/ wID\n00F6  FF FF 80 00   \/\/ \"button\"\n00FA  4D 00 61 00 74 00\n0100  63 00 68 00 20 00 26 00 77 00 68 00 6F 00 6C 00\n0110  65 00 20 00 77 00 6F 00 72 00 64 00 20 00 6F 00\n0120  6E 00 6C 00 79 00 00 00\n                    \/\/ \"Match &amp;whole word only\"\n0128  00 00         \/\/ no extra data\n012A  00 00         \/\/ padding to achieve DWORD alignment\n\/\/ Sixth control\n012C  03 00 01 50   \/\/ dwStyle\n0130  00 00 00 00   \/\/ dwExStyle\n0134  05 00 3E 00   \/\/ x, y\n0138  3B 00 0C 00   \/\/ cx, cy\n013C  11 04         \/\/ wID\n013E  FF FF 80 00   \/\/ \"button\"\n0142  4D 00 61 00 74 00 63 00 68 00 20 00 26 00\n0150  63 00 61 00 73 00 65 00 00 00\n                    \/\/ \"Match &amp;case\"\n015A  00 00         \/\/ no extra data\n\/\/ Seventh control\n015C  01 00 03 50   \/\/ dwStyle\n0160  00 00 00 00   \/\/ dwExStyle\n0164  AE 00 04 00   \/\/ x, y\n0168  32 00 0E 00   \/\/ cx, cy\n016C  01 00         \/\/ wID\n016E  FF FF 80 00   \/\/ \"button\"\n0172  26 00 46 00 69 00 6E 00 64 00 20 00 4E 00\n0180  65 00 78 00 74 00 00 00\n                    \/\/ \"&amp;Find Next\"\n0188  00 00         \/\/ no extra data\n018A  00 00         \/\/ padding to achieve DWORD alignment\n\/\/ Eighth control\n018C  00 00 01 50   \/\/ dwStyle\n0190  00 00 00 00   \/\/ dwExStyle\n0194  AE 00 15 00   \/\/ x, y\n0198  32 00 0E 00   \/\/ cx, cy\n019C  00 04         \/\/ wID\n019E  FF FF 80 00   \/\/ \"button\"\n01A2  26 00 52 00 65 00-70 00 6C 00 61 00 63 00\n01B0  65 00 00 00   \/\/ \"&amp;Replace\"\n01B4  00 00         \/\/ no extra data\n01B6  00 00         \/\/ padding to achieve DWORD alignment\n\/\/ Ninth control\n01B8  00 00 01 50   \/\/ dwStyle\n01BC  00 00 00 00   \/\/ dwExStyle\n01C0  AE 00 26 00   \/\/ x, y\n01C4  32 00 0E 00   \/\/ cx, cy\n01C8  01 04         \/\/ wID\n01CA  FF FF 80 00   \/\/ \"button\"\n01CE  52 00\n01D0  65 00 70 00 6C 00 61 00 63 00 65 00 20 00 26 00\n01E0  41 00 6C 00 6C 00 00 00\n                    \/\/ \"Replace &amp;All\"\n01E8  00 00         \/\/ no extra data\n01EA  00 00         \/\/ padding to achieve DWORD alignment\n\/\/ Tenth control\n01EC  00 00 01 50   \/\/ dwStyle\n01F0  00 00 00 00   \/\/ dwExStyle\n01F4  AE 00 37 00   \/\/ x, y\n01F8  32 00 0E 00   \/\/ cx, cy\n01FC  02 00         \/\/ wID\n01FE  FF FF 80 00   \/\/ \"button\"\n0202  43 00 61 00 6E 00 63 00 65 00 6C 00 00 00\n                    \/\/ \"Cancel\"\n0210  00 00         \/\/ no extra data\n0212  00 00         \/\/ padding to achieve DWORD alignment\n\/\/ Eleventh control\n0214  00 00 01 50   \/\/ dwStyle\n0218  00 00 00 00   \/\/ dwExStyle\n021C  AE 00 4B 00   \/\/ x, y\n0220  32 00 0E 00   \/\/ cx, cy\n0224  0E 04         \/\/ wID\n0226  FF FF 80 00   \/\/ \"button\"\n022A  26 00 48 00 65 00 6C 00 70 00 00 00\n                    \/\/ \"&amp;Help\"\n0236  00 00         \/\/ no extra data\n<\/pre>\n<p>\nWhew.\nTedious and entirely unexciting.\nHere&#8217;s the original resource compiler source code that\nwe reverse-engineered:\n<\/p>\n<pre>\nDIALOG 36, 44, 230, 94\nSTYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_3DLOOK | NOT WS_VISIBLE\nCAPTION \"Replace\"\nFONT 8, \"MS Shell Dlg\"\nBEGIN\n    CONTROL \"Fi&amp;nd What:\", -1, \"static\", WS_GROUP | SS_LEFT,\n            4, 9, 48, 8\n    CONTROL \"\", 0x0480, \"edit\",\n            WS_BORDER | WS_GROUP | WS_TABSTOP | ES_AUTOHSCROLL,\n            54, 7, 114, 12\n    CONTROL \"Re&amp;place with:\", -1, \"static\", WS_GROUP | SS_LEFT,\n            4, 26, 48, 8\n    CONTROL \"\", 0x0481, \"edit\",\n            WS_BORDER | WS_GROUP | WS_TABSTOP | ES_AUTOHSCROLL,\n            54, 24, 114, 12\n    CONTROL \"Match &amp;whole word only\", 0x0410, \"button\",\n            WS_GROUP | WS_TABSTOP | BS_AUTOCHECKBOX,\n            5, 46, 104, 12\n    CONTROL \"Match &amp;case\", 0x0411, \"button\",\n            WS_TABSTOP | BS_AUTOCHECKBOX,\n            5, 62, 59, 12\n    CONTROL \"&amp;Find Next\", IDOK, \"button\",\n            WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON,\n            174, 4, 50, 14\n    CONTROL \"&amp;Replace\", 0x0400, \"button\",\n            WS_TABSTOP | BS_PUSHBUTTON,\n            174, 21, 50, 14\n    CONTROL \"Replace &amp;All\", 0x0401, \"button\",\n            WS_TABSTOP | BS_PUSHBUTTON,\n            174, 38, 50, 14\n    CONTROL \"Cancel\", IDCANCEL, \"button\",\n            WS_TABSTOP | BS_PUSHBUTTON,\n            174, 55, 50, 14\n    CONTROL \"Cancel\", 0x040E, \"button\",\n            WS_TABSTOP | BS_PUSHBUTTON,\n            174, 75, 50, 14\nEND\n<\/pre>\n<p>\nAs before, we didn&#8217;t explicitly say &#8220;DS_SETFONT&#8221; in the dialog&#8217;s\nSTYLE directive since that is implied by the &#8220;FONT&#8221; directive,\nand we took advantage of the fact that WS_VISIBLE is on by default.\n<\/p>\n<p>\nAnd you probably recognize this dialog from yesterday.\nIt&#8217;s the replace dialog from findtext.dlg.\n(Though it&#8217;s not exactly the same since the findtext.dlg template\nuses some shorthand directives like DEFPUSHBUTTON instead of manually\nwriting out the details of the button control as a CONTROL.)<\/p>\n<p>\nNext time:\n<a href=\"http:\/\/blogs.msdn.com\/oldnewthing\/archive\/2004\/06\/22\/162360.aspx\">\nThe 16-bit extended dialog template<\/a>, also known as DIALOGEX.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Okay, last time we talked about the 16-bit classic DIALOG template. This time, we&#8217;re going to talk about the 32-bit classic DIALOG template. There really isn&#8217;t much going on. Some 8-bit fields got expanded to 16-bit fields, some 16-bit fields got expanded to 32-bit fields, extended styles were added, and all strings got changed from [&hellip;]<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[2],"class_list":["post-38793","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-history"],"acf":[],"blog_post_summary":"<p>Okay, last time we talked about the 16-bit classic DIALOG template. This time, we&#8217;re going to talk about the 32-bit classic DIALOG template. There really isn&#8217;t much going on. Some 8-bit fields got expanded to 16-bit fields, some 16-bit fields got expanded to 32-bit fields, extended styles were added, and all strings got changed from [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/38793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=38793"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/38793\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=38793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=38793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=38793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}