|
yes i do ..
anyway to add to my previous note ..
I did not change the values of array that *data point to but i constantly change the value of the array that *checkarray point to ..
however when i print out the values of array that *data point to .. those values at the begining of the array are changed !!
Thanx a lot for your help
bk
|
|
|
|
|
Does anyone know how to do this? I would appreciated any help.
-Thanks
|
|
|
|
|
I 've always put breakpoints in my View class in an mfc mdi app, to debug. but this time, it doesnt even enter that function (OnInitialUpdate), so how can I find out where the crash is happening? Call stack says crash is in NTDll. I used to get my UI, then a postmessaged CFiledlg. but now I get the CFiledlg with no underlying UI (as if its a sendmessage), and it crashes right after chooing a file.
If I debug with a breakpoint, it alwyas exceptions and never reaches the breakpoint in the vicinity of the CFileDlg spawning. yet running with the !, it does the postmessage, and probably the crash has already happened so the UI isnt showing like it used to, below the Cfiledlg which appears all by itself.
Thanks,
ns
|
|
|
|
|
Hmm, if I understood your problem right, maybe I have a solution for you. Yes I noticed several times that creating CFileDialog on heap in a view sometimes crashes inside CFileDialog 's destructor. I still have no answer why it happens, but found a work around. Just create CFileDialog using new and destroy using delete and everything will work fine.
Philip Patrick
Web-site: www.stpworks.com
"Two beer or not two beer?" Shakesbeer
|
|
|
|
|
When it crashes, open the call stack (VC6 -> Menu View -> Debug Windows -> Call Stack or press Alt+7) and examine the flow. Somewhere down the list you should find a function which is located in your app. Double click it in the callstack window and then set a breakpoint at this location. Stop and restart the debuggee. Voila, now it will break before it crashes and you can safely step through to find the reason of the crash.
int x=1, y=5;
x^=y^=x^=y;
<a href="http://www.codeproject.com/tips/StupidXORTrick.asp" target="_blank">ClickHereForHelp();</a>
|
|
|
|
|
http://www.csdn.net/expert/topic/974/974517.xml
please!
|
|
|
|
|
English version, please ?
Christian
We're just observing the seasonal migration from VB to VC. Most of these birds will be killed by predators or will die of hunger. Only the best will survive - Tomasz Sowinski 29-07-2002 ( on the number of newbie posters in the VC forum )
Cats, and most other animals apart from mad cows can write fully functional vb code. - Simon Walton - 6-Aug-2002
|
|
|
|
|
I asked this question the other day but didn't quite get the response I was looking for...
I'm thinking the formula isn't rocket science cuz I think I almost figured it out (I don't even have a gr. 10) so hopefully someone witha degree in something science out there can help me...
I hate math BTW
The thumb sizes of scroll bars...for proportional scroll bars...how are they calculated...???
They way I see it you have 2 variables to work with...
the scroll range or amount of total (virtual) window and the visible client area....using these two variables what formula would return the proper proprtional thumb size...
This is totally confusing me...
please help
Thanx!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
You got it right!
ThumbSize = (ClientSize/WindowSize)*ClientSize
or
ThumbSize = ClientSize^2/WindowSize
and
WindowSize >= ClientSize
Example: Window = 400, Client = 100
Thumb = 25 (1/4 of ClientSize, right!)
ÿVOTD: 8 "Love never fails. But where there are prophecies, they will cease;
where there are tongues, they will be stilled; where there is knowledge, it will pass away." - 1 Cor 13:8 (NIV)
|
|
|
|
|
Thank you kindly...
You have no idea how much I appreciate this help..I don't think i've ever benn so stumped in my life...
Once again I thank...
cheers!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
[UPDATE - I think instead of multiplying client you multiply by virtual...I think returns proper values now]
One question I forgot to ask...
What happens if the variables work like this?
Client area = 200;
Virtual window = 400;
This would require 50% thumb size right...?
but according to your formula
(200 / 400) * 200 would yield 100 if my math is correct...which is incorrect...a gives a false feedback to the user who expects 25% more scroll range.
Am I wrong here...? I'm very confued now...
Thanx again
cheers
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
100px is 50% of your client area (200px) so the math is correct. You didnt mention that you need the value as a percent value.
int x=1, y=5;
x^=y^=x^=y;
<a href="http://www.codeproject.com/tips/StupidXORTrick.asp" target="_blank">ClickHereForHelp();</a>
|
|
|
|
|
How do I update vars. declared in a Document from a Dialog? I would like to be able to get a pointer to my Document from w/in my Dialog. I'm using the CMyDoc *pDoc = GetDocument() statement in the Dialog class, but the compiler issues an 'undeclared identifier' message. I'd also like to go the other way, ie, pick data from the Document with which to initialize the Dialog. That's why I'm trying to setup a pointer to my Document from my Dialog. Thx,
Ralf.
ralf.riedel@usm.edu
|
|
|
|
|
do it like this:
void CMyDoc::FunctionThatLaunchesTheDialog()
{
CMyDialog theDlg;
theDlg.m_variableOne = m_something;
theDlg.m_variableTwo = m_somethingElse;
if (theDlg.DoModal() == IDOK)
{
m_something = theDlg.m_variableOne;
m_somethingElse = theDlg.m_variableTwo;
}
}
your dialogs should almost never have to know about your document class.
-c
A man is like a rusty wheel on a rusty cart,
He sings his song as he rattles along and then he falls apart.
-- Richard Thompson
|
|
|
|
|
Hello, the codegurus around the world.;)
Basically, we don't need to create CMyDialog in MyDoc class.
(Or, maybe we call some member function of CMyDoc with createing MyDialog and
call this function in the menu associated in CMyView).
Anyway, there are at least two ways to access the member value of CMyDoc.
1) Pass the parent's CWnd through the dialog class constructor.
(Or use GetParent() function of CWnd).
So, what is the parent? CMyDoc(?), CMyview or CMyFrame. No problems.
(Oops, CMyDoc will not be derived from CWnd.)
2) Use the global functions like AfxGetApp() or AfxGetMainWnd()
to get CMyFrame's CWnd and use GetDocument() functions.
So, we can enjoy MFC since we have many ways to do anything.
Please, don't send me your email about your questions directly.
Have a nice day!
Sonork - 100.10571:vcdeveloper
-Masaaki Onishi-
|
|
|
|
|
I store all my data in the CDocument derived class ( including the data for the dialog) and pass a pointer to it into the dialog itself.
This is a very neat way of doing things. All you have to do then is DoModal() and there is no more passing data between the classes.
Using this method helped me finally understand pointers.
e.g. in my View I handle the Options menu item. The handler will show the COptionsDlg dialog.
// in the View class I handle the Options menu handler
void CMyView::OnOptions()
{
COptionsDlg dlg;
dlg.SetupDocument(GetDocument());
if (dlg.DoModal()==IDOK)
GetDocument()->SetModifiedFlag();
}
//Add a SetupDocument member fn to COptionsDlg
//This function stores the CMyDoc pointer argument in a member variable
//
void COptionsDlg::SetupDocument(CMyDoc* pDoc)
{
m_pDoc=pDoc; //m_pDoc is declared in OptionsDlg.h as CMyDoc* m_pDoc
//remember to #include "MyDoc.h" there too
}
// in the COptionsDlg, link Edit boxes with the data members of the
// CDocument dervied class using DDX
void COptionsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(COptionsDlg)
DDX_Text(pDX, IDC_EDIT1,m_pDoc->m_iOption1);
DDX_Text(pDX, IDC_EDIT2,m_pDoc->m_iOption2);
//}}AFX_DATA_MAP
}
When you click on OK, the framework's OnOK()function calls UpdateData(true) so the edit box values are stored in the CMyDoc members.
if you want the full source for this example email me on john@wmgallery.co.uk
|
|
|
|
|
I've noticed similar questions in other threads where people have recommended not DDXing to the CDocument inherited class directly as the Dialog shouldn't care about the Document. I don't agree with this.
One of the main reasons for the Document/View pattern is to maintain a single copy of the Document data throughout the application. This is exactly what my method(above) does - it passes a pointer to the single Document object between classes. The Dialog is as valid a 'view' as the View.
Coping data into members belonging to other objects and them reading from the members again opens the way for bugs and makes things more rigid.
That's what I reckon anyways
|
|
|
|
|
I have this timer that sets some buttons but it doesn't take place in the dialog window until I click the button or if I have a break in the code when I come out.
void CStatus::OnTimer(UINT nIDEvent)
{
if(nIDEvent == 3153)
{
UpdateData(true);
m_153_tti_enab.m_MouseOnButton = true;
m_153_tti_inhbt.m_MouseOnButton = true;
m_153_min_inhbt.m_MouseOnButton = true;
m_153_test.m_MouseOnButton = true;
m_153_malf.m_MouseOnButton = true;
m_153_rt.m_MouseOnButton = true;
UpdateData(false);
}
Any ideas as to why this won't update the window?
Thanks for all the help!!!
|
|
|
|
|
Try forcing the window to repaint itself with Invalidate(FALSE); after the UpdateData call.
Christian
We're just observing the seasonal migration from VB to VC. Most of these birds will be killed by predators or will die of hunger. Only the best will survive - Tomasz Sowinski 29-07-2002 ( on the number of newbie posters in the VC forum )
Cats, and most other animals apart from mad cows can write fully functional vb code. - Simon Walton - 6-Aug-2002
|
|
|
|
|
The Invalidate() does cause the window to update...GOOD. but it blinks really bad. Any easy way to smooth this out?
|
|
|
|
|
Invalidate(FALSE) should cause the window to redraw itself WITHOUT erasing first, and should therefore not flicker. Beyond that, my MFC is a little rusty, I'm sorry. Is your WM_PAINT message doing anything strange ?
Christian
We're just observing the seasonal migration from VB to VC. Most of these birds will be killed by predators or will die of hunger. Only the best will survive - Tomasz Sowinski 29-07-2002 ( on the number of newbie posters in the VC forum )
Cats, and most other animals apart from mad cows can write fully functional vb code. - Simon Walton - 6-Aug-2002
|
|
|
|
|
Is the application busy?
And what is ...m_MouseOnButton?
What is it expected to do?
Give a little more insight to your app.
int x=1, y=5;
x^=y^=x^=y;
<a href="http://www.codeproject.com/tips/StupidXORTrick.asp" target="_blank">ClickHereForHelp();</a>
|
|
|
|
|
The app isn't busy...m_MouseOnButton is a way of setting the button to the active state. So what I'm doing is reading in some values and if they are true then I set the button on and hope it updates on the page by changing color.
Thanks for the help.
|
|
|
|
|
jimNLX wrote:
if they are true then I set the button on and hope it updates
Hope is the last to die, people say.
How exactly are you setting the button on? Where does it happen? When?
int x=1, y=5;
x^=y^=x^=y;
<a href="http://www.codeproject.com/tips/StupidXORTrick.asp" target="_blank">ClickHereForHelp();</a>
|
|
|
|
|
enab.m_MouseOnButton = true; this is how I set the button state to on and I do this in OnTimer()
|
|
|
|