|
I've created the default "hello world" program (console type program). The program works ok in VC++, but it doesn't as a stand alone. The program closes as fast as it opens (this is the release .exe stored in "My Projects"). I've tried various suggestions (such as adding "_getch()," etc...but I shouldn't have to do any of that. The program works in VC++ but not in the final released version. ANybody have any ideas?
Thanks
|
|
|
|
|
Console applications are applications that send all of their output to the console screen "stdout". When executing the program from an icon, windows will create a "command prompt" window for you, but upon completion of the program, the command prompt window will close. This is standard behavior.
If you want your program to maintain the command prompt window on it's own, add something to prevent the termination of the program. A getch() does the trick, as the program will not terminate until it gets some keyboard input from you. But when the program does termninate, the window closes. UNLESS you've set it in windows that command windows remain open.
The workaround, is to open your own command prompt window, and execute your program by typing the program name at the command prompt. This window will not close automagically.
OR change your program so that it is no longer a console application, and is a full fledged windows program with a real window.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
Santa Cruz Networks
|
|
|
|
|
Yes, I am trying to open it on the desktop. I was also trying to open another screen. I was thinking that the program should work by itself in windows since it works in VC++. I'm not sure how to bring up the DOS box you mentioned, I'm using Windows 2000 Pro.
Thanks, Dave
|
|
|
|
|
Start -> Run -> Cmd [enter]
You will have to manually navigate to the current directory where your program lives...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
Santa Cruz Networks
|
|
|
|
|
Here's a a really simple way of solving your problem.
Add the following code to the end of your main() function:
system("pause");
That's it. Now, instead of disappearing, your console window should display the message "Press any key to continue..." when running as a stand-alone.
The system("") functions allow you to add any DOS command to your program. For example, you could use system("cd") or system("exit") for various purposes.
Good luck, and remember to keep it simple.
|
|
|
|
|
Or you can put this at the end of your main():
int a;
cin >> a;
Your application will stay open until the user preses enter!
|
|
|
|
|
@yashraj1215: I do not want to criticize your answer, but do you know if it also works on a system that is not based on DOS anymore, such aus Win XP? I've got 98SE and imagine it to work, but does XP accept those DOS system calls?
@Scolinks: What if the user enters something like "n" or "No, no, no!!!!!!"? Although it might work (I've compiled a test program, run it & got no errors), maybe it's just luck that this is accepted?
|
|
|
|
|
|
Unicode is the super character set -- it represents every character in the world (kinda)... it does so with "characters" that occupy 2 bytes each.
Check out officialy UNICODE website, and this page which explains UNICODE in every language:
http://www.unicode.org/standard/WhatIsUnicode.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
Santa Cruz Networks
|
|
|
|
|
Someone told me that I the reason I need to go in VC++ to "project/settings/links/output/entry-point" and enter wWinMainCRTStartup is because I'm using UNICODE. I'm lost on this. Could someone please explain.
Thanks
|
|
|
|
|
What was your original problem? This wasn't the link error to WinMain@16?
What version of VC++ are you running?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
Santa Cruz Networks
|
|
|
|
|
Yes, that's the exact probelm I was having.
|
|
|
|
|
What version of VC++ are you using?
Winmain@16 -- I think this is the expected entrypoint of a 16-bit windows program. It sounds like you are on a much older version of VC++ than the rest of us.
Anyhow -- make sure that your linker settings are for a console application, and there's no mention of windows.
How did you create your project file? Did you start a new one? OR did you cannibalize another one to get yours?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
Santa Cruz Networks
|
|
|
|
|
I'm using VC++ 6.0. I started a NEW project. Is there a way to download updates for VC++, I didn't see any update buttons in the program. Thanks again, I'm trying to get used to VC++.
|
|
|
|
|
updates? They should be available on the web. I've always had the benefit of the MSDN, so I am not sure where to find that. But I bet the downloads section on www.microsoft.com is a good place to start.
Let me get this straight. You create a new project, with the default settings, as a "win32 console application", and you get this problem? The new project dialog should come up and give you a multitude of choices.....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
Santa Cruz Networks
|
|
|
|
|
|
<br />
DWORD dw = 0;<br />
CRegKey rk;<br />
rk.Open(HKEY_CLASSES_ROOT,".txt");<br />
rk.QueryValue(dw,"(Default)");<br />
rk.SetValue("wordpad.exe","(Default)");<br />
rk.Close();<br />
The above code has no error but does nothing.
What should I change in my code to set the file extenxtion's associate.
In this example,use wordpad.exe when printing .txt files.
|
|
|
|
|
Hi,
I kniow the name of the registry parameter I want to read,
But....
How do I read it in MFC ?
Shay
|
|
|
|
|
http://www.codeguru.com/forum/search.php?s=&action=showresults&searchid=636677&sortby=lastpost&sortorder=descending
|
|
|
|
|
|
Ok, so a few years ago, someone posted an Onscreen Keyboard here that was written in MFC, and it typed text into other windows by grabbing the handle under the top window in the zOrder, and sending keystrokes using keybd_event() to the handle. It works, except not well. If you try it in IE, for instance, when you click out of the window and back in, the text comes back as selected, so you can't type more than one character, because when you give focus back, the character is selected, then you send the keystroke, and the character is overwritten. Does anyone here have any ideas how to make it so you click on the keyboard, but the edit control never loses focus?? Seems like a lot to ask, but there are a lot of keyboards that do this out there...
|
|
|
|
|
Try setting a WH_CBT hook to trap any focus changes, and prevent the focus changing to the keyboard window. Look at the documentation for SetWindowsHookEx() and CBTProc() . You'll need to check if the hook is being called because of a focus change (nCode == HCBT_SETFOCUS) and prevent the focus change (by returning 1) if the window handle (the wParam value) represents the keyboard window.
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
I am working on an application that works like a text editor, but includes special objects that, when clicked, display a selection of text with which it will replace itself. The app uses rich edit, of course (MFC). I doubt activex will work here, and even if it will, I can't figure it out, so if that is the answer, I will need help.
What I originally did was use the control's protected formatting to seperate those objects from the rest of the text, and used the object's protected text as its name to keep track of it (aka, the object 'objObject' would read objObject in the text). That worked well, till I realized that when I select something to display (when in the mode that does that), I lose track of its identifying text. I have to keep track of which object is which, since it manages the behavior of the object (of course).
Since I am going to be changing the text, I cannot rely on that. I attempted to extend the CHARFORMAT structure with my own variable, so that I could keep track myself, but to no avail (perhaps I did it wrong - anybody else gotten that to work?). I also tried using CHARFORMAT2, but I didn't get that working either.
Any ideas? Thanks.
Fight till it kills you.
|
|
|
|
|
Perhaps a better question is, how do I create my own formatting?
Fight till it kills you.
|
|
|
|
|
Paul Frazee wrote:
how do I create my own formatting?
With great difficulty. The Rich text control doesn't support custom drawing/formatting. Practially the only way you can do it is to rewrite the control from scratch. That's one of the things I'm in the process of doing at the moment, although I haven't done much yet.
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|