<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=utf-8"><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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 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;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
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;
        color:black;}
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;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle23
        {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:315383217;
        mso-list-type:hybrid;
        mso-list-template-ids:572402178 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:520364325;
        mso-list-template-ids:-1922238478;}
@list l1:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2
        {mso-list-id:1381319768;
        mso-list-template-ids:1244148716;}
@list l2:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
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 bgcolor=white lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>>Yes, you can do this, if you set:<br><br>>  FullscreenGraph := true;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I tried this and it does make a full screen graphics window without the windows title bar on top, which I like, however if I task switch out of the graphics window, then task switch back to it, my keyboard no longer responds via ptccrt.  I do this quite often, even launching things from within my program that I expect to be on top of it, for example I will launch a text editor and wait for it to be closed before my program continues.  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>For non-full screen use, are there any variable I can set that would specify the graph windows position on the screen, or force the window to be maximized?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I was able to switch back and forth to the ptcgraph window by doing the following:<o:p></o:p></p><p class=MsoNormal>  {$H+}<o:p></o:p></p><p class=MsoNormal><span style='color:windowtext'>   SetConsoleTitle(ConsoleTitle); //Change name of Console window so it’s not the same as the graph window<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'>   Sleep(60); //give windows some time to make the change<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'>   GraphWindow:=FindWindow(nil,Pchar(paramstr(0)+#0#0));  //Figure out handle for graph window with FindWindow()<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'>  // the following all work with the handle obtained for the ptcgraph window with the above method<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'>   setwindowtextA(graphwindow,GraphTitle); <o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'>   ShowWindow(graphwindow,SW_show);<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'>   SetActiveWindow(graphwindow);<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'>   SetForegroundWindow(graphwindow); <o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:windowtext'>It would be handy if GraphWindow was set to the ptcgraph window handle to make it compatible with the graph unit<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:windowtext'>Thanks for the help with this, I really appreciate it<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:windowtext'>James<o:p></o:p></span></p><p class=MsoNormal><span style='color:windowtext'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='color:windowtext'>From:</span></b><span style='color:windowtext'> fpc-pascal [mailto:fpc-pascal-bounces@lists.freepascal.org] <b>On Behalf Of </b>Nikolay Nikolov<br><b>Sent:</b> Tuesday, May 16, 2017 7:45 AM<br><b>To:</b> fpc-pascal@lists.freepascal.org<br><b>Subject:</b> Re: [fpc-pascal] FPC Graphics options?<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>On 05/16/2017 01:27 PM, James Richters wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p>> Hmm? But he only wants to change the title of the window. Even on Windows that should work from a different thread. However a platform independent SetWindowTitle() for ptcgraph would be rather useful I guess.<o:p></o:p></p><p class=MsoNormal>I did a quick test and ran one program that did a writeln of it’s handle, then put that handle in another program and ran it and I was able to change the window title of the first program with the second program.   So if ptcgraph also had the graphwindow : handle variable I think it would work.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>>Though I'd like to know why he needs ShowWindow()...<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>My application is purposefully designed not to use a mouse…  It’s CNC control software and mice, even optical ones out in dusty shops are tedious and difficult… it’s often difficult to even find a place to put a mouse, nevermind seeing a pointer when the screen is full of sawdust.   So I have keyboard commands that get me back to the console window where I can look at some things like the contents of some variables, then when I’m done I hit another key and it puts me back on the graphics window.   I just use both crt and pctcrt  and do things like crt.readkey and pctcrt.readkey to know which screen got the input.   I can get by without ShowWindow() because I can alt-tab between the windows without a mouse, and admittedly there isn’t a huge use for the console window, but it is a lot nicer for the program to put the correct window on top by itself.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>It would be nice if I could: <o:p></o:p></p><ol style='margin-top:0in' start=1 type=1><li class=MsoNormal style='margin-left:0in;mso-list:l0 level1 lfo3'>The above mentioned ShowWindow()<o:p></o:p></li><li class=MsoNormal style='margin-left:0in;mso-list:l0 level1 lfo3'>Make the graph window full screen always, it normally does not come up full screen it’s the correct size for full screen but mispositioned.. I can probably fix this in a shortcut that starts it but would be nice if the program itself forced full screen<o:p></o:p></li></ol></blockquote><p class=MsoNormal>Yes, you can do this, if you set:<br><br>  FullscreenGraph := true;<br><br>In the beginning of your program (before InitGraph). Tonight I'll also add the option for changing the title bar text, when in windowed mode.<br><br><o:p></o:p></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><ol style='margin-top:0in' start=3 type=1><li class=MsoNormal style='margin-left:0in;mso-list:l0 level1 lfo3'><o:p> </o:p></li><li class=MsoNormal style='margin-left:0in;mso-list:l0 level1 lfo3'>Get rid of the windows titlebar all together, I could just draw my own.   I was able to shut the title bar off with the graph unit, but the window would still be the size of the screen minus the bar.   I believe if the titlebar was defined to be shut off before the window was created, or shortly after then I could have completely full screen with no title bar. But I don’t know where or how the window is created to do that.<o:p></o:p></li><li class=MsoNormal style='margin-left:0in;mso-list:l0 level1 lfo3'>If I can’t get rid of the titlebar, then setting a custom window title would be nice, preferably after my program was running so I could put status information up there, but if not possible then a one time custom title bar name would be great.<o:p></o:p></li></ol><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>James<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><b>From:</b> fpc-pascal [<a href="mailto:fpc-pascal-bounces@lists.freepascal.org">mailto:fpc-pascal-bounces@lists.freepascal.org</a>] <b>On Behalf Of </b>Sven Barth via fpc-pascal<br><b>Sent:</b> Tuesday, May 16, 2017 2:00 AM<br><b>To:</b> FPC-Pascal users discussions <a href="mailto:fpc-pascal@lists.freepascal.org"><fpc-pascal@lists.freepascal.org></a><br><b>Cc:</b> Sven Barth <a href="mailto:pascaldragon@googlemail.com"><pascaldragon@googlemail.com></a><br><b>Subject:</b> Re: [fpc-pascal] FPC Graphics options?<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p>Am 16.05.2017 02:46 schrieb "Nikolay Nikolov" <<a href="mailto:nickysn@gmail.com">nickysn@gmail.com</a>>:<br>>> I also no longer have the 'graphwindow' handle variable so I had to comment out anything that was using it like<br>>><br>>> SetWindowTextA(graphicwindow,graphwindowtext);<br>>> And<br>>> ShowWindow(graphwindow, SW_SHOW);<br>>> So I just commented them out for now.    I'm hoping there is a way to get around the graphwindow variable because I was using the above 2 functions and I don't know how else to determine the graphic window handle... but the performance gain and ease of implementation will make working out any other issues worth the effort.  Any advice on how I can capture the graph window handle would be appreciated<br>><br>> Unfortunately, you can't do that and it's actually the main reason why ptcgraph is fast. Even if you modify the ptcgraph source, so that you get the window handle, it would do you no good, because the window is created in a different thread and this means that you cannot draw to the window from your program's thread. In fact, all the ptcgraph drawing routines actually render to an internal software buffer and issue no winapi drawing calls at all. That's the reason ptcgraph is fast and the regular graph unit is slow - the winapi drawing routines are really the bottleneck in this case and not the speed of the code, generated by FPC.<o:p></o:p></p><p>Hmm? But he only wants to change the tttle of the window. Even on Windows that should work from a different thread. However a platform independent SetWindowTitle() for ptcgraph would be rather useful I guess.<o:p></o:p></p><p>Though I'd like to know why he needs ShowWindow()...<o:p></o:p></p><p>Regards,<br>Sven<o:p></o:p></p><p class=MsoNormal><br><br><br><o:p></o:p></p><pre>_______________________________________________<o:p></o:p></pre><pre>fpc-pascal maillist  -  <a href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a><o:p></o:p></pre><pre><a href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a><o:p></o:p></pre></blockquote><p class=MsoNormal><o:p> </o:p></p></div></body></html>