C++基于对话框的程序,运行时候编辑框不显示颜色,字体也不变化,怎么回事?

问题描述

C++基于对话框的程序,运行时候编辑框不显示颜色,字体也不变化,怎么回事?

我添加三处代码如下:就是不显示颜色和字体

HBRUSH CADODataBase2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
try
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO:  Change any attributes of the DC here
    if(IDC_CONNECT == pWnd->GetDlgCtrlID())
    {
        //pDC->SelectObject(&m_Midft);
        pDC->SetTextColor(RGB(255,255,0));
        //pDC->SetBkMode(TRANSPARENT);
        return m_Grancybh;
    }
    //else if(nCtlColor==CTLCOLOR_EDIT)   //更改编辑框

    //{

    //   //pDC->SetBkMode(TRANSPARENT);

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

    //  pDC->SetBkColor(RGB(165,254,236));

    //  HBRUSH b=CreateSolidBrush(RGB(165,254,236));

    //  return b;

    //}

    if(IDC_RESULT==pWnd->GetDlgCtrlID())
    {
        pDC->SelectObject(&m_Maxft);
        pDC->SetBkMode(TRANSPARENT);

        if(!strcmp("UNZIP And UPload please waiting", m_strTestResult))
        {
            pDC->SetTextColor(RGB(0,255,0));
            return m_Yellowbh;
        }
        if(!strcmp("PASS", m_strTestResult))
        {
            pDC->SetTextColor(RGB(0,0,255));
            return m_Greenbh;
        }

    }

    if(IDC_TESTTIME == pWnd->GetDlgCtrlID())
    {
        pDC->SelectObject(&m_Minft);
        pDC->SetTextColor(RGB(0,0,255));
        pDC->SetBkMode(TRANSPARENT);
    }

    // TODO:  Return a different brush if the default is not desired
    return hbr;
}
catch(...)
{
    AfxMessageBox("OnCtlColor fail");
    return 0 ;
}

}

private:

CFont           m_SupMinft, m_Minft, m_Midft, m_Maxft, m_Supft;
CBrush          m_Redbh,    m_Greenbh, m_Yellowbh, m_Grancybh, m_brush, m_  Blackbh;

m_SupMinft.CreatePointFont(100, _T("Arial"));
m_Minft.CreatePointFont(200, _T("Arial"));
m_Midft.CreatePointFont(350, _T("Arial"));
m_Maxft.CreatePointFont(1000,_T("Arial"));

m_Redbh.CreateSolidBrush(RGB(255,0,0));
m_Greenbh.CreateSolidBrush(RGB(0,255,0));
m_Yellowbh.CreateSolidBrush(RGB(255,255,0));
m_Grancybh.CreateSolidBrush(RGB(82,64,111));
m_brush.CreateSolidBrush(RGB(0,   255,   0));

解决方案

你是怎么定义的函数,要按ctrl+w调出类向导,然后把WM_CTLCOLOR消息和OnCtlColor函数关联起来才行。

解决方案二:

OnCtlColor 这个是否函数是否有被调用,你是否绑定了对应的消息

解决方案三:

使用断点查找函数有没有被调用不就行了

解决方案四:

咳,最好对于VC++编写的对话框程序还是不要变色吧。

时间: 2024-09-29 17:08:06

C++基于对话框的程序,运行时候编辑框不显示颜色,字体也不变化,怎么回事?的相关文章

学写基于对话框的程序

用汇编写基于对话框的程序,可以和写VB程序一样清晰简单,并且相当多的程序都是这样的结构.用VB写的所以程序几乎都是这样的 .设计程序界面 和在VC中一样,界面(对话框已经各种控件)一般是以资源的方式存在的.编辑资源文件完全可以使用VC的资源编辑器.但是熟悉 一下资源文件的写法及意义是编程所必须的.下面是一个资源文件的例子: #include "\masm32\include\resource.h"#define IDC_EDIT 3000#define IDC_BUTTON 3001#

c++-win32编程中基于对话框的程序和普通的窗口程序有什么区别?

问题描述 win32编程中基于对话框的程序和普通的窗口程序有什么区别? 很疑惑,既然窗口可以直接编写,为什么还要基于对话框来写程序? 解决方案 这就好比你将滚动条用于窗口一部分和使用滚动条控件,效果最终一样,但是后者Windows会为你处理一些鼠标和键盘上的逻辑,使得编程更容易,对话框中一般使用大量控件,Windows会为你处理比如输入焦点转移.键鼠等逻辑.

C++基于对话框的程序的框架实例_C 语言

本文实例讲述了C++基于对话框的程序的框架.分享给大家供大家参考.具体如下: resource.cpp源文件如下: 复制代码 代码如下: #include "resource.h"    CMyApp theApp;    BOOL CMyApp::InitInstance()  {      CMainDialog dlg;      m_pMainWnd = &dlg;   //给m_pMainWnd 主窗口      dlg.DoModal();      return

mfc求助-使用AnimateWindow()后程序中的 编辑框显示出现问题

问题描述 使用AnimateWindow()后程序中的 编辑框显示出现问题 vs2008中基于对话框的程序,在对话框初始化函数 中添加AnimateWindow(300,AW_CENTER)后,对话框中的编辑框控件下陷显示了,当鼠标移动到编辑框上后,才恢复正常(编辑框不下陷),不加AnimateWindow(300,AW_CENTER)时显示正常的,怎样解决呢 ?

ios开发-程序运行正常,模拟器没有显示

问题描述 程序运行正常,模拟器没有显示 现在在自学ios开发,学到分页栏与选取器这里,程序运行正常,可是模拟器完全空白,想问下这是什么原因?谢谢! 解决方案 你可以把程序的入口控制器,改成你这个BIDatePickerViewController,看代码应该可以显示,可能是storyboard上的View Controller与代码的View Controller不相符所产生的问题

发送一个字符串到其他程序的焦点编辑框

问题描述 我像用C#做一个程序,发送一个字符串到其他应用程序的焦点编辑框,比如WORD或者其他软件的编辑输入框.这样用sendmaessage()函数,但是如何定位另外一个程序的编辑框,是获取其他程序的编辑框的句柄,还是要定位当前书标的坐标.提供下思路.谢谢. 解决方案 解决方案二:抓句柄..但是你这个思路并不是健康的思路..解决方案三:systemapiGetFocus获取句柄后设置字符串到剪贴板SendMessage(hwnd,770,0,0);粘贴.解决方案四:谁知道提供下详细思路

mfc-用MFC的编辑框怎么显示16进制

问题描述 用MFC的编辑框怎么显示16进制 从串口收的数据,想直接用16进制显示,怎么做?在MFC的编辑框里显示- 解决方案 // TODO: 在此处添加消息处理程序代码 //从串口接收数据并显示在编辑框中 VARIANT variant_inp; COleSafeArray safearray_inp; long len k; byte rxdata[512]; //设置BYTE数组 CString strtemp; unsigned short CRC16 = 0; short temp[4

thinkphp-用thinkPHP开发的后台,现在后台的内容编辑框不显示怎么办?

问题描述 用thinkPHP开发的后台,现在后台的内容编辑框不显示怎么办? 解决方案 样式表用错了,或 textarea 标记未封闭 解决方案二: 用浏览器F12调试一下,看看不是脚本或样式冲突了.

请问怎么在基于对话框的程序中加入IE控件?

问题描述 我在项目开始的时候选择activeX控件了,但是不知道该怎么加一个IE控件到对话框中呢?我看"项目"那里没有啊. 解决方案 解决方案二:有没有人帮帮我啊,我才开始学vc.net的解决方案三:应该有一个IE的图标的...MicrosoftWeb浏览器控件解决方案四:直接在对话框上右击,选插入"Activex控件",选择"MicrosoftWeb浏览器"控件就行了解决方案五:工具菜单->选择工具箱项->COM组件->选中&