|
Which message is used in CEDit to draw the text in the edit box?
I wish to draw my own text instead of the one used in CEdit.
Anyone?
Thanxs in advance
|
|
|
|
|
You should use WM_PAINT i.e OnPaint. Is there any special reason you are subclassing the window instead of writing a custom CWnd class?
|
|
|
|
|
i'm subclassing CEdit instead of CWnd class because i need to make an edit box, but don't it to be displayed the way CEdit does it. So i was thinking that subclassing CEdit would be easier then subclassing CWnd. I need to make some fanciful edit box. Not sure whether i'm correct on that.
OnPaint for CEdit does not seem to be "painting" the text.
I'm just a newbie.
Thanxs for the help.
|
|
|
|
|
If you only need to change the text font, size or color then you don't need to do any drawing.
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
Hi All,
what seems to be the problem of this code:
#include <string>
#include <iostream.h>
int main()
{
std::string str1="Hello World";
std::str2=str1.substr(6,5);
return 0;
}
I get an error "error C2039: 'str2' : is not a member of 'std'"
Thansk/Regards
Sidney
Thanks/Regards
Sidney
|
|
|
|
|
Sidney wrote:
std::str2=str1.substr(6,5);
should be
std::string str2 = str1.substr(6,5);
|
|
|
|
|
Hey Rama!
Thanks
|
|
|
|
|
One more quick question...
why is it I can's directly output the str2 using cout ??
std::string str1="Hello World";
std::string str2=str1.substr(6,5);
cout << str2;
I get this error: "error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char="">,class std::allocator<char> >' (or there is no acc
Thanks/Regards
Sidney
|
|
|
|
|
You should use iostream not isotream.h
#include <iostream>
not
#include <iostream.h>
Then you need to prefix cout with std::
std::cout << str2;
Rama Krishna
When I am near, do not fear
|
|
|
|
|
Oh I see... can I store the value of str2 in a new variable? can you show me on how to do this... I'm sorry I'm new in C++ I'm still studying.
I really appreciate your help =)
Thanks/Regards
Sidney
|
|
|
|
|
Yiur original code is right just prefixe cout with std::cout. I will work. Try and see
|
|
|
|
|
Yes it did... It's working now One last question... after this I'll let you go How can I pass the value of str2 in a new variable? example:
int main(){
char var[100];
std::string str1="Hello World";
std::string str2=str1.substr(1,5);
std::cout << str2;
//how shoud I transfer it to var variable??
var = ???(str2);
}
Thanks/Regards
Sidney
|
|
|
|
|
Correct way to do this is,
str2.copy(var, 100);
|
|
|
|
|
Thanks Rama!! your the base
Thanks/Regards
Sidney
|
|
|
|
|
Hi Everyone,
I need some help!!!
I have been retrieving my messages from the message queue in my thread using the GetMessage().
I've placed the message inside the MSG structure and retrieve the messaage contents by referencing msg.wParam. msg.wParam is an UINT value that represents the address of msg content, in this case, a dynamically allocated char * pointer.
After using this string, I wanted to deallocate the memory for this char *ptr, doing this.
delete (char *) msg.wParam;
It compiles but didn't work. As suspected, msg.wParam isn't a ptr, it's an address! So I tried this.
char *tmp;
tmp = (char *) msg.wParam;
delete tmp;
It compiles Same problem. So what can I do?
Everytime a new msg comes, the information in msg.wParam is rewritten. But I'm pretty sure that the memory allocation remains!
Any help on this problem is greatly appreciated! Thanks!
wilche
|
|
|
|
|
try
delete [] reinterpret_cast<char*>(msg.wParam);
|
|
|
|
|
John M. Drescher wrote:
delete [] reinterpret_cast(msg.wParam);
Oops I missed that in my reply. Thanks
|
|
|
|
|
Thanks! that works!
uh could you explain why it works?
greatly appreciated!
wilche
|
|
|
|
|
delete (char *) msg.wParam;
This deletes only 1 char not an array of char. Add [] to delete arrays. The reinterpret_cast<> is a c++ way of casting.
John
|
|
|
|
|
I need to set the number of scroll lines under Win98
Below is my code. Why it does not work ?
int m_nCur; //the number of lines
SystemParametersInfo(SPI_SETWHEELSCROLLLINES, m_nCur, NULL, NULL);
SystemParametersInfo(SPI_SETWHEELSCROLLLINES, m_nCur, NULL, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
I set the forth parameter 'NULL' but it doesn't work.
If set it 'SPIF_SENDCHANGE | SPIF_UPDATEINIFILE', the system hanged.
Why???
Or could you show me sample code??
|
|
|
|
|
Anyone tried setting the window origin with memdc?
It did'nt work for me.
It just seems to have shrunk the size of the subclassed static control.
Anyone managed to get this problem or solved it?
Thanxs
|
|
|
|
|
The origin of a DC is usually relative to the client area of its subclassed static control, not the window on which the control is displayed.
|
|
|
|
|
Yup, i understand the point.
However i'm not sure why the control seems to have shrunk after i called the SetWindowOrg. Since calling SetWindowOrg should not affect the size of the control
The control was much bigger as i can see from the color painted for the background of the control when memdc.SetWindowOrg was commented out.
Even a very simple example did'nt work out.
|
|
|
|
|
Perhaps this relates to the autosize feature of static controls. If you draw text that is smaller than the original text into a static, the control will size down to the size of the new text. This applies to both height and width. So "abc" is a smaller static than "abc def" and a size 8 font is smaller than a size 12.
|
|
|
|