<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:168102616;
        mso-list-type:hybrid;
        mso-list-template-ids:1478129476 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:604074573;
        mso-list-type:hybrid;
        mso-list-template-ids:-793592324 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2
        {mso-list-id:1418138861;
        mso-list-type:hybrid;
        mso-list-template-ids:-793592324 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l2:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>I’ve been able to figure out a few workarounds for issues with ptcgraph,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>To prevent scaling and dropped pixels, I have come up with 3 workarounds, not ideal but they could work:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>Positon the window so the title is off the top of the screen with<o:p></o:p></li></ol><p class=MsoNormal>               SetWindowPos(Graphicwindow,HWND_TOP,-8,-31,0,0,SWP_NoSize);<o:p></o:p></p><p class=MsoNormal>               I cannot use maximize with this and the coordinates for the top left corner might be different on different machines.  <o:p></o:p></p><p class=MsoNormal>               I think my development computer is strange because of having 3 monitors<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=2 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>Leave the title bar on with the window sized correctly, but set my own variables to not use the bottom of the window which<o:p></o:p></li></ol><p class=MsoListParagraph>is off the screen so it looks right with<o:p></o:p></p><p class=MsoListParagraph> SetWindowPos(Graphicwindow,HWND_TOP,-8,0,0,0,SWP_NoSize);<o:p></o:p></p><p class=MsoNormal>                 WinMax_Y:=GetMaxY-31;  <o:p></o:p></p><p class=MsoNormal>               Then I use WinMax_Y instead of GetMaxY<o:p></o:p></p><p class=MsoNormal>               This has the same problem as option #1 in that the coordinates for the top left of the screen might not be the same on other machines<o:p></o:p></p><p class=MsoNormal>               I haven’t been able to find a really good solution to keeping the titlebar and having the window the right size and being able to use maximize. <o:p></o:p></p><p class=MsoNormal>               I think the only way will be for ptcgraph to create the window sized so maximized it fits completely on the screen with the titlebar and then report a smaller GetMaxY<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=3 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>Turn off the title bar, then reset the size of the window to be correct with:<o:p></o:p></li></ol><p class=MsoListParagraph>         SetWindowLongPTR(graphicwindow, GWL_STYLE, 0);<o:p></o:p></p><p class=MsoListParagraph>         SetWindowPos(Graphicwindow,HWND_TOP,0,0,GetMaxX+1,GetMaxY+1,0);<o:p></o:p></p><p class=MsoListParagraph>         ShowWindow(graphicwindow, SW_Maximize);<o:p></o:p></p><p class=MsoListParagraph>If you don’t want the titlebar then this is the best solution because the Maximize will make it fit properly on the screen regardless of <o:p></o:p></p><p class=MsoListParagraph>How it is configured.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The only other issue I am having is the problem where task switching with ALT-Tab causes the keyboard not to respond to ptccrt anymore.  I have narrowed this down a bit,  it’s NOT task switching in general that causes this, it’s specifically ALT-TAB that causes it.   I was also mistaken about it only happening with full screen, this happens all the time, no matter how the window is configured.  If I hit the windows logo key and task switch that way , there is no problem when I go back to the ptcgraph window, also if I get back to my console window with <o:p></o:p></p><p class=MsoNormal>         ShowWindow(ConsoleWindow,SW_show);<o:p></o:p></p><p class=MsoNormal>         SetActiveWindow(ConsoleWindow);<o:p></o:p></p><p class=MsoNormal>         SetForegroundWindow(ConsoleWindow);<o:p></o:p></p><p class=MsoNormal>And alt tab from the console window, then no matter what method I use to get back to the ptcgraph window, even alt-tab,  it’s no problem and ptccrt responds to the keyboard.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So that’s where I’m at with this.  It would be great if better solutions can be found for these issues.  The main thing for me is the ALT-Tab issue, especially if I go with option 3 above where I won’t have a minimize button.   Alt-tab is a really big habit because as I mentioned before, most of the computer I run this on don’t have a mouse attached.   If I could disable alt-tab from this window somehow, then at least I wouldn’t accidentally break keyboard response to the ptcgraph window, but I don’t know how I could do that either.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>James<o:p></o:p></p><p class=MsoListParagraph><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> fpc-pascal [mailto:fpc-pascal-bounces@lists.freepascal.org] <b>On Behalf Of </b>James Richters<br><b>Sent:</b> Wednesday, May 17, 2017 4:19 PM<br><b>To:</b> 'FPC-Pascal users discussions' <fpc-pascal@lists.freepascal.org><br><b>Subject:</b> [fpc-pascal] ptcgraph issues<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’m having a few issues with ptcgraph.  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The main issue is that it’s not correctly reporting the actual size of the available area to use inside the ptcgraph window.  It’s reporting my full screen resolution, but that amount of space is not really available due to the title bar.   The window that is generated is a 1919x1176 window, but it won’t fit on the screen due to the title bar, so I hit maximize, now it fits on the screen but it’s too small.   I generate my screen based off the GetMaxX and GetMaxY functions and my screen based on GetMaxX being 1919 and GetMaxY being 1199 should not fit inside a window that fills the screen but with a border around it and a title bar at the top, but it is being scaled down to fit.  This scaling is causing pixels to be dropped.   If I force GetMaxX and GetMaxY to be the correct numbers of 1919x1176 which is what the graph unit reports, It just leaves a gap at the bottom of the screen the same width as the title bar, and still scales the screen from 1919x1199 down to fit in the available space of 1919x1176 making some pixels drop.    I have tried maximizing the screen with ShowWindow(graphwindow, SW_Maximize); before I use GetMaxX and GetMaxY, but they still report the full screen size.   <o:p></o:p></p><p class=MsoNormal> I can get the screen to look right with no scaling and no dropped pixels if I use SetWindowPos(Graphicwindow,HWND_TOP,-8,-32,0,0,swp_nosize); to position the window so the title bar is off the top of the screen,  but as you can see my X and Y coordinates are screwy… it’s something to do with my multiple monitors why top left is not 0,0  So I have no way of knowing what to set this to on any given system, so it’s not really a solution at all… it just proves what the problem is.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So I thought I would force it to be full screen, to see if I could prevent the scaling.. but that also has issues.  I figured if it looks right shifting the title bar off the top of the screen, then simply shutting off the title bar should fix it, but I could not get that to work either.  There are 2 ways I can get full screen without the title bar that I can think of.  I can just shut off all windows styles with    SetWindowLongPTR(graphwindow, GWL_STYLE, 0);   but this has the opposite problem,  If I draw a rectangle from 0,0 to GetMaxX,GetMaxY, I should get a rectangle that barely fits on the screen, but I don’t see anything because it’s way too big.  I have to draw a rectangle from 8,8 to GetMaxX-8,GetMaxY-8 to get it to fit on the screen.    However with this method of getting rid of the titlebar, I can taskswitch out and back in with no issues, my keyboard still works and if I taskswitch out, it just puts other windows on top of this, so I can always click on it to make it active again.  The scaling causes things to not look right.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If I get the full screen by setting fullscreengraph := True;  then it does seem to report stop scaling and now everything fits correctly on the screen, however… this has it’s own issues.   For some reason when I use this to obtain full screen, it does not task switch anywhere near as gracefully as using SetWindowLongPTR(graphwindow, GWL_STYLE, 0);    If I task switch to anything else, the graph window disappears completely, so now I have nothing to click on to get it back, and using ShowWindow() to get it back takes a very long time.  Then when I eventually get the window back, it no longer responds to the keyboard. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>James<o:p></o:p></p></div></body></html>