1、下面的代码用于获取屏幕的长度和宽度 

int iWidth = GetSystemMetrics(SM_CXSCREEN); //
int iHeight = GetSystemMetrics(SM_CYSCREEN);
::InvalidateRect(NULL,&CRect(0,0,iWidth,iHeight),FALSE);//重绘该区域

2、下面的代码用于设置控件的默认值(单选框和编辑框)

m_DelayTest.SetCheck(1);
SetDlgItemText(IDC_EDT_TEST_TIME_INTERVAL,_T("16"));

3、下面的代码用于获取编辑框中的内容

CString csValue;
GetDlgItemText(IDC_EDT_TEST_TIME_INTERVAL,csValue);
m_MaxInterval = _ttoi(csValue.GetBuffer());

4、通过控件ID设置控件显示的文字

GetDlgItem(IDC_MSG)->SetWindowText(_T("配置信息已经保存,注意:需重新启动AirMove配置才能生效。。。。。。"));

5、通过控件ID让指定控件(窗口)有效或失效

GetDlgItem(IDC_BTN_VIDEO_CAP)->EnableWindow(false);//失效
GetDlgItem(IDC_BTN_VIDEO_CAP)->EnableWindow(true);//生效

6、让窗口中绘制的某个图形移动

方法1、在原图形位置使用背景色画一遍,然后再在新位置把图形画出来,这种方式适合背景色单一,且已经知道背景色的情况。

方法2、让窗口重绘,然后再把图形绘制出来,简单的示例代码如下:

bool CBullet::DrawCur(bool bClear)
{
if (NULL == m_pDC || NULL == m_MainHwnd)
return false;
double dLeftTopX = m_curPos.x - m_iLen , dLeftTopY = m_curPos.y - m_iLen;
double dBottomRightX = m_curPos.x + m_iLen, dBottomRightY = m_curPos.y +m_iLen;
if (bClear)
{
InvalidateRect(m_MainHwnd,CRect(dLeftTopX-1, dLeftTopY-1, dBottomRightX+1 , dBottomRightY+1),true);
UpdateWindow(m_MainHwnd);
}
else
{
CPen* pOldPen = NULL;
CPen LinePen(PS_SOLID,2, 0xFF0000);
pOldPen = m_pDC->SelectObject(&LinePen);
m_pDC->Ellipse(CRect(dLeftTopX, dLeftTopY, dBottomRightX , dBottomRightY));
m_pDC->SelectObject(pOldPen);
}
return true;
}

只需要连续两次调用该函数,先传参数为true,后传入参数为false即可实现小圆圈的移动。

7、在控件上面加载并显示位图

        m_test_bmp.Detach();
m_test_bmp.LoadBitmap(IDB_BITMAP_GUN);
m_test_Static2.SetBitmap(m_test_bmp);

其中:

m_test_bmp为一个位图类的对象,定义形式为:CBitmap m_test_bmp;

m_test_Static2为一个静态文本控件,定义形式为CStatic m_test_Static2;在使用时可以根据需要改为button之类的控件。

8、为组合框下拉框动态添加字符串,需要先为组合框增加一个对应的变量

 m_ComBoxLogLevel.ResetContent();
m_ComBoxLogLevel.AddString(_T("OFF"));
m_ComBoxLogLevel.AddString(_T("MIN"));
m_ComBoxLogLevel.AddString(_T("MID"));
m_ComBoxLogLevel.AddString(_T("MAX"));

9、动态创建一个static控件

(1)先定义一个CStatic的指针,例如:

 CStatic* pStatic1;

(2)为指针new一个CStatic对象,并创建和显示它,

 pStatic1  = new CStatic();
pStatic1->Create(_T("dynamic"),
WS_CHILD|WS_VISIBLE|SS_CENTER|SS_NOTIFY,
CRect(10,10,150,50),
this,
65520);
pStatic1->ShowWindow(true);

  (3)千万别忘了delete掉new生成的对象

delete pStatic1;

10、在MFC的窗口上加载jpg图片

(1)包含头文件

#include <atlimage.h>

(2)定义CImage对象和DC指针,前者用于管理图片,后者指向显示的窗口的DC

CImage m_Image;
CDC* m_pDrawDC;
//获取当前窗口的DC
if (NULL == m_pDrawDC)
m_pDrawDC = this->GetDC();

需要注意:m_pDrawDC使用完之后需调用ReleaseDC释放:

if (NULL != m_pDrawDC)
{
ReleaseDC(m_pDrawDC);
m_pDrawDC = NULL;
}

(3)加载并显示一副jpg图片:

m_Image.Destroy();
_ChangeCurPicIndex(0);
stringstream sstr;
sstr<<m_pCfgInfo->pathName<<"\\"<<m_iCurPicIndex<<".jpg";
string sFileName = sstr.str();
HRESULT hResult;
hResult = m_Image.Load(sFileName.c_str());
if (FAILED(hResult))
{
_OutputLog("fail,Load picture:"+sFileName);
return false;
}
if (!m_Image.IsNull())
m_Image.Draw( m_pDrawDC-> m_hDC,0,0);    

(4)防止图片缩放时失真

可在初始化化时加如下代码:

 m_pDrawDC->SetStretchBltMode(HALFTONE);//防止图片缩放时失真

11、播放MP3

只需要如下调用API即可(其他暂停之类的也是如此):
string str=_T("play D:\\test_superplayer\\1.mp3");
mciSendString(str.c_str(),NULL,0,NULL);
其头文件及所需库为:
#pragma comment(lib, "winmm.lib")
#include <Mmsystem.h>

12、改变对话框的背景颜色,只需在该对话框的OnCtlColor函数(消息WM_CTLCOLOR)中提前返回自己定义的颜色即可:

HBRUSH CSuperPlayerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO:  在此更改 DC 的任何属性
m_DlgBKBrush.CreateSolidBrush(RGB(64,64,255));    //初始化窗口背景颜色为蓝色
return m_DlgBKBrush;//定义自己的背景颜色
// TODO:  如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}

13、Timer

(1)包含头文件:

#include <windows.h>

(2)定义一个Timer的ID:

#define TIMDER_SCREENSAVER_ID 1000

(3)设置该ID的Timer,一般在初始化函数中设置:

SetTimer(TIMDER_SCREENSAVER_ID, 100,  NULL);

(4) 添加对话框对消息WM_TIMER的OnTimer函数,在该函数里面响应所有的定时间消息,因此可以在这里根据定时器的ID进行判断和响应

void CDlgScreenSaver::OnTimer(UINT_PTR nIDEvent)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 if (TIMDER_SCREENSAVER_ID == nIDEvent)
  _Play();
  
 CDialog::OnTimer(nIDEvent);
}

MFC中常见控件的操作相关推荐

  1. MFC中Listbox控件的简单使用

    MFC中listbox控件是为了显示一系列的文本,每个文本占一行. Listbox控件可以设置属性为: LBS_CHILD   :(默认)子窗口 LBS_Visible :(默认)可视 LBS_Mul ...

  2. MFC中的控件是怎么实现的呢?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠

    请教一下MFC中的控件是怎么实现的呢(通过调用什么样的API,传递什么参数)?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠在主窗口上?还是直接在主窗口上画图? 我想到的是: JavaScr ...

  3. MFC中picture控件如何响应鼠标移动?

    MFC中picture控件如何响应鼠标移动? 2011-08-21 21:23 轻若惊鸿 | 浏览 3354 次 硬件网络 我将一个picture控件的属性中的Notify勾上了,但是只能响应鼠标按键 ...

  4. (VC2005)MFC中添加控件的成员变量.

    VC 2005 中添加控件的成员变量. 方法一:使用变量添加向导. 右击控件->Add Variable (打开了 Add Member Variable Wizard)  -> 输入Va ...

  5. MFC中CStatic控件动态改变

    我现在需要一个静态控件,当鼠标放上去时字体与颜色都要改变,当鼠标离开时在变回来. 现在可以改变字体,但是改变字的颜色还不行.我去网上搜了一下,两种方法,一个在父窗口中相应onctlcolor消息,但是 ...

  6. MFC中CSTATIC控件双击全屏/双击恢复

    双击全屏方法有两种 1.双击放大的时候调static控件的父句柄SerParent让控件的父句柄变成桌面,然后再提取桌面的分辨率用movewindow或者setwindowpos改变控件大小.恢复成原 ...

  7. qt中提升控件的操作

    我的代码里面自己写了一个类myview,继承自QGraphicsView,然后就把拖到界面上的QGraphicsView控件通过提升控件的方式替换成自己的myview类. 先在工具栏拖一个QGraph ...

  8. 关于错误码0x80040154 MFC中ACtiveX控件没有注册的正确解决方案

    今天遇到一个问题,以前VC++6.0做好的工程文件在另一台电脑上无法运行,并且报错, CoCreateInstance of OLE control {67397AA3-7FB1-11D0-B148- ...

  9. MFC中树形控件的应用——电话簿

    一.电话薄的代码如下: 1. // PhoneDlg.cpp : implementation file //#include "stdafx.h" #include " ...

最新文章

  1. html引入php文件中的函数,在b2core框架和simple_html_dom.php文件里面都有一个load()函数...
  2. Quartz教程三:Job与JobDetail介绍
  3. 为什么DevOps的必然趋势是BizDevOps
  4. html有4个li怎么选择第二个,如何在html中使用两个具有不同属性的Li?
  5. 慢日志定位到备份锁表Waiting for global read lock原因
  6. [note]标点符号和数学符号所对应的英文
  7. c语言encoder作业字符数组,C语言练习题库----数组
  8. web请求报出 “超过了最大请求长度”
  9. 10个互联网兼职平台,让你的一技之长变现,副业薪资比日常搬砖高也太爽了
  10. Swift游戏实战-跑酷熊猫 10 视差滚动背景
  11. DASCTF X GFCTF 2022十月挑战赛 WriteUp
  12. 【EXLIBRIS】名副其实
  13. [附源码]计算机毕业设计JAVAst音乐网站
  14. 几步操作即可实现WhatsApp群发
  15. Apache Hudi的编译及安装
  16. 奥维 最新 图源2023
  17. 基础、开发者、智能合约……统统都是矩阵元未来的关键词
  18. 在matlab中使用spm8,spm8处理流程.doc
  19. 跨越财富鸿沟:技术写作带来的无限可能 —— 怎样通过技术写作实现财富自由?
  20. python mathjax_MathJax: 让前端支持数学公式

热门文章

  1. python项目总结与展望_我做知识星球一周年总结与未来展望
  2. Fedora32升级Fedora33后无线网络无法连接的问题
  3. note_maven的基本使用
  4. 初始化_Linux的内存初始化
  5. php自学建议_如何高效自学PHP?
  6. python求数字平均值_Python简单计算数组元素平均值的方法示例
  7. Java基础04 编译与反编译
  8. php $key{$x},Thinkphp 3.x key可控注入(?)
  9. Python 柱状图 横坐标 名字_Python气象绘图教程(四)
  10. 实体 联系 模型mysql_数据库实体联系模型与关系模型