如何用MFC做好看的对话框?

qq328422353 2011-11-01 12:07:16
如何用MFC做一个漂亮的对话框?这里的漂亮是指:1、对话框具有不规则外框 2、对话框边缘局部地方能半透明或者有玻璃效果 3、对话框上要有一个进度条,进度条要不规则外形 4、对话框上有玻璃效果的按钮。求高手们指点小弟一下吧,一定会高分送上。
...全文
646 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
quwei197874 2011-11-04
  • 打赏
  • 举报
回复
skin magic
qq328422353 2011-11-04
  • 打赏
  • 举报
回复
是的,整个程序是基于对话框的。我用region做了一个不规则边框的对话框,添加上了不规则按钮,但是整个对话框达不到预期的效果,例如:对话框边缘有亮边,登陆器某些控件会闪,还有时候对话框加载不上背景图片,显示默认的灰色背景,很难看。
x858078 2011-11-02
  • 打赏
  • 举报
回复
可以自己找人切图,贴上去!!!
3xcom 2011-11-02
  • 打赏
  • 举报
回复
第三方的代码了。呵呵。
calm_keep 2011-11-02
  • 打赏
  • 举报
回复
DIY
无边1 2011-11-02
  • 打赏
  • 举报
回复
1.半透明效果,透明度可调。
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibraryW(_T("User32.DLL"));
if (hInst)
{
typedef BOOL(WINAPI *MYFUNC)(HWND, COLORREF, BYTE, DWORD);
MYFUNC fun = NULL;
fun = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");

if (fun)
{
fun(this->GetSafeHwnd(), 0, 200, 2);//200是透明度参数
}
FreeLibrary(hInst);
}

2.改变窗体背景色
HBRUSH CHeleTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

if(nCtlColor == CTLCOLOR_DLG || nCtlColor == CTLCOLOR_STATIC )
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)CreateSolidBrush(RGB(212,223,243));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}

3.可以下载使用CButtonST控件
4.不规则外形可用CRgn的create..Rgn,combineRgn 和 SetwindowRgn实现。(这个嘛感觉效果一般,仅供参考)

对于使用第三方皮肤控件,鄙人并不建议。以前用过SkinMagic,对于在多线程的MessageBox时候没有效果,对于InvalidateRect无效,部分重绘也会整个重绘,对于控件较多重绘很频繁的时候而且电脑性能不佳时,还容易程序死掉或界面重绘明显。
我的送神 2011-11-01
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/geniusice18/3350843
VC++ 仿QQ2011界面效果 (MFC) 源码
dic_008 2011-11-01
  • 打赏
  • 举报
回复
skin++ 搜索下这个工具专做UI的,网上也有破解版的楼主试试。
justlovetao 2011-11-01
  • 打赏
  • 举报
回复
我只会向上面加皮肤什么的。。。。
最帅的小猪 2011-11-01
  • 打赏
  • 举报
回复
可以考虑自绘控件或者用第三方皮肤库!推荐SKIN++!
hll127 2011-11-01
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/GDI-plus/Style_Toolkit.aspx
黑泡泡选手 2011-11-01
  • 打赏
  • 举报
回复
纯指对话框吗?找一个合适的图片,然后做成不规则的基类窗体复用~~~
chopin3 2011-11-01
  • 打赏
  • 举报
回复
用别人编好的吧……
qq328422353 2011-11-01
  • 打赏
  • 举报
回复
界面库哪个好点?或者说大众一点用的多点 ?谢谢各位热心帮助
redui 2011-11-01
  • 打赏
  • 举报
回复
这个需求用LibUIDK最合适
qq328422353 2011-11-01
  • 打赏
  • 举报
回复
allen_lanyuhai 哎,论坛没分,下不下来,你有那代码吗?麻烦发给我下:328422353@qq.com
jaynaviee 2011-11-01
  • 打赏
  • 举报
回复
也在学习MFC中。。。。。。
用户 昵称 2011-11-01
  • 打赏
  • 举报
回复
使用现成的界面库。
huaidan2012126 2011-11-01
  • 打赏
  • 举报
回复
这个必须得借用界面库了,靠代码很难
mtj520 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liyu1128 的回复:]
http://download.csdn.net/detail/geniusice18/3350843
VC++ 仿QQ2011界面效果 (MFC) 源码
[/Quote]
+1
加载更多回复(1)

15,980

社区成员

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

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