|
|
Thanks a lot. This indeed solved my issue.
Regards,
William
|
|
|
|
|
ShellExecuteEx() would automatically open the associated program based on the file type.
|
|
|
|
|
I know you mean "execute" in a computing context, ie "run".
But I had a different picture when I saw your subject heading.
exe -> *Bang!*
txt -> *chop!*
doc -> *defenestrate!*
Iain.
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
|
|
|
|
|
Although there are definately certain files that I would gladly *kill*, *exterminate*, etc You are right in assuming that my question was intended to be boringly technical.
|
|
|
|
|
I'm coding a plotting app using coordinates data saved in a .txt file.
So I need access files in CDialog::OnPaint().
But it seems not to work coz I find the file pointer doesn't move though CFile::Seek() and
CFile::Read() are used.
Or could a while loop be in CDialog::OnPaint()?
modified on Tuesday, September 7, 2010 10:46 PM
|
|
|
|
|
Krauze wrote: So I need access files in CDialog::OnPaint().
I don't think so. OnPaint() may be called hundreds of times, when your window gets resized, maximized, restored, covered and uncovered by some other window, etc. So you should read the file once, beforehand, outside OnPaint(); store all the information in an appropriate data structure, and use that inside OnPaint().
|
|
|
|
|
In fact there're up to 30,000 coordinates.
So it's kinda terrible to store all of them in a particular structure at runtime.
|
|
|
|
|
why not use a CArray. store the complete set of values and then load the values dynamically
|
|
|
|
|
It's even more appropriate to store the data rather than to read the full file again. For your information, I wrote an article about a charting control, maybe you can have a look at it and use it instead of recreating your own (see my sig). It works fine with that amount of data.
|
|
|
|
|
Just in case the point is not sinking in.
30000 x CPoints = 30000 * 8 bytes = 234k = 1/4 Mb.
I think you can afford to use that much ram.
What you can't afford is disk access every time your application needs to paint.
Cedric's article is a good one - and can thoroughly recommend it.
Iain.
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
|
|
|
|
|
|
30000 coords 8 bytes each are less than half a megabyte. That's not a big issue!
Unless you think your file can be (in certain situations) millions of coords long!
But -if that's the problem- consider also that the screen doesn't have millions of points in a line, so it is very wasteful keep all those details during drawing, since nobody will never physically able to see them.
If that's the case, consider a design where your file is read in a vector that should not have much more than 10000 records, each of which takes the min, average and max value of a group of coords wide like the number of coords dived by the number of records.
At that point, during ON_PAINT, draw an area that for each of the three values, fills the space between the min and max and draw over it a line that follows the average.
2 bugs found.
> recompile ...
65534 bugs found.
|
|
|
|
|
Just a precision, your answer makes me wonder. You are not thinking about something like this are you ?
structure data
{
double XVal1;
double YVal1;
double XVal2;
double YVal2;
....
....
...
double XVal30000;
double YVal30000;
};
This would indeed be really really really horrible code and a good candidate for The Daily WTF[^]
|
|
|
|
|
Hi, dear all
I need to create a text file with each control at a line, in this line, it include control value, control name and description, the output should be as the following:
False Print - XXXXXXXXXXXXXXXXXXXXXXXXXX
2 Contrl 1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3.6 Control 2 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
23.8 Control 3 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0.005 Control 4 - XXXXXXXXXXXXXXXXXXXXXX
The problem is align the column 1, how can I align the decimal point at same position at each line, and prefix the heading as space? and the heading space number is changed according the value?
For example, for contrl 1 and control 2, the heading space is 3, but for control 3, it's 2.
I use something like:
value = Format(Contrl1, " 0")
Writer.WriteLine(value.PadRight(ValueFieldLen) & _
"Contrl 1".PadRight(ContrlFieldLen) & _
"- XXXXXXXXXXXXXXXXXXXXXXXXXX")
value = Format(Contrl3, " 0.0")
Writer.WriteLine(value.PadRight(ValueFieldLen) & _
"Control 3".PadRight(ContrlFieldLen) & _
"- XXXXXXXXXXXXXXXXXXXXXXXXXX")
In this way, the prefix spacing is fixed, this isnot I want.
Thanks!
|
|
|
|
|
VB???? What's that?
Once you agree to clans, tribes, governments...you've opted for socialism. The rest is just details.
|
|
|
|
|
Please, ask your question in the VB forum. This forum is for C++.
|
|
|
|
|
Hey everybody
I have the following code:
wstring curlocale1(::_wsetlocale(LC_ALL, NULL));
printf("+++ current locale: %s", curlocale1.c_str());
::_wsetlocale(LC_ALL, L"en_us");
wstring curlocale2(::_wsetlocale(LC_ALL, NULL));
printf("+++ current locale: %s", curlocale2.c_str());
and the output is:
+++ current locale: C
+++ current locale: C
I can't understand why my locale does not change, what am I doing wrong?
Thanks a lot!
|
|
|
|
|
Used correctly it works fine:
wstring curlocale1(::_wsetlocale(LC_ALL, NULL));
printf("+++ current locale: %S\n", curlocale1.c_str());
::_wsetlocale(LC_ALL, L"English");
wstring curlocale2(::_wsetlocale(LC_ALL, NULL));
printf("+++ current locale: %S\n", curlocale2.c_str());
It's time for a new signature.
|
|
|
|
|
Hey, thanks
But "English" doesn't return "English (United States)", but generic English.
Anyway, I found this GREAT article in codeproject that sort some things out, so I'm sitting on that
Windows SetThreadLocale and CRT setlocale[^]
|
|
|
|
|
Green Fuze wrote: But "English" doesn't return "English (United States)"
Try "English_US". I know locales sometimes seem far more complicated than necessary but there are many different combinations to account for.
It's time for a new signature.
|
|
|
|
|
It seems that "american_US" in ::setlocale and 1033 for ::SetThreadLocale() done the trick .
It is far too complicated than it should've been!
Thanks again!
|
|
|
|
|
Green Fuze wrote: Thanks again!
Thank you for leading me down yet another path of learning.
It's time for a new signature.
|
|
|
|
|
Locales are platform dependent. They're the most irritating bit of the C++ standard as they leave the likes of Redmond and the Penguin crowd to make the decisions. And they're usually different.
I'm not surprised that your code is going horribly wrong on another level - using printf %s with a wide character string is a recipe for printing the first character out if I've ever seen one.
Cheers,
Ash
|
|
|
|
|
I have an MFC program using CMFCToolBars. The toolbar settings are getting saved and read from the registry fine. However when I make changes to the toolbar, re-compile and run the program, it doesn't see these new changes unless I go into the registry and delete the HKEY_CURRENT_USER\Software\MyProgram\settings key. What should I be doing to keep this from happening?
Thanks
Ray
|
|
|
|