我有modHolder类对象。它用于无模式。
class modHolder : public CWinThread
{
DECLARE_DYNCREATE(modHolder)
protected:
modHolder();
virtual ~modHolder();
public:
CMainWindow * v1;
virtual BOOL InitInstance();
virtual int ExitInstance();
protected:
DECLARE_MESSAGE_MAP()
};
这是从主CWinApp对象创建的。 CbSrvDlg dlg是主要的应用程序窗口。
CbSrvApp theApp;
BOOL CbSrvApp::InitInstance()
{
...
CWinApp::InitInstance();
...
AfxBeginThread(RUNTIME_CLASS(modHolder));
CbSrvDlg dlg; // main dialog window
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
...
}
在modHolder中我有一个带有按钮的框架:
class CMainWindow : public CFrameWnd
{
public:
CMainWindow ();
CButton m_wndPushButton;
protected:
afx_msg LRESULT OnMyMessage1(WPARAM wParam, LPARAM lParam);
afx_msg int OnCreate (LPCREATESTRUCT lpcs) ;
afx_msg void OnPaint ();
afx_msg void OnPushButtonClicked ();
DECLARE_MESSAGE_MAP ()
};
创建按钮:
int CMainWindow::OnCreate (LPCREATESTRUCT lpcs)
{
if (CWnd::OnCreate (lpcs) == -1)
return -1;
CRect rectbutton(50,50,150,150);
m_wndPushButton.Create (_T ("Start"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rectbutton, this, IDC_PRINT);
return 0;
}
为什么大多数应用程序启动案例中的“开始”按钮不可见?为了使其可见,我需要将表格(CMainWindow * v1)移动到另一个位置。
另一个奇怪的应用程序行为是在应用程序启动后我看到任务栏中的表单而不是桌面上的表单,看起来应用程序被挂起了。
如何解决这些问题?