|
I'm adding dynamically several pages in a Propertysheet, but when the tabscontrols are on more than one line the sheet doesn't inflate automatically.
What can I do?
Natacha
|
|
|
|
|
Does anyone know if there is any way to easily format the contents of a messagebox? Or maybe just format a CString to be a specified number of columns wide.
Now I first have to create a CString and use the Format method on it to fill it with text, values and new lines. But since I'm never sure about how much space the values take it's hard to format the text to look good in the messagebox. What I'm looking for is a way to insert newlines automatically at runtime. Is there any simple way to do this?
Thanks!
|
|
|
|
|
Hi..
Use, the tab "\t" and "\n" with CString to solve this problem. See the sample given below.
CString str;
str.Format("Rejeesh\tRamesh\tRanjit\nRejeesh\tRamesh\tRanjit\nRejeesh\tRamesh\tRanjit");
AfxMessageBox(str);
|
|
|
|
|
I don't think it's worth the trouble - the font displayed in the msgbox can be different on different machines; the maximum width of msgbox depends on screen resolution, etc.
You'd have to get the font metrics and compute widths 'manually'. And it's plain impossible to get pixel-perfect columns this way - inserting spaces doesn't give you this level of control.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
Thanks for your answers. I'm afraid I was a bit unclear though. What I would like is to specify the desired width of my messagebox and then the program should take care of word-wrapping for me.
I guess you thought I wanted to line up data in columns. When I read my first post again I can see that I was a bit vague about what I was looking for.
So, let's say I have a string like this:
"This is a long string that's supposed to be in a messagebox. It contains some values of unspecified length, for example 1.23456789 and John Doe"
Then it would be nice to just tell my messagebox that this string should be divided over several lines where no line would be more than say 40 characters, or 400 pixels, or something like that.
Is there any support for this in MFC, or would I have to write my own messagebox class? Or a new string class? It probably wouldn't be very difficult, but I'm not sure it would be worth it. Well except for the fun of it.
|
|
|
|
|
Then it would be nice to just tell my messagebox that this string should be divided over several lines where no line would be more than say 40 characters
So you just need to scan the string and insert newlines at appropriate positions - probably replacing spaces between words. You don't need new class for that - a function will be enough.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
You're right, I don't need a class for that. A function should be able to handle it.
Thanks for your help!
|
|
|
|
|
Can someone enlighten me as the significance of the Const keyword, when used in terms on const char * or LPCSTR etc. I have never understood what it does...
Regards
Ray
"Je Suis Mort De Rire"
|
|
|
|
|
it means that a variable is constant. ie unchanging.
|
|
|
|
|
The "const" keyword is a compiler directive which tells the compiler that the variable following const will not be changed by the code which executes against it. It can improve performance because the compiler can make better decisions about how to handle data passing, etc. The most signifigant benefit (that I am aware of) to using const is in parameter passing.
void SomeFunction(int iValue, char* pszValue);
This function declaration just tells the comiler that it needs an integer and a pointer to a char. If this function is called from anywhere in the app, the compiler must insure that the iValue is a copy from the calling function and that char* pszValue is a changeable value.
void SomeFunction(const int iValue, const char* pszValue);
With this version of the function declaration, the compiler assumes that it can just pass the parameters in the most effecient manner possible and does not need to deal with determining if the calling procedures version on iValue of pszValue where const or not, nor does it have to allocate a new int for the iValue paramater.
I should include here that the const keyword is a hint to the compiler, but it is possible (although very dangerous) to cast a const to a non const.
char* pszTemp = (char*)pszValue);
|
|
|
|
|
if you have a function like:
void foo(LPCSTR s)
{
}
unlike
void foo(LPSTR s)
{
}
In the first function the caller knows that you dont change the value of the pointer within the function, in the second function you never know, unless you have the source for the function...
Also if you do embedded programming a const value can stay in ROM where a non-const value have to be moved to RAM.
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
Cool,
Thanks for the explaination, funny I have gone all this time without knowing that.
I had a look at CESoftware.dk, you seem to devote most of your CE Programming Skill to developing games. I do alot embedded development myself (I am the King of Unaligned Data Access Exceptions) and I spend most of my time developing Form to Database applications.
I have often felt what CE and other Mobile Platforms lack is a Interface to Database Scripting Language. Something really high level (even higher than embedded VB and faster). That would parse a script from which it would generate a user interface and read/write a datasource. A rough idea only ...
For Example it could look something like this:
FORM FORM1(0,0,240,160, \\Storage Card\\DataSource.cdb)
TREEVIEW TREEVIEW1(10,10, 200, 150, SELECT * FROM CUSTOMERS)
BUTTON BUTTON1(210, 130, 230, 150, "Ok")
FORM_INITALISE
END FORM_INITALISE
FORM_ONBUTTON1CLICK
SQL DELETE * FROM CUSTOMERS
CLOSE FORM1
END ONBUTTON1CLICK
END FORM
Regards
Ray
"Je Suis Mort De Rire"
|
|
|
|
|
The database_interface_thing you describe would be a cool application IMHO.
I just think it would take a lot of time to develop.
Do you think people would by it?
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
It would be a great RAD tool, not very useful perhaps for serious development but if you needs a small app or a demo app it would be excellant. I estimate development time for this at about 4 months.
Petty my time is booked up for this forseeable future
Regards
Ray
"Je Suis Mort De Rire"
|
|
|
|
|
First of all, apologises for my english.
An important point in declaring a const data type is that its placed in the .rdata section (for only reading data) wich is much better than using an object because it'd be stored in .bss section, in the swapping file (at least partially). This is true for integral data types and structures declared as const data types.
So if you think you'll need a value that will remain unchanged it's more efficient to use a const data type.
That's all!
|
|
|
|
|
Hello,
We have a problem with Windows 2000 Professional and Visual Studio 6
Enterprise Edition since we had installed the Windows 2000 Service Pack
2.
The main problem is that the system is rebooted a lot of times while
we are compiling and linking our code; when this happens, some of the
code files are modified with binary data or HTML data, and this causes
the lost of work ...
We tested that this happens with spanish and english versions.
How can we solve this problem? Is there any patch to solve this?
Thanks in advance,
Fernando.
P.S.: Could you answer to my e-mail account? Thanks.
|
|
|
|
|
Does anyone know how to use the paragraph style PFA_JUSTIFY in RichEdit 2 or 3 ?
Further more I would like to know, if it is possible (and how it works)to insert Soft - Line - Breaks and Page - Breaks.
I tried to stream in the RTF Tags but they are not accepted.
|
|
|
|
|
Has anyone out there used Billg's #pragma warning switch in a **large** VC++ project? We're gradually replacing MFC data structures with STL ones in an existing MFC-based project and like (I presume) everyone else we want to suppress the compiler warnings generated by the STL headers (especially the infamous 4786).
Sticking in some #pragmas would seem to be the way to go (as the samples in the MSDN do) but whereever I put them I find that some of the "disabled" warnings are still generated. Perhaps this indicates a problem with my understanding of how C++ source code is compiled.
I would have thought that each individual #pragma switch would apply to the translation unit(s) in which it appears. That is, if we have the appropriate #pragma switch at the top of "fred.cpp", the warning(s) would be disabled during the compilation of that unit, including during the compilation of all #include-d headers and the expansion of templates required by the unit. Also if we put the #pragma switch in "fred.h" and #include-d that in "barney.cpp" as well, the #pragma would be in effect during the compilation of both fred.cpp and barney.cpp.
At this stage I have two questions: 1) Is the above paragraph correct and 2) if so, does MSVC++ actually do it properly? If the answer to both questions is "yes" I'll know to go back and look more closely at why this is not happening in our project.
Tony
|
|
|
|
|
I would have thought that each individual #pragma switch would apply to the translation unit(s) in which it appears.
False. The compiler would have to perform additional pass just to find #pragma.
#pragma warning should appear before code that causes warnings. If you're #including STL headers in stdafx.h, put the #pragma at the top.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
You could also push the warning level to 2 before including the STL headers, then pop it back again after the includes...
#pragma push and pop
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
How I can get m_viewList from MainFrame window class.
I call GetFirstView(). But it genaret error.
Please Help me.
|
|
|
|
|
GetActiveFrame ->GetDocument -> GetFirstViePos GetNextView
|
|
|
|
|
A Question About Asynchronous Property
I use a asynchronous property in my ActiveX control to implement the background of my control.
In the "OnDraw" function, I use the following tactic:
if(GetReadyState()==READYSTATE_COMPLETE)
{
//draw with the background picture
... ...
}
else
{
//draw without the background pictrue
... ...
}
In the "OnDataAvailable" function:
I check the status. If the status is "BSCF_LASTDATANOTIFICATION", I will set the status of the control to "READYSTATE_COMPLETE" and force the control to redraw itself(invalidaing the control).
In the "Set" function of the property:
I just use the function "SetModifiedFlag".
My Question is:
If I changed the value of the asynchronous property, can the background of the picture redraw automatically? Shall I add a statement to reset the status in the "Set" funtion of the property?
Thanks.
Maer.
|
|
|
|
|
Hi there,
I have a dialog box class that is suppose to show various kinds of messages. The reason I don't want to use MessageBox is because I like to have a more colorful message box.
I was wondering how I can adjust my dialog box to handle varying sizes of strigs?
|
|
|
|
|
Look at TcxMessageBox on this site.
|
|
|
|