高手救救小弟吧 :(~ 这个问题已经搞了2~3天了 。。。。。。。。。。。。

eww 2006-09-22 05:54:56

小弟初学VC,请CSDN的高手多指教,这个问题已经搞了2~3天了:(,网上也没有什么教程,现在实在搞不定了求助于CSDN的大虾们。

目的:小弟想在CAboutDlg 中new 一个AdvFont后,AdvFont会在自已上画一个文字出来,我再把AdvFont放到CAboutDlg 中,这样文字在CAboutDlg 中就显示出来了,其实就是一个像cstatic这样的组件. 但是现在不行啊




现在做了一个类

class AdvFont:public CWind{}

在这个类中有实现了一个Create方法
BOOL AdvFont::Create(CWnd *pwnd){
return CWnd::Create(NULL,"YYYY",WS_VISIBLE,CRect(100,100,100,100),pwnd,0,NULL);
}
我用软件生成了一个这样的类class CAboutDlg : public CDialog(就是用visual生成的)
这个类一运行会出现一个对dialog,

我在CAboutDlg 中的OnPaint 函数中写上入下代码:
AdvFont* adv=new AdvFont();
adv->Create(this);
//adv->ShowWindow(SW_HIDE);
//adv->UpdateWindow();
adv->SetTimer(1,2000,0);


问题:

现在AdvFont中的OnCreate()和OnTimer(UINT nIDEvent)会被自动触发
但是OnPaint却没有被触发,不知道为什么???????
现了怎么在AdvFont中画出字来用getDC().TextOut()不行啊。 在CAboutDlg 都可以直接画




...全文
201 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2006-09-22
  • 打赏
  • 举报
回复
窗口一没大小二不显示,何来的WM_PAINT?
rollor_phoe 2006-09-22
  • 打赏
  • 举报
回复
1、CRect(100,100,100,100)将这个改成CRect(100,100,200,200)试试。
2、将AdvFont *adv添加为CAboutDlg中的成员变量。
3、将adv->Create(this);加入CAboutDlg的OnCreate()函数中。
littlepboy 2006-09-22
  • 打赏
  • 举报
回复
1。CRect(100,100,100,100) ?区域给好了么?0区域不会进OnPaint。。
2。不要在OnPaint里new,拿到初始化里new一个就完了。
3。Crete里的风格使用WS_CHILD | WS_VISIBLE 好些。
「已注销」 2006-09-22
  • 打赏
  • 举报
回复
对于你的做法我有点不明白,你是不是想生成一个子对话框在ABOUTDLG上
其实要实现你的要的就用一个STATIC控制就OK了啊
huamoran 2006-09-22
  • 打赏
  • 举报
回复
不行的
pomelowu 2006-09-22
  • 打赏
  • 举报
回复
呃。。。还有,为什么不直接做一个透明背景的Static呢?
pomelowu 2006-09-22
  • 打赏
  • 举报
回复
另外,你应该在AboutDlg的OnInitDialog中new 这个AdvFont,而不是OnPaint中。不然,有可能创建多个这个AdvFont
pomelowu 2006-09-22
  • 打赏
  • 举报
回复
调用
adv->ShowWindow(SW_SHOW);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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