MFC文字编辑

                前两天用MFC 做了一个单文档中文字的字体,字号,颜色以及字的滚动的小作业。

                 利用菜单来做的,通过点击菜单项来改变字体,字号,颜色。

                 首先是理解到在MFC中,菜单的响应是不需要去使用菜单的ID号的,只要通过类向导对每一个菜单项建立一个响应函数然后也不要去调用这个函数,因为这些是MFC中已经弄好的。

                  再就是对菜单响应函数函数内容的编写问题,刚开始以为是的通过调用一些改变字体,颜色,字号的函数来获得改变,但那样是行不通的,因为涉及到cclient dc的问题,在菜单响应函数要使用一个dc,然后在获得菜单响应的函数中也要使用dc,这就导致对同一个菜单的消息响应用的不是同一个dc,导致菜单响应不成功。

                   解决的办法就是:在添加的菜单响应函数中,改变的是设置字体,颜色,字号的函数的参数或变量,这样便可通过点击菜单来改变需要改变的东西了。

MFC(Microsoft Foundation Classes)中,编辑框(CEdit)的文字颜色可以通过修改控件的样式或者使用消息处理函数来改变。具体来说,有以下几种方式可以实现: 1. 使用`SetTextColor`函数:这个函数用于设置控件中文字的颜色。它接受一个`COLORREF`类型的参数,该参数定义了所需的颜色。例如,如果你想要设置编辑框的文字颜色为红色,可以这样调用函数: ```cpp m_EditControl.SetTextColor(RGB(255, 0, 0)); ``` 其中`m_EditControl`是编辑框控件的成员变量。 2. 消息处理:通过处理`WM_CTLCOLOREDIT`消息,可以在编辑框接收到消息时自定义文字和背景颜色。这个消息在编辑框即将绘制文字时发送给父窗口,父窗口可以返回一个画刷(HBRUSH)来设置背景色,或者直接调用`SetTextColor`设置文字颜色。以下是一个处理该消息的示例代码: ```cpp HBRUSH CYourDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (nCtlColor == CTLCOLOR_EDIT) { pDC->SetTextColor(RGB(0, 0, 255)); // 设置文字颜色为蓝色 pDC->SetBkColor(RGB(255, 255, 255)); // 设置背景颜色为白色 return (HBRUSH)GetStockObject(NULL_BRUSH); } return hbr; } ``` 在上面的示例中,`CTLCOLOR_EDIT`是处理编辑框控件的消息,`pDC`是设备上下文指针,用于绘制,`pWnd`是接收消息的编辑框控件指针。 3. 使用`CEdit::SetBkColor`和`CEdit::SetTextColor`:这两个成员函数分别用于设置编辑框的背景色和文字色。这需要在你的`CEdit`派生类中使用,或者通过获取编辑框控件的指针来调用。 ```cpp m_EditControl.SetBkColor(RGB(255, 255, 255)); // 设置背景颜色为白色 m_EditControl.SetTextColor(RGB(0, 255, 0)); // 设置文字颜色为绿色 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值