控件中加载一个子窗体,窗体隐藏后CPU占用率奇高,请高手指教!

setsailgo 2007-08-29 10:16:28
dlgPage.Create(IDD_DLGPAGE,this);

CRect rcDS;
dlgPage.GetWindowRect(&rcDS);
dlgPage.MoveWindow(0,
0,
rcDS.Width(),
rcDS.Height(),
FALSE);
dlgPage.parentHwnd=m_hWnd;
dlgPage.ShowWindow(SW_HIDE);





窗体代码:
#define WM_MYPAGE (WM_USER+103)

class CDlgPage : public CDialog
{
// Construction
public:
int i;
HWND hWnd;
HWND parentHwnd;
CDlgPage(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CDlgPage)
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDlgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CDlgPage)
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnBtnpre();
afx_msg void OnBtnnext();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CDlgPage::CDlgPage(CWnd* pParent /*=NULL*/)
{
//{{AFX_DATA_INIT(CDlgPage)
//}}AFX_DATA_INIT

}


void CDlgPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgPage)
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgPage, CDialog)
//{{AFX_MSG_MAP(CDlgPage)
ON_WM_ERASEBKGND()
ON_BN_CLICKED(IDC_BTNPRE, OnBtnpre)
ON_BN_CLICKED(IDC_BTNNEXT, OnBtnnext)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgPage message handlers

void CDlgPage::OnBtnpre()
{
GetDlgItem(IDC_BTNNEXT)->EnableWindow(TRUE);
i++;
::SendMessage(parentHwnd,WM_MYPAGE,(long)-1,0);

}

void CDlgPage::OnBtnnext()
{

::SendMessage(parentHwnd,WM_MYPAGE,(long)1,0);
i--;
if(i<=0)
{
GetDlgItem(IDC_BTNNEXT)->EnableWindow(FALSE);
i=0;
}

}

BOOL CDlgPage::OnEraseBkgnd(CDC* pDC)
{
//return CWnd::OnEraseBkgnd(pDC);
return TRUE;
}

BOOL CDlgPage::OnInitDialog()
{
CDialog::OnInitDialog();

i=0;

return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
...全文
175 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
setsailgo 2007-08-29
  • 打赏
  • 举报
回复
问题已解决,谢谢各位!
aa65433 2007-08-29
  • 打赏
  • 举报
回复
应该是有的地方没返回,我以前不小心把onpaint里的return给注释掉了,cpu占用就是99%了
livedeal 2007-08-29
  • 打赏
  • 举报
回复
dlgPage.Create(IDD_DLGPAGE,this);

CRect rcDS;
dlgPage.GetWindowRect(&rcDS);
dlgPage.MoveWindow(0,
0,
rcDS.Width(),
rcDS.Height(),
FALSE);
dlgPage.parentHwnd=m_hWnd;
dlgPage.ShowWindow(SW_HIDE);

是不是要用指针啊~~?~?~?~?~?~?~??~?
dyw 2007-08-29
  • 打赏
  • 举报
回复
看不出问题所在,把上面那段代码屏蔽掉结果怎样?
mixtrue 2007-08-29
  • 打赏
  • 举报
回复
我感觉是你的消息的处理 可能有问题 【WM_MYPAGE (WM_USER+103)】,不是有些消息没有处理而给丢弃了?你的窗口程序看着没有什么大问题 ,我猜测你的控件的处理可能会有些问题吧?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧