精华内容
下载资源
问答
  • 展开全部hopeztm的实现思路有些问题:1)楼主要的是静态文本框,怎么能随便换成CEdit?必须继承自CStatic2)消32313133353236313431303231363533e58685e5aeb931333262353362息映射有ON_WM_MOUSELEAVE()这个宏吗?因为...

    展开全部

    hopeztm的实现思路有些问题:

    1)楼主要的是静态文本框,怎么能随便换成CEdit?

    必须继承自CStatic

    2)消32313133353236313431303231363533e58685e5aeb931333262353362息映射有ON_WM_MOUSELEAVE()这个宏吗?

    因为MFC不支持WM_MOUSELEAVE消息,必须将WM_MOUSELEAVE看成是自定义消息,手工添加消息映射宏:ON_MESSAGE(WM_MOUSELEAVE, myFunc);

    myFunc的函数签名为:afx_msg LRESULT myFunc(WPARAM, LPARAM);

    3)第五条能这样关联吗?

    通过SubClassDlgItem进行关联。

    我做了个CClrStatic的类,头文件为ClrStatic.h,CPP文件为ClrStatic.cpp。楼主可以看下。

    另外需要对做一些解释:

    1)WM_MOUSELEAVE可以看成是自定义消息,该消息WINDOWS默认是不会发送给我们的控件的,必须为控件先调用TrackMouseEvent函数才能在鼠标离开控件时,控件能收到WM_MOUSELEAVE

    2)当鼠标在控件中时,可以简单捕获WM_MOUSEMOVE消息,需要注意的是在鼠标移动时,不能总是Invalidate,否则控件比较大时,会出现闪屏。当鼠标进入控件或离开时,简单关联一个BOOL变量,让CClrStatic知道,当前鼠标是否在控件里或离开,第一次进入控件即首次获得WM_MOUSEMOVE消息时,将BOOL变量设置成TRUE,并调用一次Invalidate,以后当鼠标持续在控件中时便可以不用调用Invalidate,避免出现闪屏。

    3)CStatic和对话框一样,一般是有3种颜色需要控制,一个是背景颜色,即客户区的颜色。该颜色的作用比喻是:

    画家在墙上作画时,画了一幅山水画,欣赏者看过了山水画的效果后,画家还想让欣赏者看人物画。这个时候不可能在山水画上直接画的,技术上可以,但画出来的还是人物画吗?因此画家需要将墙壁用白色画刷将前面的山水画全部涂掉,因此白色就是窗口背景的颜色。每次Invalidate后,都会用白色把客户区刷白了,当然白色不一定是我们想要的,可以将白色换成其他颜色。

    第二个颜色是字体颜色,该颜色在CDC::GetTextColor获得,在CDC::SetTextColor设置;

    第三个颜色是存托字体的背景色,该颜色在CDC::GetBkColor获得,在CDC::SetBkColor设置,这个概念和客户区的概念有点混淆,反正它是一块很小的区域,正好可以围住文字的那块矩形区域,文字多了,该区域的宽相应会增加。实在不明白,楼主可用我提供的函数SubClass来试验一下。其中最后两个参数指定了CClrStatic需要使用的客户区背景色和字体背景色。

    4)SubClass是个CClrStatic的自定义函数,该函数可以用来和对话框进行交流,函数定义虽然是在CClrStatic中,但其实该函数是给对话框来调用的。

    5)SubClassDlgItem是个CWnd的成员函数,是个MFC函数,不是我们自己的自定义函数,它的概念解释比较麻烦,楼主可以参考MSDN。

    以下是代码:

    -------------------------CClrStatic.h------------------------------

    #pragma once

    // CClrStatic

    class CClrStatic : public CStatic

    {

    DECLARE_DYNAMIC(CClrStatic)

    public:

    CClrStatic();

    virtual ~CClrStatic();

    protected:

    DECLARE_MESSAGE_MAP()

    public:

    afx_msg LRESULT OnMouseLeave(WPARAM, LPARAM);

    public:

    bool m_fClr;

    public:

    afx_msg HBRUSH CtlColor(CDC* /*pDC*/, UINT /*nCtlColor*/);

    public:

    virtual BOOL SubClass(UINT nID, CWnd* pParent, COLORREF clrBackground, COLORREF clrBk);

    public:

    afx_msg void OnMouseMove(UINT nFlags, CPoint point);

    public:

    COLORREF m_clrBackground;

    public:

    COLORREF m_clrBk;

    };

    ----------------------------------ClrStatic.cpp-----------------------------

    // ClrStatic.cpp : 实现文件

    //

    #include "stdafx.h"

    #include "ShowExtensions.h"

    #include "ClrStatic.h"

    // CClrStatic

    IMPLEMENT_DYNAMIC(CClrStatic, CStatic)

    CClrStatic::CClrStatic()

    : m_fClr(false)

    {

    }

    CClrStatic::~CClrStatic()

    {

    }

    BEGIN_MESSAGE_MAP(CClrStatic, CStatic)

    ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)

    ON_WM_CTLCOLOR_REFLECT()

    ON_WM_MOUSEMOVE()

    END_MESSAGE_MAP()

    // CClrStatic 消息处理程序

    LRESULT CClrStatic::OnMouseLeave(WPARAM wParam, LPARAM lParam)

    {

    if (m_fClr) {

    m_fClr = FALSE;

    Invalidate();

    }

    return 0;

    }

    HBRUSH CClrStatic::CtlColor(CDC* pDC, UINT /*nCtlColor*/)

    {

    // TODO: 在此更改 DC 的任何属性

    // TODO: 如果不应调用父级的处理程序,则返回非空画笔

    if (m_fClr) {

    pDC->SetTextColor(RGB(255, 0, 255));

    pDC->SetBkColor(m_clrBk);

    return CreateSolidBrush(m_clrBackground);

    }

    return NULL;

    }

    BOOL CClrStatic::SubClass(UINT nID, CWnd* pParent, COLORREF clrBackground, COLORREF clrBk)

    {

    BOOL fRet = SubclassDlgItem(nID, pParent);

    ModifyStyle(0, SS_NOTIFY);

    m_clrBackground = clrBackground;

    m_clrBk = clrBk;

    return fRet;

    }

    void CClrStatic::OnMouseMove(UINT nFlags, CPoint point)

    {

    // TODO: 在此添加消息处理程序代码和/或调用默认值

    CStatic::OnMouseMove(nFlags, point);

    if (!m_fClr) {

    m_fClr = TRUE;

    Invalidate();

    TRACKMOUSEEVENT tme = { sizeof(tme) };

    tme.dwFlags = TME_LEAVE;

    tme.hwndTrack = this->GetSafeHwnd();

    TrackMouseEvent(&tme);

    }

    }

    -------------------------------CTestDlg.h-----------------------------------

    //#include "xxx.h" etc.

    #include "ClrStatic.h"

    //some codes etc.

    class CTestDlg : public CDialog

    {

    //some codes etc.

    public:

    CClrStatic m_clrStatic;

    //some codes etc.

    };

    -------------------------------CTestDlg.cpp---------------------------------

    //#include "xxx.h" etc.

    #include "ClrStatic.h"

    //some codes etc.

    BOOL CTestDlg::OnInitDialog()

    {

    //some codes etc.

    m_clrStatic.SubClass(IDC_STATIC1, this, (COLORREF)GetSysColor(COLOR_BTNFACE), (COLORREF)GetSysColor(COLOR_BTNFACE));

    //some codes etc.

    }

    本回答由网友推荐

    已赞过

    已踩过<

    你对这个回答的评价是?

    评论

    收起

    展开全文
  • vc 中mfc 的 静态文本框 的名字 的字体怎么设置将静态文本框的ID改为IDC_STATIC1(只要不是IDC_STATIC即可),在Initdialog函数中写下如下代码:CFont * f;f = new CFont;f->CreateFont(53, // nHeight21, // ...

    vc 中mfc 的 静态文本框 的名字 的字体怎么设置

    将静态文本框的ID改为IDC_STATIC1(只要不是IDC_STATIC即可),在Initdialog函数中写下如下代码:

    CFont * f;

    f = new CFont;

    f->CreateFont(53, // nHeight

    21, // nWidth

    0, // nEscapement

    0, // nOrientation

    FW_BOLD, // nWeight

    FALSE, // bItalic

    FALSE, // bUnderline

    0, // cStrikeOut

    ANSI_CHARSET, // nCharSet

    OUT_DEFAULT_PRECIS, // nOutPrecision

    CLIP_DEFAULT_PRECIS, // nClipPrecision

    DEFAULT_QUALITY, // nQuality

    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily

    _T("Arial")); // lpszFac

    GetDlgItem(IDC_STATIC1)->SetFont(f); //IDC_STATIC1是静态文本框的ID

    1个回答

    将静态文本框的ID改为IDC_STATIC1(只要不是IDC_STATIC即可),在Initdialog函数中写下如下代码:

    CFont * f;

    f = new CFont;

    f->CreateFont(53, // nHeight

    21, // nWidth

    0, // nEscapement

    0, // nOrientation

    FW_BOLD, // nWeight

    FALSE, // bItalic

    FALSE, // bUnderline

    0, // cStrikeOut

    ANSI_CHARSET, // nCharSet

    OUT_DEFAULT_PRECIS, // nOutPrecision

    CLIP_DEFAULT_PRECIS, // nClipPrecision

    DEFAULT_QUALITY, // nQuality

    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily

    _T("Arial")); // lpszFac

    GetDlgItem(IDC_STATIC1)->SetFont(f); //IDC_STATIC1是静态文本框的ID

    ◆◆

    评论读取中....

    请登录后再发表评论!

    ◆◆

    修改失败,请稍后尝试

    精华知识

    展开全文
  • // LineStatic.cpp : implementation file//#include "stdafx.h"#include "MFCAppVC6.h"#include "LineStatic.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;...

    // LineStatic.cpp : implementation file

    //

    #include "stdafx.h"

    #include "MFCAppVC6.h"

    #include "LineStatic.h"

    #ifdef _DEBUG

    #define new DEBUG_NEW

    #undef THIS_FILE

    static char THIS_FILE[] = __FILE__;

    #endif

    /

    // CLineStatic

    CLineStatic::CLineStatic():m_strText(_T(""))

    {

    }

    CLineStatic::~CLineStatic()

    {

    }

    BEGIN_MESSAGE_MAP(CLineStatic, CStatic)

    //{{AFX_MSG_MAP(CLineStatic)

    ON_WM_PAINT()

    ON_WM_TIMER()

    ON_WM_CREATE()

    //}}AFX_MSG_MAP

    END_MESSAGE_MAP()

    /

    // CLineStatic message handlers

    void CLineStatic::PreSubclassWindow()

    {

    // TODO: Add your specialized code here and/or call the base class

    CFont* pFont = GetFont();

    LOGFONT logFont;

    pFont->GetLogFont(&logFont);

    logFont.lfUnderline = TRUE;

    m_Font.CreateFontIndirect(&logFont);

    CStatic::PreSubclassWindow();

    }

    void CLineStatic::OnPaint()

    {

    CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here

    dc.SetTextColor(RGB(255,0,0));

    dc.SetBkMode(TRANSPARENT);

    CRect rect;

    GetClientRect(&rect);

    TEXTMETRIC tm;

    dc.GetTextMetrics(&tm);

    CRect wRect;

    wRect = CRect(rect.left,rect.top,rect.right,rect.top + tm.tmHeight);

    dc.SelectObject(&m_Font);

    dc.DrawText(m_strText,&wRect,DT_LEFT);

    // Do not call CStatic::OnPaint() for painting messages

    }

    #if !defined(AFX_LINESTATIC_H__0478E0F1_65C7_45AD_A37F_568D6BF46BC6__INCLUDED_)

    #define AFX_LINESTATIC_H__0478E0F1_65C7_45AD_A37F_568D6BF46BC6__INCLUDED_

    #if _MSC_VER > 1000

    #pragma once

    #endif // _MSC_VER > 1000

    // LineStatic.h : header file

    //

    /

    // CLineStatic window

    class CLineStatic : public CStatic

    {

    // Construction

    public:

    CLineStatic();

    // Attributes

    public:

    // Operations

    public:

    // Overrides

    // ClassWizard generated virtual function overrides

    //{{AFX_VIRTUAL(CLineStatic)

    protected:

    virtual void PreSubclassWindow();

    //}}AFX_VIRTUAL

    // Implementation

    public:

    virtual ~CLineStatic();

    void SetText(CString& strText){m_strText = strText;}

    // Generated message map functions

    protected:

    //{{AFX_MSG(CLineStatic)

    afx_msg void OnPaint();

    //}}AFX_MSG

    DECLARE_MESSAGE_MAP()

    private:

    CFont m_Font;

    CString m_strText;

    };

    /

    //{{AFX_INSERT_LOCATION}}

    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

    #endif // !defined(AFX_LINESTATIC_H__0478E0F1_65C7_45AD_A37F_568D6BF46BC6__INCLUDED_)

    展开全文
  • 1、添加对话框类声明中字体和颜色变量public:CFont m_myFont;// 字体对象COLORREF m_myColor;// 颜色对象2、在对话框初始化函数OnInitDialog()中对字体和颜色进行初始化// TODO: 在此添加额外的初始化代码m_myFont....

    1、添加对话框类声明中字体和颜色变量

    public:

    CFont m_myFont;// 字体对象

    COLORREF m_myColor;// 颜色对象

    2、在对话框初始化函数OnInitDialog()中对字体和颜色进行初始化

    // TODO: 在此添加额外的初始化代码

    m_myFont.CreatePointFont(150, _T("华文彩云"));

    m_myColor = RGB(255, 0, 255);

    3、为对话框类添加WM_CTLCOLOR消息响应函数,并在其消息响应函数OnCtlColor()中添加代码

    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);// 消息响应函数声明ON_WM_CTLCOLOR()// 消息映射HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)// 消息响应函数实现

    {

    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: 在此更改 DC 的任何属性

    if(pWnd->GetDlgCtrlID()==IDC_STATIC_WEEK)

    {

    pDC->SelectObject(&m_myFont);// 设置字体

    pDC->SetTextColor(m_myColor);// 设置颜色

    }

    // TODO: 如果默认的不是所需画笔,则返回另一个画笔

    return hbr;

    }

    展开全文
  • VC 设置静态文本框的背景色(转)

    千次阅读 2014-01-16 21:44:34
    填充静态文本框的颜色: ...1、在对话框中添加一个静态文本框,设置其id为IDC_STATIC ...2、获得静态文本框的句柄 HWND h_static = GetDlgItem(IDC_STATIC)->m_hWnd;...3、获得静态文本框的DC句柄 HDC h
  • 通过VC实现设定静态文本框的背景色和文本颜色,适合初学者。
  •  //将文本框IDC_STATIC_MENU设置为透明   pDC->SetTextColor(RGB( 255, 20, 20 ));//设置字体颜色  }  if( pWnd->GetDlgCtrlID() == IDC_STATIC_FIND )  {  pDC->SetBkMode( TRANSPARENT );  ...
  • VC 设置静态文本框透明背景

    千次阅读 2010-06-17 14:35:00
     /*if(pWnd->GetDlgCtrlID()==IDC_ST_UID) //文本框ID号  {  //pDC->SetBkColor(RGB(102,102,102));//颜色设置,可自已定义  pDC->SetBkMode(NULL_BRUSH);  } */  // TODO: 如果默认的不是所需画笔,则返回...
  • 静态文本框起到标志和注释的作用,若要给其增加响应函数,需做如下操作: 1:修改ID号 2:勾选属性:Notify
  • 选择这个控件–>属性 Align Text --> Center 左右居中 Center vertically --> True 上下居中
  • VC2005 MFC静态文本框背景色设置

    千次阅读 2017-03-10 10:20:43
    我发现如果直接有工具箱拖放一个静态文本到程序窗口时文本框的背景颜色是灰色,字体为黑色,且在属性窗口没有修改文本颜色的选项。效果图如下。 图1 红色矩形框中默认文本框颜色 这样显示就和背景颜色很不协调。
  • 添加静态元素 借助数据绑定视觉对象,还可以添加文本框、图像和形状等静态元素,以提升报表的视觉对象设计。 要添加视觉对象元素,请从“主页”选项卡中选择“文本框”、“图像”或“形状”。 添加可视元素 可以在...
  • 设置,墙纸,选择静态墙纸,并选择静止,IPhone X选择纯黑色墙纸最省电。设置—隐私—定位服务,关闭,如果以后有APP需要会提示你打开的。设置—蓝牙,关闭,需要使用的时候会提示你打开。设...
  • 本文要给大家讲解的是,按钮与文本框结合在一起的动态重置功能,enjoy~设置文本1.1 页面布局1.1.1 页面设定新建一个页面文件,命名为“重置功能”。在“重置功能”页面内新建一个命名为“窗口”的【组合文件】,并在...
  • 插入一个文本框,在文本框内插入需要的表格。 2. 表格无填充颜色,居中对齐。文本框无线条颜色,填充半透明颜色。 3. 调整文本框,以使文本框与表格完全重合。注意此时表格的宽度不能是100%,而且文本框的内边距均...
  • 跟 GroupBox 控件类似,静态文本框控件的ID也是 IDC_STATIC,所以默认的情况下他也是没有什么属性可修改的,拖拽到对话框上面之后,只是作为默认的显示提示文本信息的作用了。那么这个控件可不可以自定义呢?可不...
  • 常用控件主要包括:静态文本框、编辑框、单选按钮、复选框、分组框、列表框、组合框、图片控件、列表控件、树形控件和进度条控件等等。本节教程先来讲解静态文本框的使用。 Xtreme Toolkit Pro是屡获殊荣的VC界面库...
  • // LineStatic.cpp : implementation file // #include "stdafx.h" #include "MFCAppVC6.h" #include "LineStatic.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__;
  • 相比动态的背景,我个人觉得静态的背景更不容易视觉疲劳,主要还是动态的更费电,所以我建议大家先过过动态透明背景的瘾,然后设置成图片的。 看了上面的分享,是不是有人跃跃欲试想要给自己的微信装点一下呢,其实...
  • 第八步: 选中电脑PNG,右键“置于顶层”,此时得到最终静态效果图: 第九步 复制当前幻灯片,粘贴式保留原格式,得到两张相同的幻灯片。 第十步: 把第一页幻灯片中的长图进行垂直方向移动,把长图的顶部移动到...
  • 控件ID要改一下名字 控件Notify属性设为True 静态控件增加STN_CLICKED消息响应(应该与vc中的BN_CLICKED消息是一样的)
  • 应该用CWnd类的成员函数GetWindowText来获取,但是首先要获取这个文本控件,就要用CWnd类的另一个成员函数GetDlgItem,如果要设置文本内容,则要用另一个成员函数SetWindowText,静态文本框在默认情况下不发送通知...
  • VC静态文本超级链接

    千次阅读 2009-08-07 17:53:00
    1、添加成员变量m_RectLink,用来保存文本框的坐标,添加两个静态文本控件,将默认ID改掉:class CSampleDlg : public CDialog{// Constructionpublic: CSampleDlg(CWnd* pParent = NULL); // standard constructor ...
  • 在许多软件中,都有一个联系联系作者本人或者软件提供者的超链接,点击这个超链接可以向作者或软件提供者发送邮件或打开某个网页浏览信息,给软件的使用者带很大的方便。本文尝试设计和实现一个超级链接的...静态文本框
  • vc中 动态创建控件

    2016-01-15 01:09:00
    // 动态创建一个静态文本框 CStatic* CPICTUREDlg::CreateOneStatic(LPCTSTR str, CRTSTR Coord, UINT IDC) { CStatic *pStatic =NULL; pStatic = new CStatic; ASSERT_VALID(pStatic); pStatic-&g...
  • vc dialog绘图

    千次阅读 2011-11-12 13:59:56
    拖到对话框上一个静态文本框,id是IDC_STATIC1,在其上绘图 void CDilDlg::OnOK() { // TODO: Add extra validation here CWnd *pWnd=GetDlgItem(IDC_STATIC1); CDC *pControlDC=pWnd-> GetDC(); pWnd-> ...
  • vc菜鸟求助!!!

    2011-08-14 22:33:19
    怎么使用低级键盘钩子进行改键。。 我自己建了一个MFC工程,安装了一个低级键盘钩子,现在我就是想实现我给对话框中的静态文本框从键盘上输入一“A”但显示一个“B”

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

vc静态文本框