Problem displaying CStatic text item
-
I have to ask, are there reasons why you can't use the resource editor to add the CStatic control, as opposed to using ptr = new CStatic?
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
I have to ask, are there reasons why you can't use the resource editor to add the CStatic control, as opposed to using ptr = new CStatic?
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
I am connecting via Tcp/ip CAsyncSockets to another computer the information I receive will be displaed in the CStatic
But the dialog and display controls in it don't care where the data comes from. Typically (at least for me), when I build a dialog using the resource editor, I place a static control on the dialog, just like I place edit boxes, list boxes, etc. I then create a variable associated with that static control (typically using a wizard), the variable could be a CString type or a control type. If I use a CString type variable, I use UpdateData(), if I use a control type variable I use SetWindowText() and that's about it. Seems like you might be making it unecessarily more complicated.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
But the dialog and display controls in it don't care where the data comes from. Typically (at least for me), when I build a dialog using the resource editor, I place a static control on the dialog, just like I place edit boxes, list boxes, etc. I then create a variable associated with that static control (typically using a wizard), the variable could be a CString type or a control type. If I use a CString type variable, I use UpdateData(), if I use a control type variable I use SetWindowText() and that's about it. Seems like you might be making it unecessarily more complicated.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
Thanks so much i am displaying z/OS (mainframe data on windows) I am mainframe programmer and its people like yourself that have helped me understand MFC So can I call Updatedata to initialize the CTEXT I am assuming no that I am not using a control but rather a variable it would be DDX_Text I might also add that I have Richeditctrl in the dialog I am displaying a storage area in the richedit And the static info are things like what storage area it came from like subpool Storage protection key I also noticed DDX_Text takes unit I would assume it converts it to CString before the display Thanks again
-
Thanks so much i am displaying z/OS (mainframe data on windows) I am mainframe programmer and its people like yourself that have helped me understand MFC So can I call Updatedata to initialize the CTEXT I am assuming no that I am not using a control but rather a variable it would be DDX_Text I might also add that I have Richeditctrl in the dialog I am displaying a storage area in the richedit And the static info are things like what storage area it came from like subpool Storage protection key I also noticed DDX_Text takes unit I would assume it converts it to CString before the display Thanks again
-
Hi. I am all sorts of issues displaying a text on my dialog so first let me say what's involved I have a CStatic ptr says CStatic *mytext I instintate this say mytext = new CStatic; The next few steps im not sure of the order So now I want to connect this CWnd object to my resource file Id in my DIALOGEX resource says its a CTEXT so I call UpdateData or CDialog::OnInitDialog which does that for me The DDX_control connects my CTEXT to mytext CWnd object next I do a mytext->SetWindowText however nothing appears within my CDialog Do first have to do SetWindowText before DDX_control if DDX_control initilizes the CTEXT with what text is in my text then maybe I do I have tried all sorts of methods including DrawText to display the text whitin the dialog but I get nothing displayed
ForNow wrote:
I have a CStatic ptr says CStatic *mytext
Why use a pointer? Just add:
CStatic mytext;
to your dialog's header file. Add an entry to your dialog's
DoDataExchange()
method like:DDX_Control(pDX, IDC_MYTEXT, mytext);
Then in your dialog's
OnInitDialog()
method, set the control's text like:mytext.SetWindowText(_T("Hello World"));
And that's it! No need for pointers, memory allocation, or messy calls to
UpdateData()
."One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
-
ForNow wrote:
I have a CStatic ptr says CStatic *mytext
Why use a pointer? Just add:
CStatic mytext;
to your dialog's header file. Add an entry to your dialog's
DoDataExchange()
method like:DDX_Control(pDX, IDC_MYTEXT, mytext);
Then in your dialog's
OnInitDialog()
method, set the control's text like:mytext.SetWindowText(_T("Hello World"));
And that's it! No need for pointers, memory allocation, or messy calls to
UpdateData()
."One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
Thanks in a related question if I wanted to change the font of the text I'm guessing I would do that in a the OnCtlColor would I use pWnd->SetFont (of course after I created a font) with CreateFontIndirect or would I use the pDC and do pDC->SelectObject Thanks
-
Sorry But my question is can I call UpdateData from anywhere or does it have to be from CDialog::Oninitdialig
-
Thanks in a related question if I wanted to change the font of the text I'm guessing I would do that in a the OnCtlColor would I use pWnd->SetFont (of course after I created a font) with CreateFontIndirect or would I use the pDC and do pDC->SelectObject Thanks
See the "Bold static controls" section of this article.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
-
See the "Bold static controls" section of this article.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
-
You are really helpful I am going to press my luck and ask the following if the variable was a CString using DDX_Text as per jeron1 would I then look to change The font in OnCtlColor Thanks Thanks
I do not know. In 23 years of using MFC, I've never used a
CString
as an interface to a static control. Give it a whirl and let us know how it works."One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
-
You are really helpful I am going to press my luck and ask the following if the variable was a CString using DDX_Text as per jeron1 would I then look to change The font in OnCtlColor Thanks Thanks
I can't imagine setting or changing the font color being affected by the type of variable (CString or CStatic)associated with the control.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
I can't imagine setting or changing the font color being affected by the type of variable (CString or CStatic)associated with the control.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
I was just looking to change the font of a control associated with a CString David's suggestion would work if I associated the control with a CStatic CWnd object Thanks
Another way could be like something shown here[^].
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
Another way could be like something shown here[^].
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
http://www.flounder.com/viewfont.htm[^] Would I need to implement WM_SETFONT WM_GETFONT as per this article
How often are you changing fonts? Once? if so just call SetFont(...) on the static control object in the OnInitDialog() handler and be done with it (make sure the CFont object is a member of the dialog class). After that you can call SetWindowText() whenever you want. Should be quick enough to try.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
How often are you changing fonts? Once? if so just call SetFont(...) on the static control object in the OnInitDialog() handler and be done with it (make sure the CFont object is a member of the dialog class). After that you can call SetWindowText() whenever you want. Should be quick enough to try.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment "Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst "I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
-
I agree the only things I was adding is the I have to add the message handlers to my CDialog derived for it work per day he article Thanks will try Tommrow