Question about event handling in MFC?Thanks

I have written a Dialog Based MFC program with MainDlg as the main dialog

in MainDlg: it calls another class (Written by me) called MyClass as follow:

#include "MyClass.h"
void MainDlg::OnButton1Click()
{
    MyClass myClass;
    myClass.DoSomething();
}

In the Class MyClass, there is a Timer, that go to its OnTimer every 1 
second as follow

void MyClass::OnTimer()
{

}

What i want to do is whenever the OnTimer in MyClass is being triggered. it 
will direct an event with some parameter to the MainDlg as follow:

void MainDlg::OnMyClassTimer()
{
}

so that when Timer in MyClass is call, MainDlg::OnMyClassTimer() will call 
automatically.

How can i do that?

I have tried as follow:
#include "MainDlg.h"
void MainDlg::OnMyClassTimer()
{
    CMainDlg* mainDlg;
    mainDlg->OnMyClassTimer();
}
But i got error as
C:\MainDlg.h(24) : error C2065: 'IDD_MAIN_DIALOG' : undeclared identifier
C:\MainDlg.h(24) : error C2057: expected constant expression 


0
temp (19)
3/4/2005 1:19:47 PM
vc.mfc 33608 articles. 0 followers. Follow

7 Replies
471 Views

Similar Articles

[PageSpeed] 50

Couple of ways to communicate to other object:

1. Pass CMainDlg object to CMyClass in the constructor. CMyClass object
then call a public method of CMainDlg in OnTimer.

2. Use PostMessage from CMyClass to CMainDlg.

If CMainDlg is main window, you dont need to pass it to CMyClass as you
can get it using AfxGetMainWnd.

Regarding the compilation nerror, it appears your header file is
missing IDD_MAIN_DIALOG. This would be declared in resource.h.

Following makes no sense:

CMainDlg* mainDlg;
mainDlg->OnMyClassTimer();

mainDlg is not defined. Behavior of mainDlg->?? is undefined.


-------
Ajay Kalra
ajaykalra@yahoo.com

0
ajaykalra (6841)
3/4/2005 2:23:12 PM
>What i want to do is whenever the OnTimer in MyClass is being triggered. it 
>will direct an event with some parameter to the MainDlg as follow:

You issue is that you want to access the main dialog class from your
other class instance. To do that you need to pass that information to
your class - I suggest that you add a member variable to your class
that is a pointer to your MainDlg class. Initialise it when you create
the instance of your class and from then on the class can use it.

i.e. something like this:

class MyClass
{
public:
	CMyDlg * m_pDlg;
....
};

void MainDlg::OnButton1Click()
{
    MyClass myClass;
    myClass.m_pDlg = this;
    myClass.DoSomething();
}

MyClass::DoSomething()
{
    m_pDlg->Method();
}

Dave
0
davidl7375 (2060)
3/4/2005 2:34:20 PM
I found that IDD_MAIN_DIALOG is declared in resource.h

and the error only occur, when i add "MainDlg.h" in MyClass.h 


0
temp (19)
3/4/2005 2:57:22 PM
after i add #include "Resource.h" in MainDlg.h, it is okey now, i will try 
your method now, thanks. 


0
temp (19)
3/4/2005 3:01:45 PM
Problem has been solved, thanks all guys 


0
temp (19)
3/4/2005 4:03:09 PM
You are still going to have errors (run time) as I mentioned in my
earlier reply.

---------
Ajay Kalra
ajaykalra@yahoo.com

0
ajaykalra (6841)
3/4/2005 4:59:33 PM
You have not indicated how the OnTimer handler is being called. For example, if MyClass is
a modal dialog. and you called myClass.DoModal(), it would work. But there is no possible
way I know of to get an OnTimer handler in MyClass unless MyClass is a window class. At
that point, re-routing the message to the parent is not an option; what you would do is
GetParent()->SendMessage(UWM_MY_TIMER_MESSAGE) to send a user-defined message to the
parent.

A child window should never call methods of a parent window directly. This creates an
unmanageable mess and should be avoided.
On Fri, 4 Mar 2005 21:19:47 +0800, "pcserver" <temp@temp.com> wrote:

>I have written a Dialog Based MFC program with MainDlg as the main dialog
>
>in MainDlg: it calls another class (Written by me) called MyClass as follow:
>
>#include "MyClass.h"
>void MainDlg::OnButton1Click()
>{
>    MyClass myClass;
>    myClass.DoSomething();
>}
>
>In the Class MyClass, there is a Timer, that go to its OnTimer every 1 
>second as follow
>
>void MyClass::OnTimer()
>{
>
>}
>
>What i want to do is whenever the OnTimer in MyClass is being triggered. it 
>will direct an event with some parameter to the MainDlg as follow:
>
>void MainDlg::OnMyClassTimer()
>{
>}
>
>so that when Timer in MyClass is call, MainDlg::OnMyClassTimer() will call 
>automatically.
>
>How can i do that?
>
>I have tried as follow:
>#include "MainDlg.h"
>void MainDlg::OnMyClassTimer()
>{
>    CMainDlg* mainDlg;
>    mainDlg->OnMyClassTimer();
>}
>But i got error as
>C:\MainDlg.h(24) : error C2065: 'IDD_MAIN_DIALOG' : undeclared identifier
>C:\MainDlg.h(24) : error C2057: expected constant expression 
****
This code doesn't make any sense. There is no reason to declare an uninitialized pointer
to the same class, and your call is using this uninitialized pointer as if it made sense.

What are you really trying to do here? What you've explained doesn't make any sense, and
the code you showed is completely nonsensical. 

First, you should also include "stdafx.h" and then you must always include "resource.h",
because that is what is causing the error message. But having fixed the error message, you
are left with something completely nonsensical to execute.
*****
>

Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
0
newcomer (15974)
3/4/2005 5:06:14 PM
Reply:

Similar Artilces:

Backup question
I've moved to a new pc and for some reason I thought that when you backed up, a new file was created. Am I right? At the moment, it's just backing up to the backup file. So I've just just my working file and my backup file. Please could you clarify this? Thanks again. In microsoft.public.money, abc wrote: >I've moved to a new pc and for some reason I thought that when you >backed up, a new file was created. Am I right? At the moment, it's >just backing up to the backup file. So I've just just my working file >and my backup file. P...

Question about Xml Schemas "qualified" and "unqualified"
In the textbook, there is a sentence that "Default XML namespaces(xmlns="...") helps a lot, but can also create problems, as a side effect of the rules for automatic qualification. How to understand "automatic qualification" here? Could you please give me an example? Secondly, unless otherwise specified, a schema prescribes that loal elements and attributes must be "unqualified". What does "unqualified" mean? Could you please giv eme an example? Finnaly, could you please tell me what's purpose of using these two things? Thanks a lot! ...

a question and a question
What is the correct name of the type of selection box used in "customizing Word", for example.... you select a word or operation from a list on the left pane and move it over to the right pane. Is there a template to build one of these? thanx You will have to explain more in detail what you are trying to do. -- Stefan Blom Microsoft Word MVP "cliffordjf" <cliffordjf@discussions.microsoft.com> wrote in message news:9856CCA7-8A8E-440C-A0D4-76EE4FA644E2@microsoft.com... > What is the correct name of the type of selection box used in "c...

IF AND question
Hi there, I need a function that can provide one of three answers: 1 2 1 1... 3 3 4 4... ? ? ? ?... If A1 = 1 and A2=3, answer 106; but if A1=1 and A2 = 4, answer 104; but if A1=2, regardless of A2, answer 95. The next function for column B is the same, except the answer is dependent on the value delivered from the column A function. E.g. A3 + 6 or A3 +4 or A3-5 etc. Any help would be most appreciated. -- ***** Many thanks Gamq Use the below formula for your first query. =IF(A1="","",IF(A1=2,95,IF(AND(A1=1,A2=3),106,IF(AND(A1=1,A2=4),104)))) ...

IE8 privacy question
I am running XP-Pro SP3 and considering upgrading from IE7 to IE8. I have read all the feature and benefit articles from MS, but have one question that remains unanswered. In IE8 there is mention of being able to restore previously viewed websites or something to that effect. I think this is on a drop down menu somewhere. 1) Does In-private viewing prevent this? 2) Does manually deleting your complete browsing history clear this? 3) Is there a registry entry that can prevent this action? 4) Is there a group policy change that can prevent this action? In essence for privacy pur...

Question about Paste Special
Hi, I have a problem sometimes with the paste special options when goin from one excel workbook to another. For example, sometimes when I cop data from one workbook and then paste special into another, I get th options that include: All, formulas, values, formats, has the option t transpose the data and paste link among other options. And the sometimes I try and paste data to another workbook and I end up th paste special options: Bitmap Image Object, picture, bitmap, and I als lose the ability to paste link. Well you can do it, but it puts it i as an object. What I want is the first past...

Question
Why did the chicken cross the road? -- Dr. Stephen Hopkins, MD "Dr. Stephen Hopkins, MD" <DrStephenHopkinsMD@discussions.microsoft.com> wrote in message news:B8434E21-DDA3-44D7-B39B-CD5A8C33A7BD@microsoft.com... > Why did the chicken cross the road? > -- > Dr. Stephen Hopkins, MD To collect her email, why else? Dr? You should be ashamed to put such a title on an idiotic off topic post !! -- Regards Steve. MS-MVP. MAIL. [DTS] UK. http://www.getsafeonline.org/ mac;1266180 Wrote: > "Dr. Stephen Hopkins, MD" <DrSte...

MSExchangeAL error in event log
I continue to get the error below in event log regarding Exchange. This started when I demoted the DC to standard server which also had Exchange installed on the same machine. Message: The Win32 API call 'DsGetDCNameW' returned error code [0x54b] The specified domain either does not exist or could not be contacted. The service could not be initialized. Make sure that the operating system was installed properly What has happed here and how do I fix it? Is there a wrong domaincontroller listet in the RUS ? "Larry Bird" wrote: > I continue to get the error bel...

Microsoft Query question
I am trying to use Microsoft Query to get data from my SQL 2000 databases. The problem is that I have a few columns with names that conflict with keywords (like Identity). (Yes. I kow that keywords should be avoided but it is done and cannot be changed.) This is causing a keyword syntax error within the Query application. Oddly enough, even if I do not select the column the error still appears. And when you look at all the columns available, the keyword named column shows up in boldface. When I am doing queries in other programs I put square ("[ ]") brackets around column and table...

OWA Question #16
Hello All: Quick Question regarding OWA. We are about to finalize migration from 5.5 to 2003. We have an existing web presence already in DNS a www.mydomain.com. and running on existing web servers. With 5.5 natrually, to access OWA, it was www.mydomain.com/exchange. This will not be possible now since OWA runs off of the Exchange server instead of relying on our web server under 5.5. What's the easiest way to overcome this. Thanks If you can afford the extra license, you'll probably want to run a front-end server so no one is connecting directly to the Exchange database s...

VBA//Oracle Interfacing Question
All, I have been able to correct to my database but I have one question question: Within objSession I want to list all available tables and all available views. How exactly is this done? thank you. Set objSession = CreateObject("OracleInProcServer.XOraSession") Set objDatabase = objSession.OpenDatabase("", "User/Pass", 0) On Nov 16, 12:05=A0pm, jason <jason.mell...@gmail.com> wrote: > All, > > I have been able to correct to my database but I have one question > question: > > Within objSession I want to list all avail...

Text Box Question
Greetings, I have been using Visio for years, however, something has happened and I can't figure out how to undo it. Basically up until today when I added a text box and entered text, the text went horizontal as it was typed. Today when I add a text box and enter text, the text goes vertical. How do I get back to the old behavior? TIA using text container shape adjusting tool (text block tool), make the text container shape wider horizontally. Have you used Asian text font recently?...check help for "vertical text" "Ray Batig" wrote: > Greetings, > &g...

401K questions
I just started a 401K at work and I'm wondering how to deal with it in Money. I've got my paycheck split into different categories currently and now I have to put the 401K amount into a category as well. I didn't see one specifically for this. What do other people use? Should I start using the 401K Manager? I haven't gone through it yet I'm just wondering if it works well and how much benefit I'll get from it. Thanks in advance! Mike You will want to create an investment account for the 401(k) and TRANSFER your contributions from your checking account to the...

If / Then Question
How would I do this: IF A1="N" then I need A2 and A3 to="N/A -- pkniven ----------------------------------------------------------------------- pknivens's Profile: http://www.excelforum.com/member.php?action=getinfo&userid=2767 View this thread: http://www.excelforum.com/showthread.php?threadid=47531 pknivens Wrote: > How would I do this: > > IF A1="N" then I need A2 and A3 to="N/A" Hi pknivens In A2 and A3 use this formula > =IF(A1="N","N/A",""), this will return blank if A1 is not N, if you want it...

ROWCOUNT question
Hi All, The below is a UDF that returns the ROWCOUNT for a table. I need to know that value for WHILE loop. How do I take the Returned value from the UDF and load it intio a variable in the SP where it was called from? Or maybe there is another way. ALTER FUNCTION [dbo].[RecCount] ( @TableName CHAR(15) ) RETURNS TABLE AS RETURN ( SELECT Rows FROM sysindexes WHERE id = OBJECT_ID(@TableName) AND indid < 2 ) Thanks, Eric Eric S (xxx_noSpam@Hotmail.com) writes: > The below is a UDF that returns the ROWCOUNT for a table. I need to know > that va...

Mouse events #2
I am working on a 3D model viewer using MFC. I want to set a variable - 'renderMode' to GL_SELECT whenever my mouse is moving(only moving not dragging) over the client area of window, and to GL_RENDER when the mouse is either dragging in client area or is in the non client area of my window. How could I achieve it, I mean what code should go in which event handler? On 2 Sep 2006 00:43:42 -0700, "Adrian" <richard.the.lionheart@gmail.com> wrote: >I am working on a 3D model viewer using MFC. I want to set a variable - >'renderMode' to GL_SELECT whenever my...

Exmerge Question #7
When I run Exmerge on a mailbox on my 2003 server to export to a PST, it will delete all emails after the copy. I thought EXmerge would "copy" not delete. is this the default? If so how can I just have it do a copy out to the PST and leave the mailbox alone. thanks Rick in "options", make sure "archive data to target store" is not selected on the "Import procedure" tab... -- Susan Conkey [MVP] "Rick" <drummer10980@gmail.com> wrote in message news:1165509540.777142.38260@16g2000cwy.googlegroups.com... > When I run Exmerge on ...

question about "delete"
I have a pointer: MyWindowClass *p = NULL; p = new MyClass(...); .... delete p; After delete p, does p equal NULL(it is in C++ standard?)? How to decide if p has been deleted? The reason I asked this question is that in my project, there are many code/files use the pointer which I need to determine is it is deleted? Can I use: if(p != NULL) delete p; I guess somewhere p has been deleted, but p still not NULL(possible?), the above code might cause problem. Hi Kathy, I typically just set p to NULL when I delete it: delete p; p = NULL; Then you can check it in other places and ...

More combining companies questions
We too have acquired another company and need to look at all of our options concerning what to do with email. We run Exchange 2003, they run Exchange 2000. What is the best way to combine the two so we can share GAL, free-busy info, etc.? No decisions have been made as far as what we are going to do with their AD. We could of course change their MX record to point to our server, update our RUS, etc., but what if we want to keep an Exchange server at their site? What has to be done to join their server to our Exchange org? If you want sync both GAL,pls check this http://www.microso...

switchboard question 12-26-07
Is there a way to put the names of different switchboard pages on the switchboard form? If you put one name on a switchboard page (in form design view), the same name appears on all the switchboard pages. I understand why this happens, but what if I want the user to be able to know which switchboard s/he is on? Thanks. PS the same thing happens if I go into form design view and put in control tip text. It puts the same text for the same-numbered menu item on two different switchboard pages. "Debbie S." wrote: > Is there a way to put the names of different switchboard ...

Some Questions about Outlook
1. what's the max size of attachment for sending email? 2. newMail notifitor: when there is a new mail, can the tary be changed to other until i check the mail? can it work with hotmail? 3. is there any function likes "To Do List"; calendar require time setting? 4. configure file backup; can i back up all of my setting? -- Me, Who I am On Sun, 7 May 2006 22:17:01 -0700, Dotku <lwjct@hotmail.com> wrote: >1. what's the max size of attachment for sending email? That would depend on your mail server/ISP. >2. newMail notifitor: when there is a new mail, can the ...

Toolbar question
I have created a combo box on my toolbar. I am using 32 x 32 buttons, so my combo box is sitting high up. I would like to move it down to the center of the toolbar. To create it I used the following code, CRect rect; SetButtonInfo(14, IDC_FILTERNAMECB, TBBS_SEPARATOR, 200); GetItemRect(14, &rect); rect.bottom = rect.top + 200; m_cbFilterNames.Create(WS_TABSTOP | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT, rect, this, IDC_FILTERNAMECB); How do I tell it to place itself in the center of the toolbar? Here is my code: code is from inherited CToolba...

Simple CRM 3.0 Questions
- If an account is no longer active, what's the process to make it inactive? - Can a lead have multiple contacts, with one acting as the primary contact? - When I create a new lead, what the 'Topic' field usually used for? - When creating a lead, on the Details Page, how can I add entries into the 'Industry' and 'Lead Source' drop down lists? - Will CRM track all e-mails associated with a lead? How do I ensure this? - How do I promote a Lead to an Opportunity to an Account? - What's the real definition of an Opportunity? It seems so grey compared to...

Event id 1173
I am using Exchange 2003 on Windows 2003 I get the following in the event log: Event ID 1173 Type Warning Source MSExchangeIs Mailbox Error 0x6bb deleting unused restricted view from folder 1- 1D47B43 on database "First Storage Group\Mailbox Store (MERCURY-BE)". Microsoft Exchange Information Store will try to delete the view again at the next maintenance interval. Should I run ISinteg or eseutil or both? Can't find much out there on this problem. ...

Question to Microsoft
Hi, I am really fedup with this news group if no one reply what is the use of this site. I have a suggestion why dont you show reply send with the question. Thanks ...