{"id":42543,"date":"2003-09-12T07:00:00","date_gmt":"2003-09-12T14:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2003\/09\/12\/why-does-the-taskbar-default-to-the-bottom-of-the-screen\/"},"modified":"2003-09-12T07:00:00","modified_gmt":"2003-09-12T14:00:00","slug":"why-does-the-taskbar-default-to-the-bottom-of-the-screen","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20030912-00\/?p=42543","title":{"rendered":"Why does the taskbar default to the bottom of the screen?"},"content":{"rendered":"<p>\nIt didn&#8217;t always.\n<\/p>\n<p>\nThe original taskbar didn&#8217;t look at all like what you see today.\nIt defaulted to the top of the screen and looked something like this.\n<\/p>\n<p>\n<img SRC=\"http:\/\/www.gotdotnet.com\/team\/raymondc\/0310.tabbar.png\" HEIGHT=\"49\" WIDTH=\"200\">\n<\/p>\n<p>\nThis is definitely not what it actually looked like.  It has\nbeen so long I forgot precisely what it looked like (I didn&#8217;t\nrealize there was going to be a quiz ten years later), but this captures\nthe basic flavor, at least for the purpose of this discussion.\n<\/p>\n<p>\nThe point is that the bar took the form, not of buttons, but of tabs.\nEach tab corresponded to a running window, which melded into the tab.\nYou switched window by clicking the corresponding tab.\n<\/p>\n<p>\nYou can see vestiges of this style in the <code>TCS_BUTTONS<\/code>\nstyle in the tab control.  When we switched to the button-look for\nthe taskbar, we still had a lot of switching code based on the tabs\nmetaphor, and it was less work to add a button-look to the tab control\nthan it was to rewrite all the switching code.\n<\/p>\n<p>\nThe tabbed look was abandoned for various reasons, one of which was\n<a HREF=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/\">\nwhat everybody else has already noticed<\/a>:\nIf you put the taskbar at the top of the screen, lots of windows\nend up sliding under it, because they assumed that the usable area\nof the screen began at (0,0).\nOther windows would &#8220;creep&#8221; up the screen because they used\n<code>GetWindowPlacement<\/code> to save their window position\n(which returns workspace coordinates, where (0,0) is the first\nusable pixel)\nbut use <code>SetWindowPos<\/code> to restore it (which uses\nscreen coordinates, where (0,0) is the upper left pixel of the\nprimary monitor).\n<\/p>\n<p>\nThere were too many apps that kept sliding under the top-docked\ntaskbar so we had to abandon that idea and move it to the bottom.\n<\/p>\n<p>\nIt&#8217;s somewhat disheartening to observe that now, eight years later,\napps still mess up their coordinate systems and keep sliding under\na top-docked or left-docked taskbar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The original taskbar didn&#8217;t look at all like what you see today. It defaulted to the top of the screen.<\/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-42543","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-history"],"acf":[],"blog_post_summary":"<p>The original taskbar didn&#8217;t look at all like what you see today. It defaulted to the top of the screen.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/42543","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=42543"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/42543\/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=42543"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=42543"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=42543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}