#include <windows.h>
#include <richedit.h>
#include <commctrl.h>
static LRESULT CALLBACK WndProc
(
HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
switch (message)
{
case WM_CREATE:
{
// Must load rich edit library
LoadLibrary(L"riched20.dll");
HWND hWndRichEdit;
hWndRichEdit = CreateWindow(RICHEDIT_CLASS, NULL,
WS_CHILD | ES_SAVESEL | ES_NOHIDESEL | WS_CHILDWINDOW | WS_BORDER\
| WS_VISIBLE | ES_MULTILINE | WS_VSCROLL | WS_EX_STATICEDGE,
0, 0, 300, 200, hWnd, 0, GetModuleHandle(0), 0);
CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
// Get the charformat from richedit
SendMessage(hWndRichEdit, EM_GETCHARFORMAT, SCF_DEFAULT, (LPARAM)&cf);
cf.cbSize = sizeof(cf);
cf.dwMask = CFM_COLOR | CFM_ITALIC | CFM_SIZE | CFM_FACE; // Change color and italic
cf.dwEffects = CFE_ITALIC; // Italic
cf.yHeight = 18 * 18; // Size
cf.crTextColor = RGB(0, 200, 100); // Color
wcscpy_s(cf.szFaceName, L"宋体"); // Font
// Set default char format
SendMessage(hWndRichEdit, EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM)&cf);
// Show the text
SendMessage(hWndRichEdit, EM_REPLACESEL, 0, (LPARAM)L"hello");
return 0;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
int APIENTRY wWinMain
(
_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow
)
{
wchar_t szAppName[] = L"TestRicheditCharFormat";
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = GetModuleHandle(0);
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName = szAppName;
wndclass.lpszMenuName = NULL;
RegisterClassEx(&wndclass);
HWND hWnd = CreateWindow(szAppName, L"Hello, world!", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
NULL, NULL, GetModuleHandle(0), NULL);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
int i;
HFONT hfont=CreateFont(12,0,0,0,0,0,0,0,
GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");
for(i=40000;i<4...
m_h
RichEdit
Dll = LoadLibrary_
api
_s(L"RICHED20.dll");
return NULL != m_h
RichEdit
Dll;
2. 创建...
一、初级篇——创建一般的按钮
控
件
按钮实质上就是窗口,因此它的创建本质上和创建窗口是一样的,也是用Create
Win
dow或者Create
Win
dowEx方法来创建,只不过有一些细节需要注意一下:
(1)在窗口风格中必须添加WS_CHILD,表示它是子窗口,属于一个父窗口;如果为了使按钮一创建...
按照文章《
win
32 application 添加一个icon 资源 resource》,编译之后,运行HelloRes.exe界面如下:
任务栏上面的图标,如下:
修改
后的hello.cpp中的代码:
#include <
win
dows.h>
#include <stdlib.h>
#include
MFC
RichEdit
控
件可以通过设置字符格式来实现文字加粗、
颜色
、
字体
、
大小
、下划线、
斜体
等效果。具体使用方法可以参考以下步骤:
1. 获取
RichEdit
控
件的选中文本或者光标所在位置的文本,可以使用GetSelText或者GetTextRange函数。
2. 创建一个CHARFORMAT2结构体,设置需要的字符格式属性,比如设置dwMask为CFM_BOLD,表示加粗,设置dwEffects为CFE_BOLD,表示启用加粗效果。
3. 调用
RichEdit
控
件的SetSelectionCharFormat或者SetCharFormat函数,将字符格式应用到选中文本或者光标所在位置的文本上。
4. 如果需要设置
颜色
和
字体
,可以设置dwMask为CFM_COLOR或者CFM_FACE,然后分别设置crTextColor和szFaceName属性。
5. 如果需要框选文本并设置
颜色
和
字体
,可以使用EM_EXSETSEL消息和EM_SETCHARFORMAT消息,具体使用方法可以参考MSDN文档。
需要注意的是,MFC
RichEdit
控
件的使用方法可能因版本不同而略有差异,建议查阅相关文档或者参考示例代码。