|
Tomasz Sowinski wrote:
Class is not an object, and vice versa
The error is regretted
I am sure glad you were not high school teacher. I wouldn't have passed even now
Thanks anyway Tomasz
Nish
[Signature temporarily down]
|
|
|
|
|
you just have to keep up wich numbers you've already used. In a CList<int,int> for instance or just an static int in the function you use for creating your timers...
-------------------------------
Greetz,
MG
|
|
|
|
|
no enought
f.e. system conrols create their own timers
do you know to say their ids are platform independent?
t!
|
|
|
|
|
what do you mean by system controls?
They are not in your program/Window so they don't bother you.
-------------------------------
Greetz,
MG
|
|
|
|
|
i have class derived from tree or list control and i want to create own timer there
t!
|
|
|
|
|
so your tree or listcontrol will receive the timer message of the timers you create. and you can just create a timer like settimer(1,500,NULL); that's all.
You think your tree control will receive timermessages from another control?? That's not true.
If this is not your problem, please explain it to me/us.
-------------------------------
Greetz,
MG
|
|
|
|
|
if i in my tree class create own timer with id 42 it will fight with tree control created one (sure for w2000) - i can eat its timer event thinking its mine
t!
|
|
|
|
|
I've never seen a simple tree control that uses timer events, unless I made them myself
-------------------------------
Greetz,
MG
|
|
|
|
|
i have in own program tree example with sending afer every l-click and example without it - can't get to search what is difference in tree properties can cause it
the same timer ids are when spy-ing regedit or explorer (but here we can't be so sure it is system tree)
any way - for simplicity try imagine you using not system control but another you have no sources
t!
|
|
|
|
|
ok, it seems not-sending was because of my click handling
not depended on control state
do you realy have no WM_TIMER messages?
t!
|
|
|
|
|
no, sorry.
I realy don't know why a tree-control should use timer events, for what purpose?
Is it just a tree-control or a ActiveX kind of tree-control?
-------------------------------
Greetz,
MG
|
|
|
|
|
tree control
first example i recalled:
when i l-click to last half visible item (maing it selected) it selects it and scrolls down after short delay (doubleclicktime)
when you do it by keyboard it scrolls imediately
t!
|
|
|
|
|
Hello I am having a problem I don't understand. What I wanted was to have only one instance of a certain document open at once. So I overrided the On_File new of the app like this:
void CEditorApp::OnFileNew()
{
// TODO: Add your command handler code here
pMyTemplate->CloseAllDocuments(TRUE);
CNewDSNDlg pDlg;
pDlg.DoModal();
}
Obviously this dosn't open a new document , the document in question is opened elsewhere. If there is not a document open it dosn't have a problem. If there is one, this throws an assertion for some reason. One thing that confuses me is it only throws the assertion when compiled in debug mode but not when compiled in release. The exemption it throws is in OBJCORE.CPP and is refered to as a User Breakpoint:
// check to make sure the VTable pointer is valid
ASSERT(sizeof(CObject) == sizeof(void*));
if (!AfxIsValidAddress(*(void**)pOb, sizeof(void*), FALSE))
{
TRACE0("ASSERT_VALID fails with illegal vtable pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();
return; // quick escape
}
Could someone explain why this assertion is only being thrown in debug and also wether or not I should even care? I am worried this will cause a memory leak or something.
Thx,
Richard
|
|
|
|
|
The ASSERT and TRACE macros are defined for DEBUG mode only. In RELEASE mode the ASSERT and TRACE macros are defined as ((void)0), so in RELESE mode the folloing line:
ASSERT(sizeof(CObject) == sizeof(void*));
Will be changed by preprocessor to:
((void)0) (sizeof(CObject) == sizeof(void*));
and the compiler will ignore that line, so even all arguments will not get valuated.
That’s why there is no assertion in RELEASE mode.
BTW, this is different from another approach when a macro gets defined for RELEASE like this:
#define ASSERT
In that case all macro arguments get valuated even in RELEASE mode.
Serge
|
|
|
|
|
Asserts are there to catch bugs in your code. An object is being deleted or blown away before it should be. You don't give enough info to tell what you're doing wrong, but look at the stack trace when the assert fires, and see what part of MFC is doing the validation and on what object.
--Mike--
Best score on the mini-putt game: 26
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan and Jamie Salé.
|
|
|
|
|
Do not use CloseAllDocuments. This is why:
CDocTemplate::CloseAllDocuments
virtual void CloseAllDocuments( BOOL bEndSession );
Parameters
bEndSession
Specifies whether or not the session is being ended. It is TRUE if the session is being ended; otherwise FALSE.
Remarks
Call this member function to close all open documents. This member function is typically used as part of the File Exit command. The default implementation of this function calls the CDocument::DeleteContents member function to delete the document's data and then closes the frame windows for all the views attached to the document.
Override this function if you want to require the user to perform special cleanup processing before the document is closed. For example, if the document represents a record in a database, you may want to override this function to close the database.
|
|
|
|
|
Welp it would apear I have found the problem. I adjusted the code to look like this:
CNewDSNDlg pDlg;
pDlg.DoModal();
pMyTemplate->CloseAllDocuments(FALSE);
This seamed to cure the problem. It was the dialog being opened within the funtion after the document closure. Having the dialog come up before the document closure has cured the problem. I have to admit I am not sure why and if anyone happens to know I wouldn't mind learning the reason.
Thx,
Richard
|
|
|
|
|
Wouldn't it be easier to just stop the OnFileNew procedure being called?
OnUPdateFileNew(CCmdUI *pCmdUI)
{
POSITION pos ;
pos = pDocTemplate->GetFirstDocPosition() ;
pCmdUI->Enable(pos == NULL) ;
}
Of course you need the CDocTemplate pointer for this to work.
Roger Allen
Sonork 100.10016
If I'm not breathing, I'm either dead or holding my breath.
A fool jabbers, while a wise man listens. But is he so wise to listen to the fool?
|
|
|
|
|
I'm trying to open recorset using command object, and retreve data from Access database.
m_pRds->Open(_variant_t((IDispatch *) m_pCmd, true), Parameter2, adOpenStatic ,adLockOptimistic, adCmdStoredProc);
what should I specify as Parameter2, cause when I put current connection there I'm getting error "Cannot change the ActiveConnection propery of a Recorset object which has a Command object as its source."
|
|
|
|
|
I cann't remember what exactly it was but O know you can pass it as _bstr_t(L"") .
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
why i posted (read) was because i already posted a thread just like this, and i wanted to renew it in a way. all the other responses were great, and i looked up allot of new things that helped allot. Now, the only part that i cannot seem to get to work is the rand().
If there is an artical or webpage that explains random numbers, please give me the address, or link. Thanks.
But if there is not, or you simply dont know, or dont care about giving it, or like to respond to questions. my question is... "Like the old one"
I want to generate a number in a random form. 1-10. with the number, i wanted to use if statments such as:
if (rand() == 1);
somthing
if (rand() == 2);
somthing
And so on. I dont know if that is how you declare an if statment with a rand(), just bean toying with for a long while, and that seems most correct at the moment.
on the other thread i got the response of
rand()%11 was for 1-10. But i dont think that is the end of it, what else am i suppose to add to this, or is it the end?
If that is the case, then, how do you declare a rand() to = to 0?
Thanks all.
~SilverShalkin
ps... as you can see, im at the point of hair ripping. sorry if some of this is hard to understand or unorganized. "simply tired"
"for life is to precious to spend in the dark wonders of a dream,
but without it, life simply becomes a dream." "some can relate "
|
|
|
|
|
I want to generate a number in a random form. 1-10. with the number...
That's how you do this:
#include "stdafx.h"
#include <afx.h>
#include <stdlib.h>
void main()
{
srand(0);
while (1)
{
int rnd = rand() % 10 + 1;
if (rnd < 1 || rnd > 10)
{
printf("Out of range [1-10], rnd = %d\n", rnd);
return;
}
else
{
printf("generated rnd = %d\n", rnd);
Sleep(500);
}
}
}
|
|
|
|
|
lets see,... could you do...
Serge Krynine wrote:
#include "stdafx.h" "could this be stdlib.h?"
#include
#include
void main()
{
srand(0);
while (1) "what does this do?"
{
int rnd = rand() % 10 + 1; "Do you have to do 10 + 1, or can you do 11?"
if (rnd < 1 || rnd > 10)
{
printf("Out of range [1-10], rnd = %d\n", rnd);
return;
}
else
{
printf("generated rnd = %d\n", rnd);
Sleep(500);
}
}
}
I got most of that, thanks, Ill try it out and see what happends.
~SilverShalkin
|
|
|
|
|
SilverShalkin wrote:
#include "stdafx.h" "could this be stdlib.h?"
Actually stdafx.h is the VC++ precompiled header file
SilverShalkin wrote:
while (1) "what does this do?"
that's for an endless loop
Nish
[Signature temporarily down]
|
|
|
|
|
a) Stdafx was generated by devstudio when I build a windows console app project, but yes stdio.h should do.
b) while (1) {} means “loop forever”; The idea of the test that if a random number would be out of [1-10], the test would exit; otherwise it will run forever (what I guarantee) (until you terminate it by ctrl+c or power off your PC).
c) the expression int rnd = rand() % 10; gives you random integers in the range [0-9] (from zero to nine inclusive). If you want the [1-10] range, add 1 then: int rnd = rand() % 10 + 1; Note that expression: int rnd = rand() % 11 does not give you correct range [1-10] because it can generate zero when the rand() function returns 11, so 11 % 11 gives you null.
Enjoy,
Serge
|
|
|
|