|
What you are likely experiencing is that the exit code has not really been set yet because diff.exe has not finished.
So after CreateProcess
add the code WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
The process handle will get signalled when the process exits and the exit code will then be valid.
Also, don't pass CREATE_DEFAULT_ERROR_MODE, but rather pass 0.
|
|
|
|
|
Not true!
look at the loop above
while (TRUE)
{
GetExitCodeProcess(piProcessInfo.hProcess, &dwExitCode);
if (dwExitCode != STILL_ACTIVE)
break;
else
Sleep(50);
}
I will try not to use CREATE_DEFAULT_ERROR_MODE, and pass 0.
|
|
|
|
|
Output redirection with > is part of the command interpreter, not the OS. You need to set the STARTUPINFO::hStdOutput accordingly to redirect output.
--Mike--
LINKS~! Ericahist updated! | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
Strange things are afoot at the U+004B U+20DD
|
|
|
|
|
I agree with you, but if i simply use
op = "diff.exe"
par = "1.txt 2.txt"
and not use the > for output (it is simply using the stdout)
i still get ExitCode 2 from the diff.exe proccess which means an error
any suggestions?
|
|
|
|
|
YaronNir wrote:
i still get ExitCode 2...
Which tells you exactly what the problem is - the program cannot be found. Prepend a path to diff.exe and the problem will go away.
|
|
|
|
|
I would like to place the OpenFileDialog in a specific spot on my dialog, but I can not do that because it's not a drop in control. I look for 3rd party freebies to no avail......any ideas
|
|
|
|
|
If you're saying that you just want to open the OpenFileDialog, you could drop in a button and handle opening it from there. Just an idea.
|
|
|
|
|
You have to customize the OpenFile Dialog template, not a trivial task. Look it up in MSDN.
Cheers
Steen
|
|
|
|
|
I've never overloaded the equality operator and am having difficulty finding example code in MSDN for doing so. I'm guessing it looks a little something like this:
<br />
bool CLASS_NAME::operator==( const CLASS_NAME & rhs ) const<br />
{<br />
}<br />
Is this correct or am I missing something?
________________________________________________________________________
The question "Do computers think?" is the same as "Can submarines swim?"
Signature Red Studios
Jeryth
|
|
|
|
|
Here is a way to do it
Class YourClass
{
public:
void operator=(const &YourClass c);
private:
int iNum;
CString szStr;
}
void YourClass::operator=(const &YourClass c)
{
iNum = c.iNum;
szStr = c.szStr;
}
Ask not what your application can do for you,
Ask what you can do for your application
|
|
|
|
|
Excellent example of an assignment operator overload. Unfortunately this was not what the OP wanted, he asked for a equality operator overload!
|
|
|
|
|
opps
about equality,your code looks ok...so there shouldn't be any problem
Ask not what your application can do for you,
Ask what you can do for your application
|
|
|
|
|
|
Your operator is correct !
|
|
|
|
|
Wow, got it right on the first guess. Thanks for the confirmation.
________________________________________________________________________
The question "Do computers think?" is the same as "Can submarines swim?"
Signature Red Studios
Jeryth
|
|
|
|
|
hi,
I have some tbbuttons with text only on my toolbar.
The code looks like
<br />
for(int s = 0 ; s < groups.size() ; s++){<br />
if (groups.at(s).IsVisible()){<br />
tbb[m].iBitmap = I_IMAGENONE;<br />
tbb[m].iString = m_wndToolBar1.GetToolBarCtrl().AddStrings(groups.at(s).GetGroupName());<br />
tbb[m].fsState = (m==0)?TBSTATE_CHECKED:0 |TBSTATE_ENABLED;<br />
tbb[m].fsStyle = BTNS_BUTTON|BTNS_CHECKGROUP|BTNS_SHOWTEXT;<br />
tbb[m].idCommand = IDM_FIRST_OPENGROUP + groups.at(s).GetGroupId();<br />
m++;<br />
}<br />
}<br />
m_wndToolBar1.GetToolBarCtrl().AddButtons(m, tbb);
<br />
m_wndToolBar1.GetToolBarCtrl().SetButtonSize(CSize(95,35));<br />
THIS last line i have to add so the text will be on my buttons. If i don't change the button size then the text is completely of the button (except for 1 pixel).
SO after changing, my button is 35 pixels high, but the text is completely on the bottom half of the button.
I just want to have small buttons (let's say standard size (22pixels)) but then my text isn't readable. How can i solve this?
greets,
tim635
|
|
|
|
|
I'm getting a C1001 error (internal compiler error) with the following console app:
#include <windows.h>
class blah {
public:
blah();
~blah();
} ;
blah::blah()
{
}
blah::~blah
{
}
int main( void )
{
return 0;
}
I know exactly where the error is (I somehow managed to forget the "()" after "blah::~blah"), but is anyone else seeing this compiler error on VC6 w/SP6? It took me long enough to find the true error...
Speaking of which, does MS still intend to release service packs or hotfixes for VC6 at this point in time?
|
|
|
|
|
Daniel Desormeaux wrote:
Speaking of which, does MS still intend to release service packs or hotfixes for VC6 at this point in time?
Like most things, unless data integrity is involved, it'll likely not get fixed. For a product that is roughly six years old, it does not make sense to make changes to it simply for the sake of making changes.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Is there the client still the king? )
SkyWalker
|
|
|
|
|
hello,
i have a problem i have been trying to solve for the last two weeks but i haven't even come close to finding a solution.
In my SDI app, i open a dialog through the document class by obtaining the view and opening the dialog:
<br />
POSITION pos = GetFirstViewPosition();<br />
G5GravFormVW * view = (G5GravFormVW *)GetNextView(pos);<br />
...<br />
m_gravureDlg.Create(view);<br />
m_gravureDlg.ShowWindow(SW_SHOW);<br />
m_gravureDlg.UpdateWindow();<br />
i then need to update the controls on this window through callback functions so i use:
<br />
if (AfxGetMainWnd()->GetForegroundWindow() != NULL)<br />
AfxGetMainWnd()->GetForegroundWindow()->SetDlgItemText(1033, "Ajout du fichier: '" + CString(object->GetFileName()) + "'...");<br />
if (AfxGetMainWnd()->GetForegroundWindow() != NULL)<br />
AfxGetMainWnd()->GetForegroundWindow()->UpdateWindow();<br />
It has been working fine for Windows 98, NT and 2000 but now with window XP, there's a problem: when i open another application (let's take for example Windows Explorer) on top of my app and then close or minimize the new app window to come back to my app's window, the window (dialog) i opened is not refreshed or redrawn anymore whereas it was before using Win XP. so it's impossible to follow the progress of my app!
i tried all the Window State and Update/Painting Functions, SetForegroundWindow (), Invalidate (), BeginModalState (), etc... but nothing is working.
thanks for ur help
|
|
|
|
|
Hola!
I´m making a small Windows Forms App. using VC++.net 2003.
Adding a "MessageBox" in the self generated code (the Form1.h - file) works fine, until I add my own header file to the project and include this new header file at the top of the "Form1.h" -file.
I get the error message:
error C2653:"MessageBoxA" is not a class or a namespace name.
Why this "MessageBoxA"?
What could be wrong?
thanks
doneirik
|
|
|
|
|
doneirik wrote:
Adding a "MessageBox" in the self generated code...
Are you adding your own MessageBox() function, or are you calling MessageBox() ? If the latter, why do this in a .H file?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
I´m callin MessageBox : MessageBox::Show("string");
I´m doing it in the self generated code simply because double-clicking e.g. an Button in the design mode, the method that handles this is placed in the Form1.h file automatically.
Don´t really need to have it there. Just trying to learn the basics now...
doneirik
|
|
|
|
|
MessageBoxA is the ANSI version of MessageBox (MessageBox is actually a macro that expands to MessageBoxA in ANSI builds and MessageBoxW in UNICODE builds). Apparently the compiler can't see the definition of MessageBoxA at the point of error. Perhaps you didn't include the correct header files in the correct order, or you may have unmatched #ifdef/#endif statements. Since it happens when you include your own header file I'd look in that for unmatched statements.
Disclaimer: I have never worked in VC++.net 2003, but the above applies to VC++ 6.0.
Cheers
Steen.
"To claim that computer games influence children is ridiculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
I've got these structs
struct node
{
string label;
node *next;
};
struct titleNode : public node
{
node *child;
};
template<typename typeOfData>
struct dataNode : public node
{
typeOfData *data;
};
I want to be able to traverse through something that might look like this:
title-title
|
node-title-node
|
node
An example function:
void traverse(node *start)
{
node *current = start;
while (current)
{
cout << current->data << endl;
current = current->next;
}
}
The line at PROBLEM1 won't work since data isn't a member of node . The line at PROBLEM2 works fine BUT I won't be able to reach any of a titleNode 's children of the same reason as PROBLEM1. So the question is: How do I now what to cast to? Can you find this out some way, I mean there actually IS a full titleNode with a child under start even if you can't see it through the start pointer?
|
|
|
|