前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MFc界面添加滚动条笔记

MFc界面添加滚动条笔记

作者头像
流川疯
发布于 2019-01-18 06:21:47
发布于 2019-01-18 06:21:47
1.3K0
举报

2012-4-23

2.The Fingerprint Contrast and Analysis System

3.参照书上代码将程序背景图片处理好。

4.add new image 窗口出现时大小正好为整个客户区

CRect rect; pView->GetClientRect(rect); ClientToScreen(rect); pDlg->MoveWindow(rect);

5.vc6的风格转换为 vs2008的风格

解决方案:stdafx.h文件里 加上 #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_IA64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif

7.改变程序tittle ----在程序创建之前,框架类中可以如下形式创建:         cs.style&=~FWS_ADDTOTITLE;//取反后与,现有类型做于操作即可去掉这个类型  cs.lpszName=_T("The Fingerprint Contrast and Analysis System");

-----在程序创建之后,可以再oncreat()函数中如下创建 SetWindowLong();

-----程序创建之前:  WNDCLASS wndcls;  wndcls.cbClsExtra=0;  wndcls.cbWndExtra=0;  wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);   //创建有颜色的背景画刷,这一句必须有。  wndcls.hCursor=LoadCursor(NULL,IDC_HELP);          //选择help的cursor  wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);  wndcls.hInstance=AfxGetInstanceHandle();  wndcls.lpfnWndProc=::DefWindowProc;  wndcls.lpszClassName=_T("The Fingerprint Contrast and Analysis System");  wndcls.lpszMenuName=NULL;  wndcls.style=CS_HREDRAW |CS_VREDRAW;          //横向重绘,纵向重绘

 RegisterClass(&wndcls);

 cs.lpszClass=_T("The Fingerprint Contrast and Analysis System");

在框架窗口中,只能改变窗口title的图标。 而改变背景和,鼠标的图标应该在view类中改变

cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,0,0,LoadIcon(NUll,IDI_WARING));

----程序创建之后:框架类Oncreat()中

SetClassLong

---动态图标的创建 ----1.首先导入图标,添加HICON变量类型m_hicons[] ----2.oncreate()函数中  m_hicons[0]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));  m_hicons[1]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON2));  m_hicons[2]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON3));  m_hicons[3]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON4));  m_hicons[4]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON5));

 SetTimer(1,500,NULL); ----3.相应onTime()时间  static int index=0;  SetClassLong(m_hWnd,GCL_HICON,(LONG)m_hicons[index]);  index=++index%5;

8.创建菜单快捷按钮只需要id何菜单相同即可

9.给程序右下角添加时间,在框架类中添加 ------1,添加静态字符串资源  static UINT indicators[] =  {  ID_SEPARATOR,           // status line indicator  IDS_TIMER,  IDS_PROGRESS,  ID_INDICATOR_CAPS,  ID_INDICATOR_NUM,  ID_INDICATOR_SCRL,  };  并注册 -----2,添加下列代码获取时间,需要在timer中添加    CTime t=CTime::GetCurrentTime();  CString str=t.Format("%H:%M:%S");//得到时间后格式化  CClientDC dc(this);  CSize sz=dc.GetTextExtent(str);//得到字体时间的长度  m_wndStatusBar.SetPaneInfo(1,IDS_TIMER,SBPS_NORMAL,sz.cx);  m_wndStatusBar.SetPaneText(1,str);

10.创建进度栏 ----1.首先构造进度栏对象CProgressCtrl m_progress; ----2.oncreat()函数返回之前创建进度栏 ----3.自定义一个消息,只要比WM_USER 大即可,  #define UM_PROGRESS  WM_USER+1  并且做消息响应函数原型的声明,(注释宏的下面)  afx_msg LRESULT OnProgress(WPARAM wParam, LPARAM lParam); ----4.进行消息映射ON_MESSAGE ----5.定义函数  LRESULT CMainFrame::OnProgress(WPARAM wParam, LPARAM lParam) {  CRect rect;  m_wndStatusBar.GetItemRect(2,&rect);  m_progress.Create( WS_CHILD | WS_VISIBLE | PBS_SMOOTH,   rect,&m_wndStatusBar,123);  m_progress.SetPos(0);  return true; } ----6.onCreate()后发送消息 SendMessage(UM_PROGRESS);直接把消息响应函数发送给消息响应函数,完后再返回。没有达到直接从此处发送消息的目的 PostMessage(UM_PROGRESS);将消息放置在消息队列当中,执行时间靠后,等create完成后再创建滚动条 若注释起来,则上述函数便不会执行。

----7.增加OnPaint()消息处理  在窗口重绘的时候,从新让进度条出现  复制定义函数的代码,会出现问题----进度条已经创建了,并且和类进行了关联,再次创建会出现问题 所以需要如下代码:  CRect rect;  m_wndStatusBar.GetItemRect(2,&rect);  if(!m_progress.m_hWnd)   m_progress.Create(WS_CHILD | WS_VISIBLE ,//| PBS_SMOOTH,    rect,&m_wndStatusBar,123);  else   m_progress.MoveWindow(rect);  m_progress.SetPos(50);

----8.进度条的移动  timer中////////////////////////////////////////////////进度条显示  m_progress.StepIt();

SkinSharp收费,但是可以使用试用版,还是可以满足咱的需求的,总比MFC本身的界面好,那颜色...拿不出手啊.... 使用很简单,就下面几个步骤:

1. 拷贝.h文件和.lib文件到程序目录下;

2. 在工程的stdafx.h 头文件,添加以下代码:         #include "SkinH.h" #pragma comment (lib,"SkinHu.lib")

     3. 对话框初始化函数OnInitDialog()里面添加以下代码,加载皮肤:SkinH_Attach(); 这个方法只加载试用版默认的皮肤。

     4. 编译下工程,产生Debug或Release文件夹,把DLL文件(SkinHu.dll )和皮肤文件(skinh.she )拷贝到此。      这样就行了。其实很多皮肤的使用方法都很简单,基本上就是拷贝一下.dll和.lib以及头文件,然后在程序中加几行代码。但是由于绝大部分皮肤都收费,还有可能因为版本、编程环境等原因,很多皮肤都用不上,目前为止在我电脑上能用的皮肤就SkinSharp和SkinPlusPlus,这两个使用都简单。但SkinPlusPlus会截获OnTimer()等方法,很让人郁闷,不知道SkinSharp如何,用着再说。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012年04月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[MFC]将基于对话框的工程改成基于BCG的
应用程序类的父类由CWinApp改成CBCGPWinApp。构造函数增加如下代码:
祥知道
2020/03/10
8940
【Windows编程】系列第六篇:创建Toolbar与Statusbar
上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮。比如典型的windows应用程序的上面是菜单栏,从菜单栏我们可以选择应用程序提供的各种功能,但是有的功能比较常用,且不能放在第一级菜单,需要进入二级、三级甚至更多的菜单才能选择。显然这样使用起来比较麻烦,于是这时候工具栏的作用就体现出来了,一般工具栏位于菜单栏的下面,但是位于客户窗口的上面。下面就是windows的文
程序员互动联盟
2018/03/13
2.2K1
【Windows编程】系列第六篇:创建Toolbar与Statusbar
教你为Win下的Go程序添加图标 原
为自己编译出来的程序添加图标是一件令人开心的事情。下面我就是介绍一下,如何为Windows平台上的Go程序添加图标:
henrylee2cn
2019/04/04
1.3K0
教你为Win下的Go程序添加图标
                                                                            原
正确处理安装程序提示 “这个程序可能安装不正确” 问题
最近公司在赶一个项目,打包完成的安装包安装完成后会有一个报错,如下图: 复现问题 出现该问题的详细环境如下(也就是一个复现问题的步骤): 开启了 Windows 兼容性助手的服务 Program Co
我与梦想有个约会
2018/07/02
1.5K0
在windows下为你的go打包程序添加图标并去除黑窗口
-ldflags="-linkmode internal" 通过Directory的方式编译,编译器会自动寻找同目录下的资源文件并打包进EXE
友儿
2023/04/06
1.5K0
VC++6.0入门——第九讲 定制应用功能程序外观
好事文章地址:https://cloud.tencent.com/developer/article/2470499
Arya
2024/12/03
920
VC++6.0入门——第九讲 定制应用功能程序外观
MFC 随机矩形
问题描述:   简单地使用随即的尺寸和颜色不停的绘制一系列的图像。 一种古老的方式:   设置一个向窗口函数发送WM_TIMER消息的windows计时器。   对每个WM_TIMER消息,调用GetDC函数获取设备环境,然后绘制一个随机矩形,接着调用ReleaseDC函数释放设备环境。 方法弊端:   程序不能很快的绘制随机矩形,必须等待每个WM_TIMER消息,会依赖于系统时钟的精度 新函数: PeekMessage(&msg,NULL,0,0,PM_REMOVE);这个函数允许一个程序检查程序队列中
用户1154259
2018/01/17
1.4K0
修改nw.js的exe文件使其请求管理员权限
默认情况下,nw.js发布的nw.exe文件请求的是普通权限,当我们的应用需要访问一些特殊目录或者注册表等,就需要程序启动的时候以管理员权限运行。那么此时如何去修改nw.exe,使其启动的时候请求admin权限呢? 首先我们找一款使用nw.js开发的软件,这里我推荐AxeSlide,首先去下载软件,安装。 如果我们软件安装之后,使用的是非Administrator用户登录的话,启动软件的时候,就会弹出UAC提升框,提醒我们该软件请求以管理员身份运行,是否同意。那么AxeSlide是如何做到的呢? 找一款PE
用户1631416
2018/04/11
2.5K0
【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 )
基于 【OpenGL】一、Visual Studio 2019 创建 Windows 桌面程序 ( Visual Studio Installer 安装 C++ 桌面开发库 | 创建桌面程序 ) 博客中创建的 Windows 桌面程序继续向下讲解 , Visual Studio 自动生成了空白的桌面程序 , OpenGL 系列开发基于该桌面程序进行 ;
韩曙亮
2023/03/28
1.3K0
【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 )
Golang|记录一些踩坑笔记
var xhr = new XMLHttpRequest(); xhr.open('get', 'https://v1.hitokoto.cn/'); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { var data = JSON.parse(xhr.responseText); var hitokoto = document.getElementById('hitokoto'); hitokoto.innerText = data.hitokoto; } } xhr.send();
TRY博客-简单的网络技术
2022/09/08
2650
【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”
本系列博文几乎没有难啃的“专业术语”,尽量让读者能够看明白文章所述内容,是本系列博文的核心宗旨之一。(由于本人也是由于项目需要,所以才来查阅相关资料,文中出现的错误欢迎指出,共同进步!谢谢!)
1_bit
2020/10/23
1.1K0
【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”
Win32 最简单的窗口模板和常用的5个消息参数使用示例
返回参数 wParam:具体点击的位置,如 SC_CLOSE 关闭 lParam:鼠标光标位置 LOWORD(lParam); //水平位置 HIWORD(lParam); //垂直位置
独元殇
2023/03/16
1K0
Windows 下窗口画图---十天教会你俄罗斯方块
接上篇:https://blog.csdn.net/qq_41603898/article/details/80968333
用户2965768
2018/08/30
6210
【读书笔记】Windows程序设计5
与从BeginPaint函数返回的设备句柄不同,从GetDC返回的设备句柄中的裁剪区域是整个客户区,而不仅仅
zhang_derek
2022/12/21
2.5K0
Win基本框架代码
声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/c%e5%ae%9e%e7%8e%b0%e9%9b%b7%e9%9c%86%e6%88%98%e6%9c%ba-58/
对弈
2019/09/04
4870
C# 控制台使用 UAC 权限
本文告诉大家如何在 C# 控制台项目使用 UAC 权限。这个方法在 WPF 和 控制台都是可以使用。
林德熙
2022/08/04
8510
Win32实现GDI画太极图
声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/c%e5%ae%9e%e7%8e%b0%e9%9b%b7%e9%9c%86%e6%88%98%e6%9c%ba-60/
对弈
2019/09/04
7840
键盘钩子入门
钩子是操作系统消息处理的一种机制。通过钩子,应用程序可以安装一个钩子回调过程让系统调用,从而监视系统中的消息队列。在这些消息到达目标窗口之前对这些消息进行处理。
全栈程序员站长
2022/08/11
9940
键盘钩子入门
Can't build Qt5 (qtbase) on Windows XP (win32-msvc2005)
In a cmd.exe prompt, using msysgit, I cloned git://gitorious.org/qt/qtbase.git. Set QTDIR to that qtbase directory, added %QTDIR%\bin to PATH. Made sure sh.exe is not in the PATH. Set The problem:
用户3519280
2023/07/06
1540
Can't build Qt5 (qtbase) on Windows XP (win32-msvc2005)
Windows窗口模板
1.界面效果 2.相关代码 #include<Windows.h> LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPAR
花狗Fdog
2020/10/28
5520
Windows窗口模板
推荐阅读
相关推荐
[MFC]将基于对话框的工程改成基于BCG的
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文