::LoadLibrary(T("riched20.dll"));
MAIN的properties中:
此时再运行程序时,可以正常启动记事本了,且能够在richedit中进行编辑,效果如图3所示:
图3 手动加载Riched20.dll后出现主界面窗口
在启动主界面后,可以正常进行编辑。貌似这个控件可以正常工作了。但在实际测试时,发现了以下几个问题:
1. 界面运行后RichEdit边框棱角过于分明
处理方法: Richedit控件的properties -> Boarder –> Flase
2.输入Enter 不能换行(手动输入时一直在同一行编辑)
处理方法: Richedit控件的properties -> Multiline–> True
Richedit控件的properties -> Want Return–> True
3. 没有滚动条(横向以及纵向的)
这个在主界面属性上,IDD
处理方法: IDD_MAIN-> properties -> Horizontal Scrollbar–> True
IDD_MAIN –> properties -> Vertical Scrollbar–> True
4. 不能随窗口大小伸缩
在对窗口进行伸缩时,RichEdit控件的大小还是保持原来的大小,如图4所示:
图4 主界面大小变化时RichEdit控件大小不变
这个问题其实很好理解,因为伸缩主界面窗口时,windows将发送WM_SIZE消息通知窗口。这个过程类似于windows对主界面窗口说“hi, 你的大小已经变了,你根据改变后的大小变一下”。现在我们的主窗口过程处理函数中并没有针对WM_SIZE消息对RichEdit进行特殊处理,因此主界面下面的RichEdit一直保持自己原来的大小,才会出现上面的情况。那么具体的解决方案为:在InitDialog中添加RichEdit大小自适应功能,同时针对WM_SIZE消息,添加Main_OnSize函数来处理这种独立的控件。具体的代码实现如下:
void CMainWnd::Main_OnSize( HWND hWnd, UINT state, int cx, int cy ) { RECT stRect; ::GetClientRect(hWnd, &stRect); // 获取窗口客户区大小 </span><span style="color: #008000">//</span><span style="color: #008000"> 将RichEdit大小调整为客户区大小</span> ::MoveWindow(::GetDlgItem(hWnd, IDC_RICHEDIT), stRect.left, stRect.top, stRect.right-stRect.left, stRect.bottom-stRect.top, TRUE); }
内容版权声明:除非注明,否则皆为本站原创文章。