更改外观样式

本文介绍如何使用MFC在应用程序初始化阶段及运行时调整窗口的大小、标题、图标,并设置视图的背景颜色与光标。
在MainFrame中更改窗口大小、标题、图标
窗体创建之前更改:
可在CxxxApp中的InitInstance中加入如下(红色)代码:
m_pMainWnd->SetWindowPos(NULL,200,200,600,500,SWP_NOMOVE); 
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();

或者在CMainFrame::PreCreateWindow()中
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
//更改大小
cs.cx=300;
cs.cy=200;

//更改标题
//cs.style&=~FWS_ADDTOTITLE;
cs.style=WS_OVERLAPPEDWINDOW;
cs.lpszName="http://www.sunxin.org";
//更改图标
//cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,0,0,
LoadIcon(NULL,IDI_WARNING));

//设置默认样式
//cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW);
return TRUE;
}

窗体创建之后更改:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//设置标题可更改
SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);
//取消最大化按钮
SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE) & ~WS_MAXIMIZEBOX);
//设置图标
SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));
return 0;
}

在View中更改窗口背景、光标
窗体创建之前更改:
BOOL CStyleView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs

//设置箭头光标、黑色背景
cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,
LoadCursor(NULL,IDC_CROSS),(HBRUSH)GetStockObject(BLACK_BRUSH),0);
//设置默认样式(背景是透明的)
cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW);

return CView::PreCreateWindow(cs);
}

窗体创建之后更改:
int CStyleView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
//设置(黑色)背景
SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(BLACK_BRUSH));
//设置(帮助)光标
SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_HELP));

return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值