首页 孙鑫VC学习笔记第9课

孙鑫VC学习笔记第9课

举报
开通vip

孙鑫VC学习笔记第9课孙鑫VC学习笔记第9课 第9课 1.修改外观和图标可以在MainFrm中进行,而修改背景和光标只能在View中进行。为什么, 因为view的显示挡在了MainFrame的前面。 a.在MainFrame中 PreCreateWindow()中,在窗口创建之前,用重新注册窗口类的方法,比较麻烦。在 PreCreateWindow()中修改 也可以用简单的方法,用全局函数 //cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,0,0, // ...

孙鑫VC学习笔记第9课
孙鑫VC学习笔记第9课 第9课 1.修改外观和图标可以在MainFrm中进行,而修改背景和光标只能在View中进行。为什么, 因为view的显示挡在了MainFrame的前面。 a.在MainFrame中 PreCreateWindow()中,在窗口创建之前,用重新注册窗口类的方法,比较麻烦。在 PreCreateWindow()中修改 也可以用简单的方法,用全局函数 //cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,0,0, // LoadIcon(NULL,IDI_WARNING)); 在窗口创建之后,在OnCreate()中修改 //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)); b.在View中 PreCreateWindow()中 //cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW, // LoadCursor(NULL,IDC_CROSS),(HBRUSH)GetStockObject(BLACK_BRUSH),NULL); cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW); OnCreate()中 SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(BLACK_BRUSH)); SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_HELP)); 2.创建一个不断变化的图标。用定时器和SetClassLong完成 a.准备三个图标文件,放在RES文件夹,Insert->Resource-三个图标, b.在CMainFrame中增加图标句柄数组,m_hIcons[3] m_hIcons[0]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));//MAKEINTRESOURCE是一个宏,它将整数转化为Win32的资源类型,简单的说它是一个类型转换#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i))) m_hIcons[1]=LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON2));//此处需要 用到theAPP对象,故要在文件中声明extern CStyleApp theApp; m_hIcons[2]=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON3)); 然后将其初始化 c.然后在定时器中实现 3.工具栏的编程 a.加入分隔符的方法,向右拖动即可; b.删除按纽的方法,拖出即可。 4.创建一个新的工具栏的方法 a.插入一个工具栏,画出其图形。 b.在头文件中,定义CToolBar m_newToolBar c.在MainFrm.cpp的OnCreate()中调用 if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_RIGHT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_newToolBar.LoadToolBar(IDR_TOOLBAR1)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } d.点击“新的工具栏”菜单时,隐藏工具栏。两种方法 第一种/*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); e.将菜单增加复选标记。在OnUpdateUI中加入代码 pCmdUI->SetCheck(m_newToolBar.IsWindowVisible()); 5.状态栏编程 a.Indicator[]数组中有状态栏的信息 如果要增加,可以在String Table中加入一个IDS_Timer,然后将其加入到[]中。 b.在时间栏显示时间,代码略,比较简单 6.进度栏 a.增加成员变量,CProgressCtrl m_progress b.OnCreate中 m_progress.Create(WS_CHILD | WS_VISIBLE,// | PBS_VERTICAL, rect,&m_wndStatusBar,123); m_progress.SetPos(50);*/ c.将其创建到状态栏的方法~如果在OnCreate()中创建,则不成立,因为获取矩形大小时失败。 解决 办法 鲁班奖评选办法下载鲁班奖评选办法下载鲁班奖评选办法下载企业年金办法下载企业年金办法下载 ,用自定义消息: 在MainFrm.h中#define UM_PROGRESS WM_USER+1 afx_msg void OnProgress(); 在MainFrm.cpp中 ON_MESSAGE(UM_PROGRESS,OnProgress) 然后实现这个函数 void CMainFrame::OnProgress() { CRect rect; m_wndStatusBar.GetItemRect(2,&rect); m_progress.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, rect,&m_wndStatusBar,123); m_progress.SetPos(50); } 最后在OnCreate中调用 PostMessage(UM_PROGRESS);//不能用SendMessage() d.解决重绘时进度栏改变的问题。在OnPain()中重写代码 CRect rect; m_wndStatusBar.GetItemRect(2,&rect); m_progress.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, rect,&m_wndStatusBar,123); m_progress.SetPos(50); 然后在定时器消息处理函数中加入 m_progress.StepIt(); e.显示鼠标位置。在View中增加OnMouseMove()处理函数 CString str; str.Format("x=%d,y=%d",point.x,point.y); //((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str); //((CMainFrame*)GetParent())->SetMessageText(str); //((CMainFrame*)GetParent())->GetMessageBar()->SetWindowText(str); GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(str); 7.加入启动画面 Project-Component and ->Visual C++ Components->SplashScreen->插入
本文档为【孙鑫VC学习笔记第9课】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_337177
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:5
分类:生活休闲
上传时间:2018-12-15
浏览量:16