本文整理汇总了C++中CNativeW::SetString方法的典型用法代码示例。如果您正苦于以下问题:C++ CNativeW::SetString方法的具体用法?C++ CNativeW::SetString怎么用?C++ CNativeW::SetString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CNativeW
的用法示例。
在下文中一共展示了CNativeW::SetString方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UnicodeToHex
// 文字コード表示用 UNICODE → Hex 変換 2008/6/9 Uchi
EConvertResult CEuc::UnicodeToHex(const wchar_t* cSrc, const int iSLen, TCHAR* pDst, const CommonSetting_Statusbar* psStatusbar)
{
CNativeW cCharBuffer;
EConvertResult res;
int i;
TCHAR* pd;
unsigned char* ps;
bool bbinary=false;
// 2008/6/21 Uchi
if (psStatusbar->m_bDispUniInEuc) {
// Unicodeで表示
return CCodeBase::UnicodeToHex(cSrc, iSLen, pDst, psStatusbar);
}
// 1文字データバッファ
cCharBuffer.SetString(cSrc, 1);
if( IsBinaryOnSurrogate(cSrc[0]) ){
bbinary = true;
}
// EUC-JP 変換
res = UnicodeToEUC(cCharBuffer, cCharBuffer._GetMemory());
if (res != RESULT_COMPLETE) {
return res;
}
// Hex変換
ps = reinterpret_cast<unsigned char*>( cCharBuffer._GetMemory()->GetRawPtr() );
pd = pDst;
if( bbinary == false ){
for (i = cCharBuffer._GetMemory()->GetRawLength(); i >0; i--, ps ++, pd += 2) {
auto_sprintf( pd, _T("%02X"), *ps);
}
}else{
auto_sprintf( pd, _T("?%02X"), *ps );
}
return RESULT_COMPLETE;
}
示例2: CopyCurLine
/*!
カーソル行をクリップボードにコピーする
@date 2007.10.08 ryoji 新規(Command_COPY()から処理抜き出し)
*/
void CEditView::CopyCurLine(
bool bAddCRLFWhenCopy, //!< [in] 折り返し位置に改行コードを挿入するか?
EEolType neweol, //!< [in] コピーするときのEOL。
bool bEnableLineModePaste //!< [in] ラインモード貼り付けを可能にする
)
{
if( GetSelectionInfo().IsTextSelected() ){
return;
}
const CLayout* pcLayout = m_pcEditDoc->m_cLayoutMgr.SearchLineByLayoutY( GetCaret().GetCaretLayoutPos().y );
if( NULL == pcLayout ){
return;
}
/* クリップボードに入れるべきテキストデータを、cmemBufに格納する */
CNativeW cmemBuf;
cmemBuf.SetString( pcLayout->GetPtr(), pcLayout->GetLengthWithoutEOL() );
if( pcLayout->GetLayoutEol().GetLen() != 0 ){
cmemBuf.AppendString(
( neweol == EOL_UNKNOWN ) ?
pcLayout->GetLayoutEol().GetValue2() : CEol(neweol).GetValue2()
);
}else if( bAddCRLFWhenCopy ){ // 2007.10.08 ryoji bAddCRLFWhenCopy対応処理追加
cmemBuf.AppendString(
( neweol == EOL_UNKNOWN ) ?
WCODE::CRLF : CEol(neweol).GetValue2()
);
}
/* クリップボードにデータcmemBufの内容を設定 */
BOOL bSetResult = MySetClipboardData(
cmemBuf.GetStringPtr(),
cmemBuf.GetStringLength(),
false,
bEnableLineModePaste
);
if( !bSetResult ){
ErrorBeep();
}
}
示例3: Command_EXTHTMLHELP
/*!
外部HTMLヘルプ
@param helpfile [in] HTMLヘルプファイル名.NULLのときはタイプ別に設定されたファイル.
@param kwd [in] 検索キーワード.NULLのときはカーソル位置or選択されたワード
@date 2002.07.05 genta 任意のファイル・キーワードの指定ができるよう引数追加
*/
void CViewCommander::Command_EXTHTMLHELP( const WCHAR* _helpfile, const WCHAR* kwd )
{
std::tstring helpfile;
if( _helpfile != NULL ){
helpfile = to_tchar(_helpfile);
}
HWND hwndHtmlHelp;
int nLen;
DEBUG_TRACE( _T("helpfile=%ts\n"), helpfile.c_str() );
// From Here Jul. 5, 2002 genta
const TCHAR *filename = NULL;
if ( 0 == helpfile.length() ){
while( !CHelpManager().ExtHTMLHelpIsSet( &(GetDocument()->m_cDocType.GetDocumentAttribute())) ){
ErrorBeep();
// From Here Sept. 15, 2000 JEPRO
// [Esc]キーと[x]ボタンでも中止できるように変更
if( IDYES != ::MYMESSAGEBOX( NULL, MB_YESNOCANCEL | MB_ICONEXCLAMATION | MB_APPLMODAL | MB_TOPMOST, GSTR_APPNAME,
// To Here Sept. 15, 2000
LS(STR_ERR_CEDITVIEW_CMD02)
) ){
return;
}
/* 共通設定 プロパティシート */
if( !CEditApp::getInstance()->OpenPropertySheet( ID_PROPCOM_PAGENUM_HELPER ) ){
return;
}
}
filename = CHelpManager().GetExtHTMLHelp( &(GetDocument()->m_cDocType.GetDocumentAttribute()) );
}
else {
filename = helpfile.c_str();
}
// To Here Jul. 5, 2002 genta
// Jul. 5, 2002 genta
// キーワードの外部指定を可能に
CNativeW cmemCurText;
if( kwd != NULL && kwd[0] != _T('\0') ){
cmemCurText.SetString( kwd );
}
else {
/* 現在カーソル位置単語または選択範囲より検索等のキーを取得 */
m_pCommanderView->GetCurrentTextForSearch( cmemCurText );
}
/* HtmlHelpビューアはひとつ */
if( CHelpManager().HTMLHelpIsSingle( &(GetDocument()->m_cDocType.GetDocumentAttribute())) ){
// タスクトレイのプロセスにHtmlHelpを起動させる
// 2003.06.23 Moca 相対パスは実行ファイルからのパス
// 2007.05.21 ryoji 相対パスは設定ファイルからのパスを優先
TCHAR* pWork=GetDllShareData().m_sWorkBuffer.GetWorkBuffer<TCHAR>();
if( _IS_REL_PATH( filename ) ){
GetInidirOrExedir( pWork, filename );
}else{
_tcscpy( pWork, filename ); // Jul. 5, 2002 genta
}
nLen = _tcslen( pWork );
_tcscpy( &pWork[nLen + 1], cmemCurText.GetStringT() );
hwndHtmlHelp = (HWND)::SendMessageAny(
GetDllShareData().m_sHandles.m_hwndTray,
MYWM_HTMLHELP,
(WPARAM)GetMainWindow(),
0
);
}
else{
/* 自分でHtmlHelpを起動させる */
HH_AKLINK link;
link.cbStruct = sizeof( link ) ;
link.fReserved = FALSE ;
link.pszKeywords = cmemCurText.GetStringT();
link.pszUrl = NULL;
link.pszMsgText = NULL;
link.pszMsgTitle = NULL;
link.pszWindow = NULL;
link.fIndexOnFail = TRUE;
// 2003.06.23 Moca 相対パスは実行ファイルからのパス
// 2007.05.21 ryoji 相対パスは設定ファイルからのパスを優先
if( _IS_REL_PATH( filename ) ){
TCHAR path[_MAX_PATH];
GetInidirOrExedir( path, filename );
// Jul. 6, 2001 genta HtmlHelpの呼び出し方法変更
hwndHtmlHelp = OpenHtmlHelp(
NULL/*GetDllShareData().m_sHandles.m_hwndTray*/,
path, // Jul. 5, 2002 genta
HH_KEYWORD_LOOKUP,
(DWORD_PTR)&link
);
}else{
//.........这里部分代码省略.........
示例4: CreateKeyBindList
/*!
@return 機能が割り当てられているキーストロークの数
@date Oct. 31, 2001 genta 動的な機能名に対応するため引数追加
@date 2007.02.22 ryoji デフォルト機能割り当てに関する処理を追加
*/
int CKeyBind::CreateKeyBindList(
HINSTANCE hInstance, //!< [in] インスタンスハンドル
int nKeyNameArrNum, //!< [in]
KEYDATA* pKeyNameArr, //!< [out]
CNativeW& cMemList, //!<
CFuncLookup* pcFuncLookup, //!< [in] 機能番号→名前の対応を取る
BOOL bGetDefFuncCode //!< [in] ON:デフォルト機能割り当てを使う/OFF:使わない デフォルト:TRUE
)
{
int i;
int j;
int nValidKeys;
WCHAR pszStr[256];
WCHAR szFuncName[256];
WCHAR szFuncNameJapanese[256];
nValidKeys = 0;
cMemList.SetString(LTEXT(""));
const WCHAR* pszSHIFT = LTEXT("Shift+");
const WCHAR* pszCTRL = LTEXT("Ctrl+");
const WCHAR* pszALT = LTEXT("Alt+");
const WCHAR* pszTAB = LTEXT("\t");
const WCHAR* pszCR = LTEXT("\r\n"); //\r=0x0d=CRを追加
cMemList.AppendString( LSW(STR_ERR_DLGKEYBIND1) );
cMemList.AppendString( pszCR );
cMemList.AppendString( LTEXT("-----\t-----\t-----\t-----\t-----") );
cMemList.AppendString( pszCR );
for( j = 0; j < 8; ++j ){
for( i = 0; i < nKeyNameArrNum; ++i ){
int iFunc = GetFuncCodeAt( pKeyNameArr[i], j, bGetDefFuncCode );
if( 0 != iFunc ){
nValidKeys++;
if( j & _SHIFT ){
cMemList.AppendString( pszSHIFT );
}
if( j & _CTRL ){
cMemList.AppendString( pszCTRL );
}
if( j & _ALT ){
cMemList.AppendString( pszALT );
}
cMemList.AppendString( to_wchar(pKeyNameArr[i].m_szKeyName) );
// Oct. 31, 2001 genta
if( !pcFuncLookup->Funccode2Name(
iFunc,
szFuncNameJapanese, 255 )){
auto_strcpy( szFuncNameJapanese, LSW(STR_ERR_DLGKEYBIND2) );
}
szFuncName[0] = LTEXT('\0'); /*"---unknown()--"*/
// /* 機能名日本語 */
// ::LoadString(
// hInstance,
// pKeyNameArr[i].m_nFuncCodeArr[j],
// szFuncNameJapanese, 255
// );
cMemList.AppendString( pszTAB );
cMemList.AppendString( szFuncNameJapanese );
/* 機能ID→関数名,機能名日本語 */
//@@@ 2002.2.2 YAZAKI マクロをCSMacroMgrに統一
CSMacroMgr::GetFuncInfoByID(
hInstance,
iFunc,
szFuncName,
szFuncNameJapanese
);
/* 関数名 */
cMemList.AppendString( pszTAB );
cMemList.AppendString( szFuncName );
/* 機能番号 */
cMemList.AppendString( pszTAB );
auto_sprintf( pszStr, LTEXT("%d"), iFunc );
cMemList.AppendString( pszStr );
/* キーマクロに記録可能な機能かどうかを調べる */
cMemList.AppendString( pszTAB );
//@@@ 2002.2.2 YAZAKI マクロをCSMacroMgrに統一
if( CSMacroMgr::CanFuncIsKeyMacro( iFunc ) ){
cMemList.AppendString( LTEXT("○") );
}else{
cMemList.AppendString( LTEXT("×") );
}
cMemList.AppendString( pszCR );
}
//.........这里部分代码省略.........
示例5: LoadKeyMacro
//.........这里部分代码省略.........
// Jun. 16, 2002 genta
// 行末の検出のため,ループ回数を1増やした
for( ; i <= nLineLen; ++i ){ // 最後の文字+1までスキャン
if( szLine[i] == LTEXT('\\') ){ // エスケープのスキップ
++i;
continue;
}
if( szLine[i] == cQuote ){ // 始まりと同じquotationで終了。
nEnd = i; // nEndは終わりの次の文字(')
break;
}
if( i == nLineLen ){ // 行末に来てしまった
::MYMESSAGEBOX(
NULL,
MB_OK | MB_ICONSTOP | MB_TOPMOST,
MACRO_ERROR_TITLE,
LS(STR_ERR_DLGKEYMACMGR5),
line,
szFuncName,
nArgs + 1,
cQuote
);
m_nReady = false;
nEnd = i - 1; // nEndは終わりの次の文字(')
break;
}
}
// Jun. 16, 2002 genta
if( !m_nReady ){
break;
}
CNativeW cmemWork;
cmemWork.SetString( strLine.c_str() + nBgn, nEnd - nBgn );
// 2014.01.28 「"\\'"」のような場合の不具合を修正
cmemWork.Replace( L"\\\\", L"\\\1" ); // 一時置換(最初に必要)
cmemWork.Replace( LTEXT("\\\'"), LTEXT("\'") );
// Jun. 16, 2002 genta double quotationもエスケープ解除
cmemWork.Replace( LTEXT("\\\""), LTEXT("\"") );
cmemWork.Replace( L"\\r", L"\r" );
cmemWork.Replace( L"\\n", L"\n" );
cmemWork.Replace( L"\\t", L"\t" );
{
// \uXXXX 置換
size_t nLen = cmemWork.GetStringLength();
size_t nBegin = 0;
const wchar_t* p = cmemWork.GetStringPtr();
CNativeW cmemTemp;
for( size_t n = 0; n < nLen; n++ ){
if( n + 1 < nLen && p[n] == L'\\' && p[n+1] == L'u' ){
size_t k;
for( k = n + 2; k < nLen && k < n + 2 + 4
&& (WCODE::Is09(p[k])
|| (L'a' <= p[k] && p[k] <= L'f')
|| (L'A' <= p[k] && p[k] <= L'F')); k++ ){
}
cmemTemp.AppendString( p + nBegin, n - nBegin );
nBegin = k;
if( 0 < k - n - 2 ){
wchar_t hex[5];
wcsncpy( hex, &p[n+2], k - n - 2 );
hex[k - n - 2] = L'\0';
wchar_t* pEnd = NULL;
wchar_t c = static_cast<wchar_t>(wcstol(hex, &pEnd, 16));
cmemTemp.AppendString( &c, 1 );
示例6: ReplaceData
//.........这里部分代码省略.........
if( EOL_NONE != pCDocLine->GetEol() &&
nWorkPos + nWorkLen > nLineLen - pCDocLine->GetEol().GetLen() // 2002/2/10 aroka CMemory変更
){
/* 削除する長さに改行も含める */
nWorkLen = nLineLen - nWorkPos; // 2002/2/10 aroka CMemory変更
}
/* 行全体の削除 */
if( nWorkLen >= nLineLen ){ // 2002/2/10 aroka CMemory変更
/* 削除した行の総数 */
++(pArg->nDeletedLineNum);
/* 行オブジェクトの削除、リスト変更、行数-- */
if( pArg->pcmemDeleted ){
CLineData tmp;
pArg->pcmemDeleted->push_back(tmp);
CLineData& delLine = pArg->pcmemDeleted->back();
delLine.cmemLine.swap(pCDocLine->_GetDocLineData()); // CDocLine書き換え
delLine.nSeq = CModifyVisitor().GetLineModifiedSeq(pCDocLine);
}
m_pcDocLineMgr->DeleteLine( pCDocLine );
pCDocLine = NULL;
}
/* 次の行と連結するような削除 */
else if( nWorkPos + nWorkLen >= nLineLen ){ // 2002/2/10 aroka CMemory変更
if( pArg->pcmemDeleted ){
if( pCDocLineNext && 0 == pArg->pcmemDeleted->size() ){
// 1行以内の行末削除のときだけ、次の行のseqが保存されないので必要
// 2014.01.07 最後が改行の範囲を最後が改行のデータで置換した場合を変更
if( !bLastEOLReplace ){
CLineData tmp;
pArg->pcmemDeleted->push_back(tmp);
CLineData& delLine = pArg->pcmemDeleted->back();
delLine.cmemLine.SetString(L"");
delLine.nSeq = CModifyVisitor().GetLineModifiedSeq(pCDocLineNext);
}
}
CLineData tmp;
pArg->pcmemDeleted->push_back(tmp);
CLineData& delLine = pArg->pcmemDeleted->back();
delLine.cmemLine.SetString(&pLine[nWorkPos], nWorkLen);
delLine.nSeq = CModifyVisitor().GetLineModifiedSeq(pCDocLine);
}
/* 次の行がある */
if( pCDocLineNext ){
/* 次の行のデータを最後に追加 */
// 改行を削除するような置換
int nNewLen = nWorkPos + pCDocLineNext->GetLengthWithEOL() + nInsLen;
if( nWorkLen <= nWorkPos && nLineLen <= nNewLen + 10 ){
// 行を連結して1行にするような操作の高速化
// 削除が元データの有効長以下で行の長さが伸びるか少し減る場合reallocを試みる
static CDocLine* pDocLinePrevAccess = NULL;
static int nAccessCount = 0;
int nBufferReserve = nNewLen;
if( pDocLinePrevAccess == pCDocLine ){
if( 100 < nAccessCount ){
if( 1000 < nNewLen ){
int n = 1000;
while( n < nNewLen ){
n += n / 5; // 20%づつ伸ばす
}
nBufferReserve = n;
}
}else{
nAccessCount++;