原文地址:http://blog.csdn.net/pcseye/article/details/3903333

一.常见问题

a.可以编译,不能执行的

AfxInitRichEdit();

b.升级默认的Riched版本(默认的有一些bug),如

可在InitInstance中添加

LoadLibrary("RICHED20.DLL") 

最后注意 FreeLibrary

如果是CRichEditView基类的可用

BOOL CXXXXXXView::PreCreateWindow(CREATESTRUCT& cs)

{

//装入rich edit version 2.0

if (LoadLibraryA("RICHED20.DLL") == NULL)

{

AfxMessageBox(_T("Fail to load /"riched20.dll/"."),MB_OK | MB_ICONERROR);

PostMessage(WM_QUIT,0,0);

return FALSE;

}

m_strClass = RICHEDIT_CLASSA;//for 2.0 class

return CRichEditView::PreCreateWindow(cs);

}

c.最后追加行

richeditctrl.SetSel(-1, -1);

richeditctrl.ReplaceSel( (LPCTSTR)str );

d.字数限制

CRichEditCtrl::LimitText(long nChars)

e.换行切换

CRichEditView的OnInitialUpdate()函数中加入下面两句:

m_nWordWrap = WrapNone;

WrapChanged(); 

WrapChanged实际上也是调用

ctrl.SetTargetDevice(NULL, 1); //m_nWordWrap == WrapNone

ctrl.SetTargetDevice(NULL, 0); //m_nWordWrap == WrapToWindow

还有不常用的 m_nWordWrap == WrapToTargetDevice

ctrl.SetTargetDevice(m_dcTarget, GetPrintWidth());

如果是在Dialog中,可使用SetTargetDevice,注意在属性里面加上want return

f.有时候不希望带格式的数据粘贴,可通过PasteSpecial选择性粘贴

pmyRichEditCtrl->PasteSpecial(CF_TEXT);

g.随着输入随着自动滚动条滚动到最后一行

int nFirstVisible = pmyRichEditCtrl->GetFirstVisibleLine();

if (nFirstVisible > 0)

{

   pmyRichEditCtrl->LineScroll(-nFirstVisible, 0);

}



m_cRichEdit.PostMessage(WM_VSCROLL, SB_BOTTOM,0);

h.设置UNDO的次数(只能用在RICHED20以上,即默认不支持,必须升级)

SendMessage(EM_SETTEXTMODE,TM_MULTILEVELUNDO,0);

TM_MULTILEVELUNDO 支持多取消(默认值).可通过EM_SETUNDOLIMIT设置最大次数 

SendMessage(EM_SETUNDOLIMIT,100,0);

i.响应OnChange

EM_SETEVENTMASK 设置 ENM_CHANGE 

long lMask = GetEventMask();

lMask |= ENM_CHANGE;

lMask &= ~ENM_PROTECTED;

SetEventMask(lMask);

j.设置只读

CRichEditCtrl::SetReadOnly( BOOL bReadOnly = TRUE );

通过设置PROTECTED实现选中的文本只读,参见

http://www.codeguru.com/Cpp/controls/richedit/article.php/c2401/

二.函数应用

a.设置字体(主要是通过SetSelectionCharFormat)

CHARFORMAT cf;

ZeroMemory(&cf, sizeof(CHARFORMAT));

cf.cbSize = sizeof(CHARFORMAT);

cf.dwMask|=CFM_BOLD;

cf.dwEffects|=CFE_BOLD;//设置粗体,取消用cf.dwEffects&=~CFE_BOLD;

cf.dwMask|=CFM_ITALIC;

cf.dwEffects|=CFE_ITALIC;//设置斜体,取消用cf.dwEffects&=~CFE_ITALIC;

cf.dwMask|=CFM_UNDERLINE;

cf.dwEffects|=CFE_UNDERLINE;//设置斜体,取消用cf.dwEffects&=~CFE_UNDERLINE;

cf.dwMask|=CFM_COLOR;

cf.crTextColor = RGB(255,0,0);//设置颜色

cf.dwMask|=CFM_SIZE;

cf.yHeight =200;//设置高度

cf.dwMask|=CFM_FACE;

strcpy(cf.szFaceName ,_T("隶书"));//设置字体

rich.SetSelectionCharFormat(cf);

b.设置字体的行间距

要用richedit2.0以上

试试

PARAFORMAT2 pf;

pf.cbSize = sizeof(PARAFORMAT2);

pf.dwMask = PFM_NUMBERING | PFM_OFFSET;

pf.wNumbering = PFN_BULLET;//注意PFM_NUMBERING 

pf.dxOffset = 10;

VERIFY(SetParaFormat(pf)); 

常用的dwMask有

PFM_NUMBERING 成员 wNumbering 才起作用,项目符号,默认用PFN_BULLET

2 使用阿拉伯数字 (1, 2, 3, ...).  

3 使用小写字母 (a, b, c, ...).  

4 使用大写字母 (A, B, C, ...).  

5 使用小写罗马数字 (i, ii, iii, ...).  

6 使用大写罗马数字 (I, II, III, ...).  

7 自定义,字符见成员 wNumberingStart.  

PFM_OFFSET 成员 dxOffset 才起作用,缩进,单位twips

PFM_STARTINDENT 成员 dxStartIndent 才起作用,首行缩进

PFM_SPACEAFTER 成员 dySpaceAfter 才起作用,段间距

PFM_LINESPACING 成员 dyLineSpacing 才起作用,行间距

c.设置CRichEditCtrl(2.0)背景透明 

long style = ::GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE);

style &= WS_EX_TRANSPARENT;

::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, style);

或 CreateEx,然后把WS_EX_TRANSPARENT样式加上

e.得到内容有三种

1)GetWindowText

2)使用EM_GETTEXTEX

GETTEXTEX gt;

gt.cb = 200;

gt.flags = GT_DEFAULT;

gt.codepage = CP_ACP ;

gt.lpDefaultChar = NULL; 

gt.lpUsedDefChar = NULL;

SendMessage(EM_GETTEXTEX,(WPARAM)>,(LPARAM)text);

3)StreamOut(主要用于RTF等格式输出)

static DWORD CALLBACK 

MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)

{

   CFile* pFile = (CFile*) dwCookie;

pFile->Write(pbBuff, cb);

   *pcb = cb;

return 0;

}

CFile cFile(TEXT("myfile.rtf"), CFile::modeCreate|CFile::modeWrite);

   EDITSTREAM es;

   es.dwCookie = (DWORD) &cFile;//设置用例参数,以便回调函数调用

   es.pfnCallback = MyStreamOutCallback; 

   pmyRichEditCtrl->StreamOut(SF_RTF, es);

读入可以此类推,SetWindowText,EM_SETTEXTEX,StreamIn

f.查找字符串

FINDTEXTEX ft;

ft.chrg.cpMin = 0;

ft.chrg.cpMax = -1;

ft.lpstrText = "|";

long lPos = FindText(0, &ft);

如果要继续查找,修改cpMin,如

int nCount = 0;

do

{

 long lPos = GetRichEditCtrl().FindText(0, &ft);

 if( -1 == lPos) break;

 ft.chrg.cpMin = lPos + strlen(ft.lpstrText);

 ++nCount;

}while(TRUE);

g.以Html格式保存

目前做法可先转为RTF格式,再通过RTF-to-HTML Converter

http://www.codeguru.com/Cpp/controls/richedit/conversions/article.php/c5377/

h.重载OnProtected函数得到对应的消息,如粘贴等

void CMYichEditorView::OnProtected(NMHDR* pNMHDR, LRESULT* pResult)

{

 ENPROTECTED* pEP = (ENPROTECTED*)pNMHDR;

switch (pEP->msg) {

 case WM_KEYDOWN://按键,判断pEP->wParam

 case WM_PASTE://粘贴

 case WM_CUT://剪切

 case EM_SETCHARFORMAT:

 default:

  break;

 };

 

 *pResult = FALSE;

}

三.聊天常用  

a.LINK 链接功能

1.  LoadLibrary(_T("Riched20.dll"));

2. 创建RichEdit2.0控件

 CreateEx(0, _T("RichEdit20A"), NULL, WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP

|ES_READONLY|ES_WANTRETURN|ES_MULTILINE,

          rect.left, rect.top, cx, cy,

  pParentWnd->m_hWnd, (HMENU)nID, NULL);

3. 设定选中的文字为链接显示

CHARFORMAT2 cf2;

ZeroMemory(&cf2, sizeof(CHARFORMAT2));//

cf2.cbSize = sizeof(CHARFORMAT2);

cf2.dwMask = CFM_LINK;

cf2.dwEffects |= CFE_LINK;

m_cRichEdit.SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);

4.支持链接的点击响应

m_cRichEdit.SetEventMask(ENM_LINK);

5.响应链接的点击EN_LINK

BEGIN_MESSAGE_MAP(CMyRichEdit, CRichEditCtrl)

ON_NOTIFY_REFLECT(EN_LINK,OnURL)

END_MESSAGE_MAP()

......

void CMyRichEdit::OnURLClick(NMHDR *pNmhdr, LRESULT *pResult)

{

TCHAR LinkChar[512];

ENLINK *pLink = (ENLINK *)pNmhdr;

if (pLink->msg == WM_LBUTTONUP)

{

SetSel(penLink->chrg);//这是链接的文字范围

long Res = GetSelText((char *)LinkChar);//这是链接文字

                  //后面是你的处理过程

                  ......

         }

}

b.插入位图

http://www.codeguru.com/Cpp/controls/richedit/article.php/c2417/

http://www.codeguru.com/Cpp/controls/richedit/article.php/c5383/

自定义在RichEdit中插入对象的图标

http://www.blogcn.com/user3/jiangsheng/blog/1319738.html

方法基本同Knowledge Base文章Q220844 HOWTO: Insert a Bitmap Into an RTF Document Using the RichEdit Control

只是在最后插入之前调用一下IOleCache::SetData,用一个HGLOBAL作为参数,HGLOBAL里面的数据是一个METAFILEPICT结构,包含自己提供的图片

使用CRichEditView::InsertFileAsObject就可以插入图像。VC++带有一个例子WordPad。

另外可以参考“Insert any HBITMAP (Bitmap) in your RichEdit Control”(http://www.codeguru.com/richedit/richeditrc.html)。

c.显示GIF动画

常用的是通过qq的imageole.dll(也有用Gif89.dll的)

http://www.xiaozhou.net/cooldog/blogview.asp?logID=82

http://www.codeproject.com/richedit/AnimatedEmoticon.asp

在richedit控件中插入动态GIF (Native C++版)

http://blog.joycode.com/jiangsheng/archive/2004/12/15/41209.aspx

d.IRichEditOleCallback的使用

http://61.186.252.131/Expert/topic/905/905844.xml?temp=.8379022

类似 MSN 信息发送框的制作(上)

http://www.vckbase.com/document/viewdoc/?id=1087

内容包含:实现右键菜单,图片插入,读取/写入RTF格式字符串

自定义 CRichEditCtrl 控件

http://www.vckbase.com/document/viewdoc/?id=328

内容包含:鼠标右键消息,消息映射,字体变换

PS.richedit控件升级到2.0后,先把字体设为楷体,输入汉字没有问题,但输入字母时,字母自动跳转为Arial字体,而1.0却没有这个文题,仍然是用楷体显示字母

是一个专门的设计 Dual-font, Smart font apply, 参见 http://61.186.252.131/Expert/topic/913/913807.xml?temp=.3753778

好文章,收藏先,向作者致敬!

一.常见问题

a.可以编译,不能执行的

AfxInitRichEdit();

b.升级默认的Riched版本(默认的有一些bug),如

可在InitInstance中添加

LoadLibrary("RICHED20.DLL") 

最后注意 FreeLibrary

如果是CRichEditView基类的可用

BOOL CXXXXXXView::PreCreateWindow(CREATESTRUCT& cs)

{

//装入rich edit version 2.0

if (LoadLibraryA("RICHED20.DLL") == NULL)

{

AfxMessageBox(_T("Fail to load /"riched20.dll/"."),MB_OK | MB_ICONERROR);

PostMessage(WM_QUIT,0,0);

return FALSE;

}

m_strClass = RICHEDIT_CLASSA;//for 2.0 class

return CRichEditView::PreCreateWindow(cs);

}

c.最后追加行

richeditctrl.SetSel(-1, -1);

richeditctrl.ReplaceSel( (LPCTSTR)str );

d.字数限制

CRichEditCtrl::LimitText(long nChars)

e.换行切换

CRichEditView的OnInitialUpdate()函数中加入下面两句:

m_nWordWrap = WrapNone;

WrapChanged(); 

WrapChanged实际上也是调用

ctrl.SetTargetDevice(NULL, 1); //m_nWordWrap == WrapNone

ctrl.SetTargetDevice(NULL, 0); //m_nWordWrap == WrapToWindow

还有不常用的 m_nWordWrap == WrapToTargetDevice

ctrl.SetTargetDevice(m_dcTarget, GetPrintWidth());

如果是在Dialog中,可使用SetTargetDevice,注意在属性里面加上want return

f.有时候不希望带格式的数据粘贴,可通过PasteSpecial选择性粘贴

pmyRichEditCtrl->PasteSpecial(CF_TEXT);

g.随着输入随着自动滚动条滚动到最后一行

int nFirstVisible = pmyRichEditCtrl->GetFirstVisibleLine();

if (nFirstVisible > 0)

{

   pmyRichEditCtrl->LineScroll(-nFirstVisible, 0);

}



m_cRichEdit.PostMessage(WM_VSCROLL, SB_BOTTOM,0);

h.设置UNDO的次数(只能用在RICHED20以上,即默认不支持,必须升级)

SendMessage(EM_SETTEXTMODE,TM_MULTILEVELUNDO,0);

TM_MULTILEVELUNDO 支持多取消(默认值).可通过EM_SETUNDOLIMIT设置最大次数 

SendMessage(EM_SETUNDOLIMIT,100,0);

i.响应OnChange

EM_SETEVENTMASK 设置 ENM_CHANGE 

long lMask = GetEventMask();

lMask |= ENM_CHANGE;

lMask &= ~ENM_PROTECTED;

SetEventMask(lMask);

j.设置只读

CRichEditCtrl::SetReadOnly( BOOL bReadOnly = TRUE );

通过设置PROTECTED实现选中的文本只读,参见

http://www.codeguru.com/Cpp/controls/richedit/article.php/c2401/

二.函数应用

a.设置字体(主要是通过SetSelectionCharFormat)

CHARFORMAT cf;

ZeroMemory(&cf, sizeof(CHARFORMAT));

cf.cbSize = sizeof(CHARFORMAT);

cf.dwMask|=CFM_BOLD;

cf.dwEffects|=CFE_BOLD;//设置粗体,取消用cf.dwEffects&=~CFE_BOLD;

cf.dwMask|=CFM_ITALIC;

cf.dwEffects|=CFE_ITALIC;//设置斜体,取消用cf.dwEffects&=~CFE_ITALIC;

cf.dwMask|=CFM_UNDERLINE;

cf.dwEffects|=CFE_UNDERLINE;//设置斜体,取消用cf.dwEffects&=~CFE_UNDERLINE;

cf.dwMask|=CFM_COLOR;

cf.crTextColor = RGB(255,0,0);//设置颜色

cf.dwMask|=CFM_SIZE;

cf.yHeight =200;//设置高度

cf.dwMask|=CFM_FACE;

strcpy(cf.szFaceName ,_T("隶书"));//设置字体

rich.SetSelectionCharFormat(cf);

b.设置字体的行间距

要用richedit2.0以上

试试

PARAFORMAT2 pf;

pf.cbSize = sizeof(PARAFORMAT2);

pf.dwMask = PFM_NUMBERING | PFM_OFFSET;

pf.wNumbering = PFN_BULLET;//注意PFM_NUMBERING 

pf.dxOffset = 10;

VERIFY(SetParaFormat(pf)); 

常用的dwMask有

PFM_NUMBERING 成员 wNumbering 才起作用,项目符号,默认用PFN_BULLET

2 使用阿拉伯数字 (1, 2, 3, ...).  

3 使用小写字母 (a, b, c, ...).  

4 使用大写字母 (A, B, C, ...).  

5 使用小写罗马数字 (i, ii, iii, ...).  

6 使用大写罗马数字 (I, II, III, ...).  

7 自定义,字符见成员 wNumberingStart.  

PFM_OFFSET 成员 dxOffset 才起作用,缩进,单位twips

PFM_STARTINDENT 成员 dxStartIndent 才起作用,首行缩进

PFM_SPACEAFTER 成员 dySpaceAfter 才起作用,段间距

PFM_LINESPACING 成员 dyLineSpacing 才起作用,行间距

c.设置CRichEditCtrl(2.0)背景透明 

long style = ::GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE);

style &= WS_EX_TRANSPARENT;

::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, style);

或 CreateEx,然后把WS_EX_TRANSPARENT样式加上

e.得到内容有三种

1)GetWindowText

2)使用EM_GETTEXTEX

GETTEXTEX gt;

gt.cb = 200;

gt.flags = GT_DEFAULT;

gt.codepage = CP_ACP ;

gt.lpDefaultChar = NULL; 

gt.lpUsedDefChar = NULL;

SendMessage(EM_GETTEXTEX,(WPARAM)>,(LPARAM)text);

3)StreamOut(主要用于RTF等格式输出)

static DWORD CALLBACK 

MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)

{

   CFile* pFile = (CFile*) dwCookie;

pFile->Write(pbBuff, cb);

   *pcb = cb;

return 0;

}

CFile cFile(TEXT("myfile.rtf"), CFile::modeCreate|CFile::modeWrite);

   EDITSTREAM es;

   es.dwCookie = (DWORD) &cFile;//设置用例参数,以便回调函数调用

   es.pfnCallback = MyStreamOutCallback; 

   pmyRichEditCtrl->StreamOut(SF_RTF, es);

读入可以此类推,SetWindowText,EM_SETTEXTEX,StreamIn

f.查找字符串

FINDTEXTEX ft;

ft.chrg.cpMin = 0;

ft.chrg.cpMax = -1;

ft.lpstrText = "|";

long lPos = FindText(0, &ft);

如果要继续查找,修改cpMin,如

int nCount = 0;

do

{

 long lPos = GetRichEditCtrl().FindText(0, &ft);

 if( -1 == lPos) break;

 ft.chrg.cpMin = lPos + strlen(ft.lpstrText);

 ++nCount;

}while(TRUE);

g.以Html格式保存

目前做法可先转为RTF格式,再通过RTF-to-HTML Converter

http://www.codeguru.com/Cpp/controls/richedit/conversions/article.php/c5377/

h.重载OnProtected函数得到对应的消息,如粘贴等

void CMYichEditorView::OnProtected(NMHDR* pNMHDR, LRESULT* pResult)

{

 ENPROTECTED* pEP = (ENPROTECTED*)pNMHDR;

switch (pEP->msg) {

 case WM_KEYDOWN://按键,判断pEP->wParam

 case WM_PASTE://粘贴

 case WM_CUT://剪切

 case EM_SETCHARFORMAT:

 default:

  break;

 };

 

 *pResult = FALSE;

}

三.聊天常用  

a.LINK 链接功能

1.  LoadLibrary(_T("Riched20.dll"));

2. 创建RichEdit2.0控件

 CreateEx(0, _T("RichEdit20A"), NULL, WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP

|ES_READONLY|ES_WANTRETURN|ES_MULTILINE,

          rect.left, rect.top, cx, cy,

  pParentWnd->m_hWnd, (HMENU)nID, NULL);

3. 设定选中的文字为链接显示

CHARFORMAT2 cf2;

ZeroMemory(&cf2, sizeof(CHARFORMAT2));//

cf2.cbSize = sizeof(CHARFORMAT2);

cf2.dwMask = CFM_LINK;

cf2.dwEffects |= CFE_LINK;

m_cRichEdit.SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);

4.支持链接的点击响应

m_cRichEdit.SetEventMask(ENM_LINK);

5.响应链接的点击EN_LINK

BEGIN_MESSAGE_MAP(CMyRichEdit, CRichEditCtrl)

ON_NOTIFY_REFLECT(EN_LINK,OnURL)

END_MESSAGE_MAP()

......

void CMyRichEdit::OnURLClick(NMHDR *pNmhdr, LRESULT *pResult)

{

TCHAR LinkChar[512];

ENLINK *pLink = (ENLINK *)pNmhdr;

if (pLink->msg == WM_LBUTTONUP)

{

SetSel(penLink->chrg);//这是链接的文字范围

long Res = GetSelText((char *)LinkChar);//这是链接文字

                  //后面是你的处理过程

                  ......

         }

}

b.插入位图

http://www.codeguru.com/Cpp/controls/richedit/article.php/c2417/

http://www.codeguru.com/Cpp/controls/richedit/article.php/c5383/

自定义在RichEdit中插入对象的图标

http://www.blogcn.com/user3/jiangsheng/blog/1319738.html

方法基本同Knowledge Base文章Q220844 HOWTO: Insert a Bitmap Into an RTF Document Using the RichEdit Control

只是在最后插入之前调用一下IOleCache::SetData,用一个HGLOBAL作为参数,HGLOBAL里面的数据是一个METAFILEPICT结构,包含自己提供的图片

使用CRichEditView::InsertFileAsObject就可以插入图像。VC++带有一个例子WordPad。

另外可以参考“Insert any HBITMAP (Bitmap) in your RichEdit Control”(http://www.codeguru.com/richedit/richeditrc.html)。

c.显示GIF动画

常用的是通过qq的imageole.dll(也有用Gif89.dll的)

http://www.xiaozhou.net/cooldog/blogview.asp?logID=82

http://www.codeproject.com/richedit/AnimatedEmoticon.asp

在richedit控件中插入动态GIF (Native C++版)

http://blog.joycode.com/jiangsheng/archive/2004/12/15/41209.aspx

d.IRichEditOleCallback的使用

http://61.186.252.131/Expert/topic/905/905844.xml?temp=.8379022

类似 MSN 信息发送框的制作(上)

http://www.vckbase.com/document/viewdoc/?id=1087

内容包含:实现右键菜单,图片插入,读取/写入RTF格式字符串

自定义 CRichEditCtrl 控件

http://www.vckbase.com/document/viewdoc/?id=328

内容包含:鼠标右键消息,消息映射,字体变换

PS.richedit控件升级到2.0后,先把字体设为楷体,输入汉字没有问题,但输入字母时,字母自动跳转为Arial字体,而1.0却没有这个文题,仍然是用楷体显示字母

Richedit使用大全的更多相关文章

  1. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  2. 开源 iOS 项目分类索引大全 - 待整理

    开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...

  3. .NET Core dotnet 命令大全

    dotnet 命令大全,让你理解dotnet 命令. 本文将以一个实例串起 dotnet 所有命令,让你玩转dotnet 命令. 本篇文章编写环境为windows 10 ,dotnet 命令同样适用于 ...

  4. Python 资源大全中文版

    Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...

  5. 【JS】javascript 正则表达式 大全 总结

    javascript 正则表达式 大全 总结 参考整理了一些javascript正则表达式 目的一:自我复习归纳总结 目的二:共享方便大家搜索 微信:wixf150 验证数字:^[0-9]*$ 验证n ...

  6. TextView使用大全

    最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,写一个系列的话,大家学习起来也有头有尾. 今天就从我们每 ...

  7. [WinForm]WinForm跨线程UI操作常用控件类大全

    前言 在C#开发的WinForm窗体程序开发的时候,经常会使用多线程处理一些比较耗时之类的操作.不过会有一个问题:就是涉及到跨线程操作UI元素. 相信才开始接触的人一定会遇上这个问题. 为了解决这个问 ...

  8. iOS中NSLog输出格式大全

    iOS开发中的输出格式大全: %@                   对象 %d, %i               整数%u                    无符整形%f           ...

  9. 织梦dedecms漏洞修复大全(5.7起)

    很多人说dedecms不好,因为用的人多了,找漏洞的人也多了,那么如果我们能修复的话,这些都不是问题. 好,我们来一个一个修复.修复方法都是下载目录下该文件,然后替换或添加部分代码,保存后上传覆盖(记 ...

随机推荐

  1. DataTime.Now.Ticks的应用

    参考:http://www.cnblogs.com/delphinet/archive/2011/06/09/2075985.html 转换成秒: using System; using System ...

  2. 小米2s 降到1299

    关于这个价格,网上叫声一片,尤其是几天前刚买了小米2s的,恨死了雷布斯…… 以下是来自百度贴吧的帖子: [02-27 米粉杂谈]我来说个关于价格的事实吧 http://tieba.baidu.com/ ...

  3. lintcode 中等题:interleaving String 交叉字符串

    题目 交叉字符串 给出三个字符串:s1.s2.s3,判断s3是否由s1和s2交叉构成. 样例 比如 s1 = "aabcc" s2 = "dbbca" - 当 ...

  4. Project Euler 88:Product-sum numbers 积和数

    Product-sum numbers A natural number, N, that can be written as the sum and product of a given set o ...

  5. Filter(过滤器)常见应用

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(四十六)——Filter(过滤器)常见应用 一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html F ...

  6. 去掉eclipse的xml和js验证

    一.XML Properties > Validation you have two options: 1- Configure Workspace Settings (disable the ...

  7. Loongnix 系统(MIPS Linux)

    电脑上的x86,手机上的ARM,在各自领域都是很成熟的CPU架构了,龙芯也参与进去竞争是很难的,就算是Intel,挤破头皮疯狂补贴自家的Atom x86还是在手机领域无法立足. 所以说,个人觉得龙芯可 ...

  8. QT5删除隐藏目录+隐藏文件(使用Process::start函数调用系统命令,且等待到结束)

    1.功能需求 删除一个目录(包括目录本身),同时删除该目录中所有文件及目录(含隐藏的) 2.遇到的问题 qt5中已经有了递归删除目录的函数--->bool QDir::removeRecursi ...

  9. javascript基础之数组对象

    一.定义数组的方法: 定义了一个空数组: var myArray =new Array(); 指定有n个空元素的数组: var myArray=new Array(n); 定义数组并赋值: var m ...

  10. 3、REST风格的URL

    1.概述 HTTP协议里面,四个表示操作方式的动词:GET.POST.PUT.DELETE,它们分别对应四种基本的操作,GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删 ...