如何为多个对话条添加不同的背景位图??

Watchmen_ 2012-05-05 11:20:45
在基于单文档的程序中创建了4个对话条,想为每个对话条添加一个背景位图。

产生对话条时,我采用的数组的形式;

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

for(int i=0;i<4;i++)
{
m_mydlgbar[i].Create(this, IDD_DIALOGBAR1+i, CBRS_TOP,IDD_DIALOGBAR1+i);


m_mydlgbar[i].EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_mydlgbar[i]);
}

return 0;

}


请问该怎么做?
...全文
102 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2012-05-06
int id=GetDlgCtrlID(hwnd);
//sprintf(Prompt,"%d",id);
//OutputDebugString(Prompt);
switch (id)
回复
Eleven 2012-05-06
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:
派生CDialogBar,添加处理WM_ERASEBKGND试试


派生了CDialogBar了,用的OnPaint()能添加上背景,但是4个对话条的背景都是一样的,

想让每个对话条的背景不一样。

还请“兔子党组织部长”给指点一下。
[/Quote]
囧,你修改一下构造函数,传一个参数进去,OnPaint根据参数的不同,贴不同的图不就可以了
CXXDialogBar* m_pDialogBar[4]; //成员变量

for(int i=0; i<4; i++)
{
m_pDialogBar[i] = new CXXDialogBar(...);
m_pDialogBar[i].Create(...);
}
回复
Watchmen_ 2012-05-06
[Quote=引用 1 楼 的回复:]
派生CDialogBar,添加处理WM_ERASEBKGND试试
[/Quote]

派生了CDialogBar了,用的OnPaint()能添加上背景,但是4个对话条的背景都是一样的,

想让每个对话条的背景不一样。

还请“兔子党组织部长”给指点一下。
回复
Eleven 2012-05-06
派生CDialogBar,添加处理WM_ERASEBKGND试试
回复
Watchmen_ 2012-05-06
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:

引用 1 楼 的回复:
派生CDialogBar,添加处理WM_ERASEBKGND试试


派生了CDialogBar了,用的OnPaint()能添加上背景,但是4个对话条的背景都是一样的,

想让每个对话条的背景不一样。

还请“兔子党组织部长”给指点一下。





囧,你修改一下构造函数,传一个参数进去,OnPaint根据参数的不同,贴不同的图不就……
[/Quote]


已经解决了,在CDialogBar的派生类内,添加了WM_ERASEBKGND消息,然后在CMainFrame的oncreate
内给CDialogBar中的四个成员变量赋值,分别代表4个对话条,最后在WM_ERASEBKGND内有了switch.

谢谢“兔子党组织部长”和“schlafenhamster”了。

回复
发动态
发帖子
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
社区公告
暂无公告