|
We had a similar issue in that we needed to minimize, restore, or close the app from another application. So I wrote a DLL that had this section of code that has to this day worked great. I pass the name of the window that I want closed and it does the rest.
<br />
HWND hWnd;<br />
LRESULT lpResult;<br />
<br />
hWnd = FindWindow(NULL, winName);<br />
if (hWnd == NULL)<br />
{<br />
return 0;<br />
}<br />
lpResult = DefWindowProc(hWnd, WM_SYSCOMMAND, SC_CLOSE, NULL);<br />
if (lpResult == NULL) return 0;<br />
<br />
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Passing the window title isn't quite safe as there can be other windows with this name, e.g. other instances of the app.
To be safe against coincidences, it's much better to use HWND.
PS. This is one thing why I respect learning pure API first, then MFC or other interface libraries, and encourage my brother to do so . You know exactly what you do and what is behind the MFC classes.
|
|
|
|
|
That is true AND false
I've been learning pure API since I started programming, and using libs like MFC when I need things up and running fast. The fact is, there is no way to know what is going on with MFC because the documentation LIES, the source code they provide LIES and there are dozens of GOTOs (!!!) inside it! Please guys, raise a hand the ones who use GOTOs (and don't work at Microsoft...).
Yes, I'm a little bit disturbed, but that's the result after working since long date with mfc... (the Microsoft Frustration Classes)
|
|
|
|
|
Ah...am I missing somthing here or do I not see that FindWindow returns an HWND????
If you really wanna make sure you have the right window you would have to know the window handle first and pass that to your app. or enum all the windows and decide from that which one is the right window. Other than that if you had 2 internet explorers up looking at the same website then you would not know which one to choose except by taking a look at the z-order and trying to determine which one has been up longer.
Fortunatly we know the windows title and know that they are unique, so this is why we can do a findwindow and close them the way I suggested.
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Has anyone come across this problem? I have a VC6 MFC app that I want to continue developing in VC.NET2003 I can build the project and Intellisense works and all that, but when I want to add a new MFC class using the Class Wizard, It complains that I can only add an MFC class to an MFC project. Any ideas/solutions?
thanks
|
|
|
|
|
Hi,
I have a layered window which I'd like to only display when the user is viewing the desktop.
I've tried setting the parent style to the desktop handle (GetDesktopWindow()) and to set its z-order to SWP_BOTTOM but somehow none of this has the desired effect
I only want to display the window on the desktop, not anywhere else.
Does anyone know of some specific tricks to achieve this?
Cheers,
|
|
|
|
|
hm. u must understand that map is not a simple vector - its a structure with 2 or more values in a carriage. read more on std::map in MSDN.
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
I want to copy the text as well as image bmp to be copied and to another RichEdit Control from one RichEdit Control on button pressed .The text data is going but image is not going.
pls help me
Learner always
|
|
|
|
|
how can i create calculus functions using c++
|
|
|
|
|
simple answer : yes.
There are no build-in calculus functions in C++.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Book:
NUMBERICAL RECIPES in C Th Art of Scientific Computing
Cambridge University Press
ISBN 0-521-35465-X
Is probably they place to start if you plan on writing your own; Otherwise you'll need to find and purchase a library (recommended).
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
Hi,
I need to open a file and appened to it later, from some reason, it get's overwritten, here is the most simple code....
<br />
<br />
CStdioFile log_file (_T("file.txt"),CFile::modeWrite |CFile::modeCreate |CFile::typeText);<br />
log_file.WriteString("123\n");<br />
<br />
CStdioFile log_file (_T("file.txt"),CFile::modeWrite |CFile::typeText |CFile::modeNoTruncate);<br />
<br />
log_file.WriteString("456\n");<br />
end result in the file is always "456".
Why????
|
|
|
|
|
try to use retrived handle in fopen function with a+ flag instead of recalling constructor
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
I don't want to use fopen etc....
The reason why I started using CStdioFile is because Visual Studio .NET did not support the <fstream.h> anymore
|
|
|
|
|
use CreateFile!?
it always help me with)
4apai
There're no impossible tasks. There're tasks that required infinite period of execution time.
|
|
|
|
|
CFile::modeNoTruncate Combine this value with modeCreate. If the file being created already exists, it is not truncated to 0 length. Thus the file is guaranteed to open, either as a newly created file or as an existing file
Artificial intelligence is no match for natural
stupidity.
|
|
|
|
|
So....
You suggest to change the second time I open the file to:
<br />
CStdioFile log_file (_T("file.txt"),CFile::modeWrite |CFile::typeText ||CFile::modeCreate |CFile::modeNoTruncate);<br />
I already tried that, just like the the microsoft site say, still no change, this is crazy, I know.....
|
|
|
|
|
Ah yes... stupid of me... you have to SeekToEnd() before you write again
Artificial intelligence is no match for natural
stupidity.
|
|
|
|
|
Here's whay I do and it works everytime.
<br />
CStdioFile myFile;<br />
myFile.Open (FileName, CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate, NULL);<br />
myFile.SeekToEnd();<br />
myFile.WriteString (strLSbuf);<br />
myFile.Close ();<br />
I think the problem you are running into is that you are not first placing the cursor to the end of the line then writing out your string.
So when you do an open on the file, the cursor is placed at the beginning of the line and you overwrite your existing data.
Hope this help
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
AAAAAnnnndddddd.... we have a winner !!!
Thanks a lot.
When I worked with ofstream, and use the ios::app flag it was done by default I guess.
Have a great day.
|
|
|
|
|
Hi all:
I have the declaration like this:
CString strTM
std::map<int, std::string> TMMap;
TMMap[0] = "Readed";
But when I access through the key value like this
strTM= TMMap[0];
the compiler give me a error Message like this
"binary '=' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char="">"
Why? How can I fix this problem.
|
|
|
|
|
Hi All,
I have a Dialog with a text box. I want to draw some drawing in the Editbox using GDI ( Say simple lines using LineTo() and MoveTo() ). Can anyone help me what should i do for that.
Thanks in Advance.
|
|
|
|
|
1)You can derive a class from CEdit and Handle OnPaint(). You will have dc their. YOu can use it to draw like dc.MoveTo() - dc.LineTo().
2)Or you can call CDC* pDC = CEdit.GetDC();
pDC->MoveTo(), pDC->LineTo().
If you have faith in the cause and
the means and in God, the hot
Sun will be cool for you.
|
|
|
|
|
DELIVER THE PROMISE wrote:
Or you can call CDC* pDC = CEdit.GetDC();
pDC->MoveTo(), pDC->LineTo().
Thanks man . That is easy to follow and working.
|
|
|
|
|
Hi,
Pls guide me the way to find a Active or Highlighted or Default Button in a given Window.
Or atleast need to enumerate all controls/buttons in a given window .
Thks,
Sureei
|
|
|
|