creating modeless dlg in OCX causes msg pump shutout when keys pressed
I've created an OCX in VC 6.0 using the appwizard. I've inserted a
simple dialog class into the ocx's application called MyDialog and have
attatched a CDialog derived class to the dialog resource.
In the COleControl derived class (which I call CModelessDlgOCXCtrl)
I've added a method to the control's interface called PopupDlg(). The
code for this method is as follows...
MyDialog *pdlg = NULL;
long CModelessDlgOCXCtrl::PopupDlg()
{
pdlg = new MyDialog;
pdlg->Create(IDD_DIALOG1,this);
pdlg->ShowWindow(SW_SHOW);
return 0;
}
Note that the pdlg pointer is being declared as a global variable.
I also add to the interface a method called KillDlg() which looks like
this...
long CModelessDlgOCXCtrl::KillDlg()
{
if(pdlg)
{
delete pdlg;
pdlg = NULL;
}
return 0;
}
Calling this method simply destroys the pdlg object if it exists.
I then have a test host application (an appwizard created Dialog based
app) which contains the active x control. I have a member var in the
main (dialog) window of that app called m_modeless which I've attatched
to the ocx control.
When I try calling PopupDlg() on this control...
void CModelessDlgOCXTstDlg::OnButton1()
{
m_modeless.PopupDlg();
}
....the modeless dialog box pops up as expected, however If this dlg box
has focus then pressing any of the alphanumeric keys causes CPU usage
to spike to 100% and shuts out the message pump for the host app.
Anyone have any ideas why this occurs and how it can be fixed?
Thanks, Chuck