{"id":1033,"date":"2014-05-09T07:00:00","date_gmt":"2014-05-09T07:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2014\/05\/09\/when-was-the-wm_copydata-message-introduced-and-was-it-ported-downlevel\/"},"modified":"2014-05-09T07:00:00","modified_gmt":"2014-05-09T07:00:00","slug":"when-was-the-wm_copydata-message-introduced-and-was-it-ported-downlevel","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20140509-00\/?p=1033","title":{"rendered":"When was the WM_COPYDATA message introduced, and was it ported downlevel?"},"content":{"rendered":"<p>Gabe wondered <a href=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/archive\/2012\/10\/19\/10360980.aspx#10361251\"> when the <code>WM_COPY&shy;DATA<\/code> message was introduced<\/a>.\n The <code>WM_COPY&shy;DATA<\/code> message was introduced by Win32. It did not exist in 16-bit Windows.\n But it was there all along.\n The The <code>WM_COPY&shy;DATA<\/code> message was carefully designed so that it worked in 16-bit Windows automatically. In other words, you retained your source code compatibility between 16-bit and 32-bit Windows without having to do a single thing. Phew, one fewer <a href=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/archive\/2012\/09\/13\/10348876.aspx\"> breaking change between 16-bit and 32-bit Windows<\/a>.\n As Neil noted, <a href=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/archive\/2012\/10\/19\/10360980.aspx#10361367\"> there&#8217;s nothing stopping you from sending message <code>0x004A<\/code> in 16-bit Windows with a window handle in the <code>wParam<\/code> and a pointer to a <code>COPY&shy;DATA&shy;STRUCT<\/code> in the <code>lParam<\/code><\/a>. Since all 16-bit applications ran in the same address space, the null marshaller successfully marshals the data between the two processes.<\/p>\n<p> In a sense, support for the <code>WM_COPY&shy;DATA<\/code> message was ported downlevel even before the message existed! <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gabe wondered when the WM_COPY&shy;DATA message was introduced. The WM_COPY&shy;DATA message was introduced by Win32. It did not exist in 16-bit Windows. But it was there all along. The The WM_COPY&shy;DATA message was carefully designed so that it worked in 16-bit Windows automatically. In other words, you retained your source code compatibility between 16-bit and [&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-1033","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-history"],"acf":[],"blog_post_summary":"<p>Gabe wondered when the WM_COPY&shy;DATA message was introduced. The WM_COPY&shy;DATA message was introduced by Win32. It did not exist in 16-bit Windows. But it was there all along. The The WM_COPY&shy;DATA message was carefully designed so that it worked in 16-bit Windows automatically. In other words, you retained your source code compatibility between 16-bit and [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/1033","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=1033"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/1033\/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=1033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=1033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=1033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}