一. 1.修改框架窗口,在窗口创建之前用
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
// 单文档的标题,是子窗口的标题想要改变,与原来的取反
//cs.style&=~FWS_ADDTOTITLE; 与原来的取反,
//或cs.style=WS_OVERLAPPEDWINDOW;
2.如果窗口已创建:在OnCreate 中用SetWindowLong(窗口句柄,要改的量,新的量)
要改的量:GWL_STYLE 窗口的外观
窗口句柄,m_hWnd//与窗口相关的窗口句柄
GetWindowLong,获的指定窗口的信息(窗口句柄,获的什么信息) 返回要获信息
SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE) &~WS_MAXIMIZEBOX);
改变窗口的光标和背景,在窗口类中完成的。
要想改变,注册一个自己的类,
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_HELP);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=AfxGetInstanceHandle();//获的当前实例的句柄
wndcls.lpfnWndProc=::DefWindowProc;用缺省的窗口过程,用全局
wndcls.lpszClassName="sunxin.org";类名
wndcls.lpszMenuName=NULL;菜单名字
wndcls.style=CS_HREDRAW | CS_VREDRA//窗口类的类型
RegisterClass(&wndcls);//注册窗口类
cs.lpszClass="sunxin.org";*/
另外,光标和背景是应用程序类所控制的,应用程序类在框架类之上,框架类 可改图标
也可用AfxRegisterWndClass来
cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW);
3.如果窗口已创建:SetClassLong(在OnCreat中)
SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);
加载Icon
m_hIcons[0]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
m_hIcons[1]=LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON2));
m_hIcons[2]=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON3));
小技巧:index=++index%3
4.工具栏编程:
(1)加入分割符方法;
(2)框架类创造工具栏方法(MSDN);
A.加入一个工具栏资源;
B.构建一个对像;
C.调用Creat或 createx
D.调用loadToolbar
E.EnableDocking和DockToolControlbar
F. if(m_newToolBar.IsWindowVisible())
{
m_newToolBar.ShowWindow(SW_HIDE);
}
else
{
m_newToolBar.ShowWindow(SW_SHOW);
}
RecalcLayout();//调整
DockControlBar(&m_newToolBar)//停靠工具栏
或ShowControlBar(&m_newToolBar,!m_newToolBar.IsWindowVisible(),FALSE);
pCmdUI->SetCheck(m_newToolBar.IsWindowVisible());显示复选
5.状态栏
(1)CStatusBar类己定义要想修改 在indicators中增加ID,定义一个字符串资源;再
f (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar/n");
return -1; // fail to create
}
(2)获得时间
CTime t=CTime::GetCurrentTime();
CString str=t.Format("%H:%M:%S");
(3)最后要 index=m_wndStatusBar.CommandToIndex(IDS_TIMER);/获得INDEX
m_wndStatusBar.SetPaneInfo(index,IDS_TIMER,SBPS_NORMAL,sz.cx);//设置指示器 面版的参数
m_wndStatusBar.SetPaneText(index,str);
(4)Cprogressctrl 、sendmessage,postmessage,PBS_SMOOTH,WM_USER, SetWindowPos,setstep和stepit,setrange,临时和持久的窗
详见MSDNt和(
http://www.hongen.com/pc/program/apitutor/api0011/api01.htm)
((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str);
((CMainFrame*)GetParent())->SetMessageText(str);
((CMainFrame*)GetParent())->GetMessageBar()->SetWindowText(str);
GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(str);
CView::OnMouseMove(nFlags, point);
6.启动画面添加组件splash screen