资源简介
MFC程序, 通过windows API 控制计算机,关机, 注销, 重启
代码片段和文件信息
// MyButton.cpp : implementation file
//
#include “stdafx.h“
#include “RESTART.h“
#include “MyButton.h“
CMyButton::CMyButton(void)
{
m_DownColor = m_UpColor = RGB(000);//初始化设为黑色
}
CMyButton::~CMyButton(void)
{
}
BOOL CMyButton::Attach(const UINT nIDCWnd* pParent)
{
if (!SubclassDlgItem(nID pParent))
return FALSE;
return TRUE;
}
void CMyButton::SetDownColor(COLORREFcolor)
{ //CMyButton类的函数
m_DownColor = color;
}
void CMyButton::SetUpColor(COLORREF color)
{
m_UpColor = color;
}
void CMyButton::DrawItem(LPDRAWITEMSTRUCTlpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);//得到绘制的设备环境CDC
VERIFY(lpDrawItemStruct->CtlType==ODT_BUTTON);
//得当Button上文字这里的步骤是:1先得到在资源里编辑的按钮的文字
//然后将此文字重新绘制到按钮上
//同时将此文字的背景色设为透明这样按钮上仅会显示文字
const int bufSize = 512;
TCHAR buffer[bufSize];
GetWindowText(buffer bufSize);
int size=strlen(buffer);//得到长度
DrawText(lpDrawItemStruct->hDCbuffersize&lpDrawItemStruct->rcItemDT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP);//绘制文字
SetBkMode(lpDrawItemStruct->hDCTRANSPARENT);//透明
if (lpDrawItemStruct->itemState&ODS_SELECTED)//当按下按钮时的处理
{////重绘整个控制
CBrush brush(m_DownColor);
dc.FillRect(&(lpDrawItemStruct->rcItem)&brush);//利用画刷brush,填充矩形框
//因为这里进行了重绘所以文字也要重绘
DrawText(lpDrawItemStruct->hDCbuffersize&lpDrawItemStruct->rcItemDT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP);
SetBkMode(lpDrawItemStruct->hDCTRANSPARENT);
}
else//当按钮不操作或者弹起时
{
CBrush brush(m_UpColor);
dc.FillRect(&(lpDrawItemStruct->rcItem)&brush);//
DrawText(lpDrawItemStruct->hDCbuffersize&lpDrawItemStruct->rcItemDT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_TABSTOP);
SetBkMode(lpDrawItemStruct->hDCTRANSPARENT);
}
if ((lpDrawItemStruct->itemState&ODS_SELECTED)&&(lpDrawItemStruct->itemAction &(ODA_SELECT|ODA_DRAWENTIRE)))
{//选中了本控件高亮边框
COLORREF fc=RGB(255-GetRValue(m_UpColor)255-GetGValue(m_UpColor)255-GetBValue(m_UpColor));
CBrush brush(fc);
dc.frameRect(&(lpDrawItemStruct->rcItem)&brush);//用画刷brush,填充矩形边框
}
if (!(lpDrawItemStruct->itemState &ODS_SELECTED) &&(lpDrawItemStruct->itemAction & ODA_SELECT))
{
CBrush brush(m_UpColor); //控制的选中状态结束去掉边框
dc.frameRect(&lpDrawItemStruct->rcItem&brush);//}
dc.Detach();
}
- 上一篇:在MFC中嵌入cef浏览器demo
- 下一篇:MFC modBus 读写串口
相关资源
- 基于mfc的多线程文件传输
- MFC数字钟(基于VC6.0)
- VC++MFC小游戏实例教程(实例)+MFC类库
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- mfc 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- c++MFC车牌自动识别定位,只能定位和
- mfc+sql 酒店客房管理系统
- 基于图割的图像分割OpenCV+MFC实现
- MFC绘制Bezier曲线B样条曲线曲线拟合
- MFC坦克大战
评论
共有 条评论