|
As far as I see, the only strightforward way to achieve this, is to have an array of timerIDs, which is maintained manually. I dont see any other way to enumerate existing timers. Maybe there are other more advanced means available like global hooks, not sure though...
Nish
[Signature temporarily down]
|
|
|
|
|
No, there's no unique-within-the-class requirement. Just like SDK, it must be unique per CWnd.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
Tomasz Sowinski wrote:
No, there's no unique-within-the-class requirement. Just like SDK, it must be unique per CWnd.
That's what I meant when I said CWnd derived class, under the assumption that any particular CWnd derived class would hopefully not deal with more than one HWND
Nish
[Signature temporarily down]
|
|
|
|
|
That's what you wrote in first reply:
Nish [BusterBoy] wrote:
The ID needs to be unique only within your CWnd class [assuming you are using this from an MFC CWnd derived class]
Class is not an object, and vice versa
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
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 "
|
|
|
|