|
Thanks for the help David.
What would you recommend in my situation. To have one for the group or one for each. I have such little experience with programming that I do not know which route to take.
I am still confused to how i can use it to have it check the radio buttons when the user brings up the menu item again. I keep gettng an assertion failure.
I do not need the settings to be saved for the next session. I just need it for when the app is run once.
thanks in advance.
|
|
|
|
|
Jay Hova wrote:
What would you recommend in my situation. To have one for the group or one for each. I have such little experience with programming that I do not know which route to take.
I am still confused to how i can use it to have it check the radio buttons when the user brings up the menu item again. I keep gettng an assertion failure.
Let's operate on the premise that one variable represents the entire group (two radio buttons in your case). If this variable is 0, then the first radio button in the group will be checked. If this variable is 1, then the second radio button in the group will be checked. See the pattern? If this value is set in the dialog's constructor, nothing else needs to be done. If this value is set in the dialog's OnInitDialog() method, a call to UpdateData(FALSE) will be needed.
Read here for some more details:
http://flounder.com/getdlgitem.htm#Radio%20button%20variables
Jay Hova wrote:
I do not need the settings to be saved for the next session. I just need it for when the app is run once.
Then the owner of the dialog instance should store the value. Is this an SDI or an MDI application?
|
|
|
|
|
David,
Thanks for your help....
I am going to read that site you provided now.
Going by what you wrote, can i check the radio button using SetCheck? I tried just setting the variable equal to one and it doesn't check either one....
Sorry for being so slow with this.
Its a MDI app btw.
many thanks...
|
|
|
|
|
Jay Hova wrote:
Going by what you wrote, can i check the radio button using SetCheck?
Yes, this assumes that you have one control variable per radio button. In the dialog's OnInitDialog() method, you'd have something like:
The m_first_radio_button and m_second_radio_button variables are of type CButton, not integer
if (0 == some_variable)
m_first_radio_button.SetCheck(BST_CHECKED);
else if (1 == some_variable)
m_second_radio_button.SetCheck(BST_CHECKED);
else
ASSERT(FALSE);
Jay Hova wrote:
I tried just setting the variable equal to one and it doesn't check either one....
This sounds like an entry is missing from the dialog's DoDataExchange() method, or you set the value in the wrong location.
|
|
|
|
|
David,
That is exactly as i was doing it in the OnInitDialog....
Perhaps I am doing something incorrect in the OnOk. How would i get the which one is selected by the user?
thanks again for all your help and patience with a mechanical engineer with no wit to program.
|
|
|
|
|
Jay Hova wrote:
Perhaps I am doing something incorrect in the OnOk. How would i get the which one is selected by the user?
if (xxx.GetCheck() == BST_CHECKED)
...
|
|
|
|
|
This is what i have in OnOk():
if(m_Screen_Radio.GetCheck() == BST_CHECKED)
m_SendTo = 0;
else
m_SendTo = 1;
where m_SendTo is a member variable of type int and m_Screen_Radio is CButton
|
|
|
|
|
What you've shown should work. Does it?
Now in the code that instantiates the dialog object, you'll need something like:
CMyDialog dlg;
dlg.m_SendTo = m_SendTo;
if (dlg.DoModal() == IDOK)
m_SendTo = dlg.m_SendTo;
Make sense?
|
|
|
|
|
I get an assertion failure with that code that I had....
You lost me however with what you wrote. I don't understand it. Where should I put that code? Please clarify if you can.
Many many thanks.
|
|
|
|
|
Jay Hova wrote:
I get an assertion failure with that code that I had....
See my previous comment about DoDataExchange() . Even though you have a CButton control variable, there must be an entry in DoDataExchange() for it. To verify, note the file/line of the fired assertion. If you then look at that code, it will most likely look something like:
ASSERT(::IsWindow(m_hWnd));
which means there is no window associated with the variable.
Jay Hova wrote:
You lost me however with what you wrote. I don't understand it. Where should I put that code? Please clarify if you can.
You previously mentioned that the dialog was being displayed as the result of a menu selection. I assume you already have a call to DoModal() in there. Correct?
|
|
|
|
|
I tried to implement the code you wrote, but i get an error saying that m_SendTo is an undeclared identifier.
The assertion failure is in afxwin2.inl on line 588....
Thanks again for your help.
Your patience is amazing!
|
|
|
|
|
Jay Hova wrote:
I tried to implement the code you wrote, but i get an error saying that m_SendTo is an undeclared identifier.
Right. You'll need to add this member variable to the appropriate class.
Jay Hova wrote:
The assertion failure is in afxwin2.inl on line 588....
As I predicted:
_AFXWIN_INLINE int CButton::GetCheck() const
{ ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0); }
|
|
|
|
|
David,
Sorry that you have to spoon feed me through this. I feel like such a moron because I can not grasp this concept. I really appreciate your help.
What do i have to put in DoDataExchange? Also by adding the member variable to the other cpp file, won't it over write the existing data in m_SendTo?
Thanks.
|
|
|
|
|
Jay Hova wrote:
Sorry that you have to spoon feed me through this. I feel like such a moron because I can not grasp this concept. I really appreciate your help.
Not a problem. The first few applications are always the hardest.
Jay Hova wrote:
What do i have to put in DoDataExchange? Also by adding the member variable to the other cpp file, won't it over write the existing data in m_SendTo?
I've never had to manaully add anything to DoDataExchange() . ClassWizard does it all for me (hint: use CW to create the member and control variables). By looking at that function, however, you can get a feel for what MFC might be doing.
Jay Hova wrote:
Also by adding the member variable to the other cpp file, won't it over write the existing data in m_SendTo?
I'm not quite sure I understand what you are asking here. Care to elaborate?
|
|
|
|
|
David,
Thank you for your help. I had to manually insert the control in DoDataExchange because after reading the article you linked me to earlier today, i ungrouped the second radio. It doesn't make sense to me, but it seems to be working right now.
Now to the next part of this app....
Many many thanks for your help, patience, and understanding. You are really a class act guy!
|
|
|
|
|
hi all
does ne1 know how i can convert a string into a date
i have an XML tag
<date_in>2003-08-13T09:26:24.7000000+01:00
but this brings the date back as a string,
what i need from there is the date in the format '2003-08-13'
as an actual date
does ne1 have ne ideas
thanks
si
|
|
|
|
|
it should be this
<date_in>2003-08-13T09:26:24.7000000+01:00</date_in>
|
|
|
|
|
this is what i come up with, if ne1 knows a better way pls let me know
thanks si
CString strTime2=strValue;
int val = strTime2.Find("T");
int len = strTime2.GetLength();
if (val > 0)
{
CString date = strTime2.Left(val);
CString time = strTime2.Right(len-val);
sct_dt.time = strTime2.Mid(++val,8);
CString year = date.Left(4);
CString month = date.Mid(5,2);
CString day = date.Right(2);
sct_dt.date = day+"/"+month+"/"+year;
}
|
|
|
|
|
Have you looked at COleDateTime::ParseDateTime() ?
|
|
|
|
|
Does that handle XML format dates, then? I knew it did dd/mm/yyyy or mm/dd/yyyy (based on locale). We've a local function to handle XML formatting with or without Thh:mm formats, but it doesn't yet handle offsets.
Steve S
|
|
|
|
|
Steve S wrote:
Does that handle XML format dates, then?
There's no such thing as XML format dates. XML is a way to organize data. It is not concerned with format or display.
If the first 10 characters of the string is always in the format you previously described, this should work:
CString str = "2003-08-13T09:26:24.7000000+01:00";
COleDateTime date;
date.ParseDateTime(str.Left(10));
|
|
|
|
|
Picky, picky...;)
I meant does it handle dates/times in the format commonly found in XML files, namely YYYY-MM-DD[Thh:mm:ss[.9999999[+/-hh:mm]]] (where the T may be replaced by a space), of course. This is often specified in schemas, such as GML as used by the UK's Ordnance Survey organisation. That's of particular interest to me, since I'm currently working for a company which writes GIS, mapping and location management systems.
The answer is no, in a single call, which is what I was trying to clarify, so thanks.
Steve S
|
|
|
|
|
I've tried a few different ways of using pbs_smooth for a progress control but when i do, i run into problems.
the first way i tried it is using progress_control.SendMessage(PBS_SMOOTE, x, x) but i don't know what to put in for x and x, so it crashed.
the second way i tried was by adding OnCreate() to my class, and adding
progress_control.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH, CRect(10,10,200,30), pParentWnd, 1);
I foudn that at msdn. My problem with that is where does pParentWnd come from? I dont have any classes derived from CWnd, so i don't know of anything i can put in there. CDialog does not work
:-/
*.*
cin >> knowledge;
|
|
|
|
|
there's a way to do it in the resource editor, i shoulda known.
*.*
cin >> knowledge;
|
|
|
|
|
progress_control.ModifyStyle(0, PBS_SMOOTH); keegan wrote:
where does pParentWnd come from?
The parent of the progress control, usually a pointer to your dialog. In this case, you'd probably do
progress_control.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH, CRect(10,10,200,30), this, 1); Hope this helps,
Ryan "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"
|
|
|
|