[NEW_BEHAVIOUR] Remove the result dialogs of Find/Replace dialog. Display the error/result in the new added statusbar of Find/Replace dialog. (di Sardegna)

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1039 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
Don Ho 2013-05-11 20:55:09 +00:00
parent 5da5167b7d
commit 36b9b7cc8c
10 changed files with 182 additions and 117 deletions

View File

@ -591,3 +591,41 @@ generic_string PathAppend(generic_string &strDest, const generic_string str2appe
return strDest;
}
COLORREF getCtrlBkColor(HWND hWnd)
{
COLORREF crRet = CLR_INVALID;
if (hWnd && IsWindow(hWnd))
{
RECT rc;
if (GetClientRect(hWnd, &rc))
{
HDC hDC = GetDC(hWnd);
if (hDC)
{
HDC hdcMem = CreateCompatibleDC(hDC);
if (hdcMem)
{
HBITMAP hBmp = CreateCompatibleBitmap(hDC,
rc.right, rc.bottom);
if (hBmp)
{
HGDIOBJ hOld = SelectObject(hdcMem, hBmp);
if (hOld)
{
if (SendMessage(hWnd, WM_ERASEBKGND, (WPARAM)hdcMem, 0))
{
crRet = GetPixel(hdcMem, 2, 2); // 0, 0 is usually on the border
}
SelectObject(hdcMem, hOld);
}
DeleteObject(hBmp);
}
DeleteDC(hdcMem);
}
ReleaseDC(hWnd, hDC);
}
}
}
return crRet;
}

View File

@ -178,5 +178,6 @@ private:
generic_string PathRemoveFileSpec(generic_string & path);
generic_string PathAppend(generic_string &strDest, const generic_string str2append);
COLORREF getCtrlBkColor(HWND hWnd);
#endif //M30_IDE_COMMUN_H

View File

@ -985,7 +985,7 @@ int Notepad_plus::getHtmlXmlEncoding(const TCHAR *fileName) const
}
bool Notepad_plus::replaceAllFiles() {
bool Notepad_plus::replaceInOpenedFiles() {
ScintillaEditView *pOldView = _pEditView;
_pEditView = &_invisibleEditView;
@ -1037,17 +1037,15 @@ bool Notepad_plus::replaceAllFiles() {
if (nbTotal < 0)
::printStr(TEXT("The regular expression to search is formed badly"));
_findReplaceDlg.setStatusbarMessage(TEXT("Replace in Opened Files: The regular expression to search is formed badly"), FSNotFound);
else
{
if (nbTotal)
enableCommand(IDM_FILE_SAVEALL, true, MENU | TOOLBAR);
TCHAR result[64];
wsprintf(result, TEXT("%d occurrences replaced."), nbTotal);
::printStr(result);
wsprintf(result, TEXT("Replace in Opened Files: %d occurrences replaced."), nbTotal);
_findReplaceDlg.setStatusbarMessage(result, FSMessage);
}
return true;
}
@ -1437,8 +1435,8 @@ bool Notepad_plus::replaceInFiles()
_pEditView = pOldView;
TCHAR msg[128];
wsprintf(msg, TEXT("%d occurrences replaced"), nbTotal);
printStr(msg);
wsprintf(msg, TEXT("Replace in Files: %d occurrences replaced"), nbTotal);
_findReplaceDlg.setStatusbarMessage(msg, FSMessage);
return true;
}
@ -4715,7 +4713,6 @@ vector<generic_string> Notepad_plus::addNppComponents(const TCHAR *destDir, cons
// copy to plugins directory
generic_string destName = destDirName;
destName += ::PathFindFileName(pfns->at(i).c_str());
//printStr(destName.c_str());
if (::CopyFile(pfns->at(i).c_str(), destName.c_str(), FALSE))
copiedFiles.push_back(destName.c_str());
}

View File

@ -580,7 +580,7 @@ private:
void showFunctionComp();
//void changeStyleCtrlsLang(HWND hDlg, int *idArray, const char **translatedText);
bool replaceAllFiles();
bool replaceInOpenedFiles();
bool findInOpenedFiles();
bool findInCurrentFile();

View File

@ -180,7 +180,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
case WM_REPLACEALL_INOPENEDDOC :
{
replaceAllFiles();
replaceInOpenedFiles();
return TRUE;
}

View File

@ -35,6 +35,10 @@
FindOption * FindReplaceDlg::_env;
FindOption FindReplaceDlg::_options;
#define SHIFTED 0x8000
#define BCKGRD_COLOR (RGB(255,102,102))
#define TXT_COLOR (RGB(255,255,255))
int Searching::convertExtendedToString(const TCHAR * query, TCHAR * result, int length) { //query may equal to result, since it always gets smaller
int i = 0, j = 0;
int charLeft = length;
@ -217,6 +221,9 @@ void FindReplaceDlg::create(int dialogID, bool isRTL)
fillFindHistory();
_currentStatus = REPLACE_DLG;
initOptionsFromDlg();
_statusBar.init(GetModuleHandle(NULL), _hSelf, 0);
_statusBar.display();
RECT rect;
//::GetWindowRect(_hSelf, &rect);
@ -564,7 +571,13 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
return TRUE;
}
case WM_DRAWITEM :
{
drawItem((DRAWITEMSTRUCT *)lParam);
return TRUE;
}
case WM_HSCROLL :
{
if ((HWND)lParam == ::GetDlgItem(_hSelf, IDC_PERCENTAGE_SLIDER))
@ -664,6 +677,7 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
//Single actions
case IDCANCEL:
(*_ppEditView)->execute(SCI_CALLTIPCANCEL);
setStatusbarMessage(TEXT(""), FSNoMessage);
display(false);
break;
case IDOK : // Find Next : only for FIND_DLG and REPLACE_DLG
@ -825,6 +839,13 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
{
if (_currentStatus == REPLACE_DLG)
{
if ((*_ppEditView)->getCurrentBuffer()->isReadOnly())
{
generic_string errMsg = TEXT("Replace: Cannot replace text. The current document is read only.");
setStatusbarMessage(errMsg, FSNotFound);
return TRUE;
}
bool isUnicode = (*_ppEditView)->getCurrentBuffer()->getUnicodeMode() != uni8Bit;
HWND hFindCombo = ::GetDlgItem(_hSelf, IDFINDWHAT);
_options._str2Search = getTextFromCombo(hFindCombo, isUnicode);
@ -842,17 +863,17 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
generic_string result = TEXT("");
if (nbReplaced < 0)
result = TEXT("The regular expression is malformed.");
result = TEXT("Replace All: The regular expression is malformed.");
else
{
TCHAR moreInfo[64];
if(nbReplaced == 1)
wsprintf(moreInfo, TEXT("1 occurrence was replaced."));
if(nbReplaced <= 1)
wsprintf(moreInfo, TEXT("Replace All: %d occurrence was replaced."), nbReplaced);
else
wsprintf(moreInfo, TEXT("%d occurrences were replaced."), nbReplaced);
wsprintf(moreInfo, TEXT("Replace All: %d occurrences were replaced."), nbReplaced);
result = moreInfo;
}
::MessageBox(_hParent, result.c_str(), TEXT("Replace All"), MB_OK);
setStatusbarMessage(result, FSMessage);
::SetFocus(_hSelf);
}
}
@ -871,18 +892,18 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
generic_string result = TEXT("");
if (nbCounted < 0)
result = TEXT("The regular expression to search is malformed.\r\nDoes it result in nothing?");
result = TEXT("Count: The regular expression to search is malformed.");
else
{
TCHAR moreInfo[128];
if(nbCounted == 1)
wsprintf(moreInfo, TEXT("1 match."));
if(nbCounted <= 1)
wsprintf(moreInfo, TEXT("Count: %d match."), nbCounted);
else
wsprintf(moreInfo, TEXT("%d matches."), nbCounted);
wsprintf(moreInfo, TEXT("Count: %d matches."), nbCounted);
result = moreInfo;
}
if (isMacroRecording) saveInMacro(wParam, FR_OP_FIND);
::MessageBox(_hParent, result.c_str(), TEXT("Count"), MB_OK);
setStatusbarMessage(result, FSMessage);
::SetFocus(_hSelf);
}
}
@ -903,17 +924,17 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
nppParamInst->_isFindReplacing = false;
generic_string result = TEXT("");
if (nbMarked < 0)
result = TEXT("The regular expression to search is malformed.\r\nDoes it result in nothing?");
result = TEXT("Mark: The regular expression to search is malformed.");
else
{
TCHAR moreInfo[128];
if(nbMarked == 1)
wsprintf(moreInfo, TEXT("1 match."));
wsprintf(moreInfo, TEXT("Mark: %d match."), nbMarked);
else
wsprintf(moreInfo, TEXT("%d matches."), nbMarked);
wsprintf(moreInfo, TEXT("Mark: %d matches."), nbMarked);
result = moreInfo;
}
::MessageBox(_hParent, result.c_str(), TEXT("Mark"), MB_OK);
setStatusbarMessage(result, FSMessage);
::SetFocus(_hSelf);
}
}
@ -925,6 +946,7 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
{
(*_ppEditView)->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE);
(*_ppEditView)->execute(SCI_MARKERDELETEALL, MARK_BOOKMARK);
setStatusbarMessage(TEXT(""), FSNoMessage);
}
}
return TRUE;
@ -1223,17 +1245,19 @@ bool FindReplaceDlg::processFindNext(const TCHAR *txt2find, const FindOption *op
//new target, search again
posFind = (*_ppEditView)->searchInTarget(pText, stringSizeFind, startPosition, endPosition);
}
if (posFind == -1)
{
if (oFindStatus)
*oFindStatus = FSNotFound;
//failed, or failed twice with wrap
if (NotIncremental==pOptions->_incrementalType) //incremental search doesnt trigger messages
if (NotIncremental == pOptions->_incrementalType) //incremental search doesnt trigger messages
{
generic_string msg = TEXT("Can't find the text:\r\n\"");
generic_string msg = TEXT("Find: Can't find the text \"");
msg += txt2find;
msg += TEXT("\"");
::MessageBox(_hParent, msg.c_str(), TEXT("Find"), MB_OK);
setStatusbarMessage(msg, FSNotFound);
// if the dialog is not shown, pass the focus to his parent(ie. Notepad++)
if (!::IsWindowVisible(_hSelf))
{
@ -1250,16 +1274,14 @@ bool FindReplaceDlg::processFindNext(const TCHAR *txt2find, const FindOption *op
}
else if (posFind == -2) // Invalid Regular expression
{
::MessageBox(_hParent, TEXT("Invalid regular expression"), TEXT("Find"), MB_ICONERROR | MB_OK);
setStatusbarMessage(TEXT("Find: Invalid regular expression"), FSNotFound);
return false;
}
start = posFind;
end = int((*_ppEditView)->execute(SCI_GETTARGETEND));
setStatusbarMessage(TEXT(""), FSNoMessage);
// to make sure the found result is visible:
// prevent recording of absolute positioning commands issued in the process
@ -1293,7 +1315,8 @@ bool FindReplaceDlg::processReplace(const TCHAR *txt2find, const TCHAR *txt2repl
if ((*_ppEditView)->getCurrentBuffer()->isReadOnly())
{
::MessageBox(_hParent, TEXT("Cannot replace text. The current document is read only."), TEXT("Find/Replace"), MB_ICONERROR | MB_OK);
generic_string errMsg = TEXT("Replace: Cannot replace text. The current document is read only.");
setStatusbarMessage(errMsg, FSNotFound);
return false;
}
@ -1335,14 +1358,19 @@ bool FindReplaceDlg::processReplace(const TCHAR *txt2find, const TCHAR *txt2repl
}
replacedLen = (*_ppEditView)->replaceTarget(pTextReplace);
}
(*_ppEditView)->execute(SCI_SETSEL, start + replacedLen, start + replacedLen);
// Do the next find
moreMatches = processFindNext(txt2find, &replaceOptions, &status, FINDNEXTTYPE_REPLACENEXT);
generic_string msg = TEXT("Replace: 1 occurrence was replaced. ");
msg += moreMatches?TEXT("The next occurence found"):TEXT("The next occurence not found");
setStatusbarMessage(msg, FSMessage);
}
}
else
{
setStatusbarMessage(TEXT("Replace: no occurrence was found."), FSNotFound);
}
return moreMatches;
}
@ -1360,17 +1388,6 @@ int FindReplaceDlg::markAll(const TCHAR *txt2find, int styleID)
return nbFound;
}
/*
int FindReplaceDlg::markAll2(const TCHAR *txt2find)
{
FindOption opt;
opt._isMatchCase = false;
opt._isWholeWord = true;
int nbFound = processAll(ProcessMarkAll_2, txt2find, NULL, true, NULL, &opt);
return nbFound;
}
*/
int FindReplaceDlg::markAllInc(const FindOption *opt)
{
@ -1382,7 +1399,8 @@ int FindReplaceDlg::processAll(ProcessOperation op, const FindOption *opt, bool
{
if (op == ProcessReplaceAll && (*_ppEditView)->getCurrentBuffer()->isReadOnly())
{
::MessageBox(_hParent, TEXT("Cannot replace text. The current document is read only."), TEXT("Replace all"), MB_ICONERROR | MB_OK);
generic_string result = TEXT("Replace All: Cannot replace text. The current document is read only.");
setStatusbarMessage(result, FSNotFound);
return 0;
}
@ -1928,6 +1946,17 @@ void FindReplaceDlg::saveInMacro(int cmd, int cmdType)
::SendMessage(_hParent, WM_FRSAVE_INT, IDC_FRCOMMAND_EXEC, cmd);
}
void FindReplaceDlg::setStatusbarMessage(const generic_string & msg, FindStatus staus)
{
if (staus == FSNotFound)
{
::MessageBeep(0xFFFFFFFF);
FlashWindow(_hSelf, TRUE);
}
_statusbarFindStatus = staus;
_statusBar.setOwnerDrawText(msg.c_str());
}
void FindReplaceDlg::execSavedCommand(int cmd, int intValue, generic_string stringValue)
{
switch(cmd)
@ -2024,17 +2053,18 @@ void FindReplaceDlg::execSavedCommand(int cmd, int intValue, generic_string stri
generic_string result = TEXT("");
if (nbReplaced < 0)
result = TEXT("The regular expression is malformed.");
result = TEXT("Replace All: The regular expression is malformed.");
else
{
TCHAR moreInfo[64];
if(nbReplaced == 1)
wsprintf(moreInfo, TEXT("1 occurrence was replaced."));
if (nbReplaced == 0 || nbReplaced == 1)
wsprintf(moreInfo, TEXT("Replace All: %d occurrence was replaced."), nbReplaced);
else
wsprintf(moreInfo, TEXT("%d occurrences were replaced."), nbReplaced);
wsprintf(moreInfo, TEXT("Replace All: %d occurrences were replaced."), nbReplaced);
result = moreInfo;
}
::MessageBox(_hParent, result.c_str(), TEXT("Replace All"), MB_OK);
setStatusbarMessage(result, FSMessage);
break;
}
case IDCCOUNTALL :
@ -2043,17 +2073,17 @@ void FindReplaceDlg::execSavedCommand(int cmd, int intValue, generic_string stri
generic_string result = TEXT("");
if (nbCounted < 0)
result = TEXT("The regular expression to search is malformed.\r\nDoes it result in nothing?");
result = TEXT("Count: The regular expression to search is malformed.");
else
{
TCHAR moreInfo[128];
if(nbCounted == 1)
wsprintf(moreInfo, TEXT("1 match."));
if (nbCounted <= 1)
wsprintf(moreInfo, TEXT("Count: %d match."), nbCounted);
else
wsprintf(moreInfo, TEXT("%d matches."), nbCounted);
wsprintf(moreInfo, TEXT("Count: %d matches."), nbCounted);
result = moreInfo;
}
::MessageBox(_hParent, result.c_str(), TEXT("Count"), MB_OK);
setStatusbarMessage(result, FSMessage);
break;
}
case IDCMARKALL:
@ -2063,17 +2093,17 @@ void FindReplaceDlg::execSavedCommand(int cmd, int intValue, generic_string stri
nppParamInst->_isFindReplacing = false;
generic_string result = TEXT("");
if (nbMarked < 0)
result = TEXT("The regular expression to search is malformed.\r\nDoes it result in nothing?");
result = TEXT("Mark: The regular expression to search is malformed.");
else
{
TCHAR moreInfo[128];
if(nbMarked == 1)
wsprintf(moreInfo, TEXT("1 match."));
if (nbMarked <= 1)
wsprintf(moreInfo, TEXT("%d match."), nbMarked);
else
wsprintf(moreInfo, TEXT("%d matches."), nbMarked);
result = moreInfo;
}
::MessageBox(_hParent, result.c_str(), TEXT("Mark"), MB_OK);
setStatusbarMessage(result, FSMessage);
break;
}
default:
@ -2245,6 +2275,37 @@ void FindReplaceDlg::combo2ExtendedMode(int comboID)
}
}
void FindReplaceDlg::drawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
//printStr(TEXT("OK"));
COLORREF fgColor = RGB(0, 0, 0); // black by default
PTSTR ptStr =(PTSTR)lpDrawItemStruct->itemData;
if (_statusbarFindStatus == FSNotFound)
{
fgColor = RGB(0xFF, 00, 00); // red
}
else if (_statusbarFindStatus == FSMessage)
{
fgColor = RGB(0, 0, 0xFF); // blue
}
else if (_statusbarFindStatus == FSNoMessage)
{
ptStr = TEXT("");
}
//printInt(fgColor);
SetTextColor(lpDrawItemStruct->hDC, fgColor);
COLORREF bgColor = getCtrlBkColor(_statusBar.getHSelf());
::SetBkColor(lpDrawItemStruct->hDC, bgColor);
//::SetBkColor(lpDrawItemStruct->hDC, ::GetSysColor(COLOR_3DFACE));
//ExtTextOut(lpDIS->hDC, 0, 0, 0 , &lpDIS->rcItem,ptStr, _tcslen(ptStr), NULL);
RECT rect;
_statusBar.getClientRect(rect);
::DrawText(lpDrawItemStruct->hDC, ptStr, lstrlen(ptStr), &rect, DT_SINGLELINE | DT_VCENTER | DT_LEFT);
}
void Finder::addSearchLine(const TCHAR *searchName)
{
generic_string str = TEXT("Search \"");
@ -2540,10 +2601,6 @@ void FindIncrementDlg::display(bool toShow) const
_pRebar->setIDVisible(_rbBand.wID, toShow);
}
#define SHIFTED 0x8000
#define BCKGRD_COLOR (RGB(255,102,102))
#define TXT_COLOR (RGB(255,255,255))
BOOL CALLBACK FindIncrementDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM)
{
switch (message)
@ -2708,7 +2765,7 @@ void FindIncrementDlg::setFindStatus(FindStatus iStatus)
if (iStatus<0 || iStatus >= sizeof(findStatus)/sizeof(findStatus[0]))
return; // out of range
_FindStatus = iStatus;
_findStatus = iStatus;
// get the HWND of the editor
HWND hEditor = ::GetDlgItem(_hSelf, IDC_INCFINDTEXT);

View File

@ -42,6 +42,7 @@
#endif //DOCKINGDLGINTERFACE_H
#include "BoostRegexSearch.h"
#include "StatusBar.h"
#define FIND_RECURSIVE 1
#define FIND_INHIDDENDIR 2
@ -181,8 +182,7 @@ private:
};
enum FindStatus { FSFound, FSNotFound, FSTopReached, FSEndReached};
enum FindStatus { FSFound, FSNotFound, FSTopReached, FSEndReached, FSMessage, FSNoMessage};
enum FindNextType {
FINDNEXTTYPE_FINDNEXT,
@ -294,8 +294,10 @@ public :
{
_pFinder->setFinderStyle();
}
}
};
void execSavedCommand(int cmd, int intValue, generic_string stringValue);
void setStatusbarMessage(const generic_string & msg, FindStatus staus);
protected :
virtual BOOL CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam);
@ -325,6 +327,8 @@ private :
TabBar _tab;
winVer _winVer;
StatusBar _statusBar;
FindStatus _statusbarFindStatus;
@ -343,6 +347,10 @@ private :
if (currentIndex != _currentStatus)
_tab.activateAt(_currentStatus);
};
FindStatus getFindStatus() {
return this->_statusbarFindStatus;
}
void updateCombos();
void updateCombo(int comboID) {
@ -358,7 +366,7 @@ private :
static const int FR_OP_FIF = 4;
static const int FR_OP_GLOBAL = 8;
void saveInMacro(int cmd, int cmdType);
void drawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
};
@ -366,7 +374,7 @@ private :
class FindIncrementDlg : public StaticDialog
{
public :
FindIncrementDlg() : _pFRDlg(NULL), _pRebar(NULL), _FindStatus(FSFound) {};
FindIncrementDlg() : _pFRDlg(NULL), _pRebar(NULL), _findStatus(FSFound) {};
void init(HINSTANCE hInst, HWND hPere, FindReplaceDlg *pFRDlg, bool isRTL = false);
virtual void destroy();
virtual void display(bool toShow = true) const;
@ -399,14 +407,14 @@ public :
void setFindStatus(FindStatus iStatus);
FindStatus getFindStatus() {
return _FindStatus;
return _findStatus;
}
void addToRebar(ReBar * rebar);
private :
bool _isRTL;
FindReplaceDlg *_pFRDlg;
FindStatus _FindStatus;
FindStatus _findStatus;
ReBar * _pRebar;
REBARBANDINFO _rbBand;

View File

@ -31,7 +31,7 @@
#include <windows.h>
#include "FindReplaceDlg_rc.h"
IDD_FIND_REPLACE_DLG DIALOGEX 36, 44, 367, 186
IDD_FIND_REPLACE_DLG DIALOGEX 36, 44, 367, 200
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Replace"

View File

@ -103,47 +103,7 @@ static BYTE ANDMask[128] =
0x00, 0x00, 0x00, 0x00,
};
static COLORREF getParentDlgBkColor(HWND hWnd)
{
COLORREF crRet = CLR_INVALID;
if (hWnd && IsWindow(hWnd))
{
HWND hWndParent = GetParent(hWnd);
if (hWndParent)
{
RECT rc;
if (GetClientRect(hWndParent, &rc))
{
HDC hDC = GetDC(hWndParent);
if (hDC)
{
HDC hdcMem = CreateCompatibleDC(hDC);
if (hdcMem)
{
HBITMAP hBmp = CreateCompatibleBitmap(hDC,
rc.right, rc.bottom);
if (hBmp)
{
HGDIOBJ hOld = SelectObject(hdcMem, hBmp);
if (hOld)
{
if (SendMessage(hWndParent, WM_ERASEBKGND, (WPARAM)hdcMem, 0))
{
crRet = GetPixel(hdcMem, 0, 0);
}
SelectObject(hdcMem, hOld);
}
DeleteObject(hBmp);
}
DeleteDC(hdcMem);
}
ReleaseDC(hWndParent, hDC);
}
}
}
}
return crRet;
}
void URLCtrl::create(HWND itemHandle, TCHAR * link, COLORREF linkColor)
{
@ -253,7 +213,7 @@ LRESULT URLCtrl::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
::SetTextColor(hdc, _linkColor);
::SetBkColor(hdc, getParentDlgBkColor(hwnd)); ///*::GetSysColor(COLOR_3DFACE)*/);
::SetBkColor(hdc, getCtrlBkColor(GetParent(hwnd))); ///*::GetSysColor(COLOR_3DFACE)*/);
// Create an underline font
if(_hfUnderlined == 0)

View File

@ -79,6 +79,10 @@ public :
return (::SendMessage(_hSelf, SB_SETTEXT, whichPart, (LPARAM)str) == TRUE);
};
bool setOwnerDrawText(const TCHAR *str) const {
return (::SendMessage(_hSelf, SB_SETTEXT, SBT_OWNERDRAW, (LPARAM)str) == TRUE);
};
void adjustParts(int clientWidth);
private :