[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

How to update the parent of a modeless child dialog window

Posted on 2006-06-19
5
Medium Priority
?
447 Views
Last Modified: 2013-11-20
Hello

I have a class that inherit from CScrollView which creates a modeless dialog box when the user clicks on a button:

m_dlg = new CActorPropertiesDlg;
m_dlg->Create(IDD_PROPERTIES, this);
m_dlg->ShowWindow(SW_SHOWNORMAL);

What i want to achieve is the parent must still be refreshed when the focus is on the modeless dialog... right now, its only redrawn when the focus is on the parent.

My parent CScrollView object is refreshed using SetTimer(1, 100, NULL)... and in OnTimer( ), i use Invalidate.

How could i tell the modeless dialog to continue to update its parent each 100 ms?

Thanks
0
Comment
Question by:oroussea
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 48

Accepted Solution

by:
AlexFM earned 220 total points
ID: 16936632
When modeless dialog is active, parent window must continue to handle WM_TIMER messages. You don't need to do anything special for this.
0
 

Author Comment

by:oroussea
ID: 16936652
How can i tell the parent to do so?

Because its not like i told the parent to stop handling the timer event...

Should i set something to tell the parent to process the events even though it doesn't have focus?
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 16939939
You don't need to tell anything, parent continues to handle events in any case.
0
 
LVL 45

Assisted Solution

by:AndyAinscow
AndyAinscow earned 140 total points
ID: 16940182
I'm going to make a wild guess that your modeless dialog is performing a lengthy operation.  This will 'stop' the normal message handling in the thread (because it is very busy).  A patch is as follows.

In the processing in the modeless dialog
while(...)   <<--------------- or for loop or whatever
{
//work work work
DoEvents();   <<------------------------------------
}


void DoEvents()
{  
      MSG msg;  
      while ( ::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE ) )
      {  
            ::TranslateMessage(&msg);
            ::DispatchMessage(&msg);
      }
}

This forces the message queue to be processed - gives timer and paint messages a chance to work.


If I have guessed correctly then you ought to consider using threads to perform the operation.
0
 
LVL 1

Assisted Solution

by:ramesh_hyd_ap
ramesh_hyd_ap earned 140 total points
ID: 16942794
Hi,

Create a user defined message like

  #define WM_UD_PARENTUPDATE           WM_USER+10

In the modeless dialog class has you are doing some operation so whenver you want to update parent
send the message to the parent as :

::SendMessage ( h_wndParent, WM_UD_PARENTUPDATE , NULL, NULL );

Handle the message handler in the parent window class as :

BEGIN_MESSAGE_MAP ....
ON_MESSAGE(WM_UD_PARENTUPDATE ,OnUpdateParent)
END_MESSAGE_MAP..


LRESULT OnUpdateParent (WPARAM wParam,LPARAM lParam)
{
  // write code here what ever you want to do in the parent.
  return 0;
}


Thanks,
Ramesh.


0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article, I'll describe -- and show pictures of -- some of the significant additions that have been made available to programmers in the MFC Feature Pack for Visual C++ 2008.  These same feature are in the MFC libraries that come with Visual …
This is to be the first in a series of articles demonstrating the development of a complete windows based application using the MFC classes.  I’ll try to keep each article focused on one (or a couple) of the tasks that one may meet.   Introductio…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question