📄 csharedata.cpp
字号:
int nRowNum; //編集ウインドウ数
int nCount; //実際の追加数
int nInsert; //挿入ポイント
int i, j, k;
int *pnIndex;
//編集ウインドウ数を取得する。
nRowNum = GetEditorWindowsNum();
if( nRowNum <= 0 )
{
*ppEditNode = NULL;
return 0;
}
//編集ウインドウリスト格納領域を作成する。
*ppEditNode = new EditNode[ nRowNum ];
if( NULL == *ppEditNode ) return 0;
pnIndex = new int[ nRowNum ];
if( NULL == pnIndex )
{
delete [] *ppEditNode;
*ppEditNode = NULL;
return 0;
}
nCount = 0;
for( i = 0; i < m_pShareData->m_nEditArrNum; i++ )
{
//編集ウインドウか?
if( IsEditWnd( m_pShareData->m_pEditArr[ i ].m_hWnd ) )
{
nInsert = nCount;
if( bSort )
{
//挿入ポイントを探す。
for( j = 0; j < nCount; j++ )
{
if( (*ppEditNode)[ j ].m_nIndex > m_pShareData->m_pEditArr[ i ].m_nIndex )
{
nInsert = j;
break;
}
}
//後ろにずらす。
for( k = nCount; k > j; k-- )
{
(*ppEditNode)[ k ] = (*ppEditNode)[ k - 1 ];
pnIndex[ k ] = pnIndex[ k - 1 ];
}
}
//情報をコピーする。
(*ppEditNode)[ nInsert ] = m_pShareData->m_pEditArr[ i ];
pnIndex[ nInsert ] = i;
nCount++;
}
if( nCount >= nRowNum ) break; //ガード
}
//インデックスを付ける。
//このインデックスは m_pEditArr の配列番号です。
for( i = 0; i < nRowNum; i++ )
{
(*ppEditNode)[ i ].m_nIndex = pnIndex[ i ];
}
delete [] pnIndex;
return nRowNum;
}
/*!
アウトプットウインドウに出力
アウトプットウインドウが無ければオープンする
@param lpFmt [in] 書式指定文字列
*/
void CShareData::TraceOut( LPCTSTR lpFmt, ... )
{
if( NULL == m_pShareData->m_hwndDebug
|| !IsEditWnd( m_pShareData->m_hwndDebug )
){
CEditApp::OpenNewEditor( NULL, NULL, "-DEBUGMODE", CODE_SJIS, FALSE, true );
// 2001/06/23 N.Nakatani 窓が出るまでウエイトをかけるように修正
//アウトプットウインドウが出来るまで5秒ぐらい待つ。
// Jun. 25, 2001 genta OpenNewEditorの同期機能を利用するように変更
/* 開いているウィンドウをアクティブにする */
/* アクティブにする */
ActivateFrameWindow( m_pShareData->m_hwndDebug );
}
va_list argList;
va_start( argList, lpFmt );
wvsprintf( m_pShareData->m_szWork, lpFmt, argList );
va_end( argList );
::SendMessage( m_pShareData->m_hwndDebug, MYWM_ADDSTRING, 0, 0 );
return;
}
/*
CShareData::CheckMRUandOPENFOLDERList
MRUとOPENFOLDERリストの存在チェックなど
存在しないファイルやフォルダはMRUやOPENFOLDERリストから削除する
@note 現在は使われていないようだ。
@par History
2001.12.26 削除した。(YAZAKI)
*/
/*! idxで指定したマクロファイル名(フルパス)を取得する.
@param pszPath [in] パス名の出力先.長さのみを知りたいときはNULLを入れる.
@param idx [in] マクロ番号
@param nBufLen [in] pszPathで指定されたバッファのバッファサイズ
@retval >0 : パス名の長さ.
@retval 0 : エラー,そのマクロは使えない,ファイル名が指定されていない.
@retval <0 : バッファ不足.必要なバッファサイズは -(戻り値)+1
@author YAZAKI
@date 2003.06.08 Moca ローカル変数へのポインタを返さないように仕様変更
@date 2003.06.14 genta 文字列長,ポインタのチェックを追加
@date 2003.06.24 Moca idxが-1のとき、キーマクロのフルパスを返す.
@note idxは正確なものでなければならない。(内部で正当性チェックを行っていない)
*/
int CShareData::GetMacroFilename( int idx, char *pszPath, int nBufLen )
{
if( -1 != idx && !m_pShareData->m_MacroTable[idx].IsEnabled() )
return 0;
// char fbuf[_MAX_PATH * 2];
char *ptr;
char *pszFile;
if( -1 == idx ){
pszFile = "RecKey.mac";
}else{
pszFile = m_pShareData->m_MacroTable[idx].m_szFile;
}
if( pszFile[0] == '\0' ){ // ファイル名が無い
if( pszPath != NULL ){
pszPath[0] = '\0';
}
return 0;
}
ptr = pszFile;
int nLen = strlen( ptr ); // Jul. 21, 2003 genta strlen対象が誤っていたためマクロ実行ができない
if( !_IS_REL_PATH( pszFile ) // 絶対パス
|| m_pShareData->m_szMACROFOLDER[0] == '\0' ){ // フォルダ指定なし
if( pszPath == NULL || nBufLen <= nLen ){
return -nLen;
}
strcpy( pszPath, pszFile );
return nLen;
}
else { // フォルダ指定あり
// 相対パス→絶対パス
int nFlen = strlen( m_pShareData->m_szMACROFOLDER );
int nFolderSep = AddLastChar( m_pShareData->m_szMACROFOLDER, sizeof(m_pShareData->m_szMACROFOLDER), '\\' );
int nAllLen = nLen + nFlen + ( 0 == nFolderSep ? 0 : 1 );
// 2003.06.24 Moca フォルダも相対パスなら実行ファイルからのパス
if( _IS_REL_PATH( m_pShareData->m_szMACROFOLDER ) ){
char szExeDir[_MAX_PATH];
int nExeLen;
GetExecutableDir( szExeDir, NULL );
nExeLen = strlen( szExeDir );
nAllLen += nExeLen + 1;
if( pszPath == NULL || nBufLen <= nAllLen ){
return -nAllLen;
}
strcpy( pszPath, szExeDir );
ptr = pszPath + nExeLen;
*ptr++ = '\\';
}else{
ptr = pszPath;
}
if( pszPath == NULL || nBufLen <= nAllLen ){
return -nAllLen;
}
strcpy( ptr, m_pShareData->m_szMACROFOLDER );
ptr += nFlen;
if( -1 == nFolderSep ){
*ptr++ = '\\';
}
strcpy( ptr, pszFile );
return nAllLen;
}
}
/*! idxで指定したマクロのm_bReloadWhenExecuteを取得する。
idxは正確なものでなければならない。
YAZAKI
*/
bool CShareData::BeReloadWhenExecuteMacro( int idx )
{
if( !m_pShareData->m_MacroTable[idx].IsEnabled() )
return false;
return ( m_pShareData->m_MacroTable[idx].m_bReloadWhenExecute == TRUE );
}
/*! m_szSEARCHKEYArrにpszSearchKeyを追加する。
YAZAKI
*/
void CShareData::AddToSearchKeyArr( const char* pszSearchKey )
{
/*
CMemory pcmWork( pszSearchKey, lstrlen( pszSearchKey ) );
int i;
int j;
for( i = 0; i < m_pShareData->m_nSEARCHKEYArrNum; ++i ){
if( 0 == strcmp( pszSearchKey, m_pShareData->m_szSEARCHKEYArr[i] ) ){
break;
}
}
if( i < m_pShareData->m_nSEARCHKEYArrNum ){
for( j = i; j > 0; j-- ){
strcpy( m_pShareData->m_szSEARCHKEYArr[j], m_pShareData->m_szSEARCHKEYArr[j - 1] );
}
}else{
for( j = MAX_SEARCHKEY - 1; j > 0; j-- ){
strcpy( m_pShareData->m_szSEARCHKEYArr[j], m_pShareData->m_szSEARCHKEYArr[j - 1] );
}
++m_pShareData->m_nSEARCHKEYArrNum;
if( m_pShareData->m_nSEARCHKEYArrNum > MAX_SEARCHKEY ){
m_pShareData->m_nSEARCHKEYArrNum = MAX_SEARCHKEY;
}
}
strcpy( m_pShareData->m_szSEARCHKEYArr[0], pcmWork.GetPtr() );
*/
CRecent cRecentSearchKey;
cRecentSearchKey.EasyCreate( RECENT_FOR_SEARCH );
cRecentSearchKey.AppendItem( pszSearchKey );
cRecentSearchKey.Terminate();
return;
}
/*! m_szREPLACEKEYArrにpszReplaceKeyを追加する
YAZAKI
*/
void CShareData::AddToReplaceKeyArr( const char* pszReplaceKey )
{
/*
CMemory pcmWork( pszReplaceKey, lstrlen( pszReplaceKey ) );
int i;
int j;
for( i = 0; i < m_pShareData->m_nREPLACEKEYArrNum; ++i ){
if( 0 == strcmp( pszReplaceKey, m_pShareData->m_szREPLACEKEYArr[i] ) ){
break;
}
}
if( i < m_pShareData->m_nREPLACEKEYArrNum ){
for( j = i; j > 0; j-- ){
strcpy( m_pShareData->m_szREPLACEKEYArr[j], m_pShareData->m_szREPLACEKEYArr[j - 1] );
}
}else{
for( j = MAX_REPLACEKEY - 1; j > 0; j-- ){
strcpy( m_pShareData->m_szREPLACEKEYArr[j], m_pShareData->m_szREPLACEKEYArr[j - 1] );
}
++m_pShareData->m_nREPLACEKEYArrNum;
if( m_pShareData->m_nREPLACEKEYArrNum > MAX_REPLACEKEY ){
m_pShareData->m_nREPLACEKEYArrNum = MAX_REPLACEKEY;
}
}
strcpy( m_pShareData->m_szREPLACEKEYArr[0], pcmWork.GetPtr() );
*/
CRecent cRecentReplaceKey;
cRecentReplaceKey.EasyCreate( RECENT_FOR_REPLACE );
cRecentReplaceKey.AppendItem( pszReplaceKey );
cRecentReplaceKey.Terminate();
return;
}
/*! m_szGREPFILEArrにpszGrepFileを追加する
YAZAKI
*/
void CShareData::AddToGrepFileArr( const char* pszGrepFile )
{
/*
CMemory pcmWork( pszGrepFile, lstrlen( pszGrepFile ) );
int i;
int j;
for( i = 0; i < m_pShareData->m_nGREPFILEArrNum; ++i ){
if( 0 == strcmp( pszGrepFile, m_pShareData->m_szGREPFILEArr[i] ) ){
break;
}
}
if( i < m_pShareData->m_nGREPFILEArrNum ){
for( j = i; j > 0; j-- ){
strcpy( m_pShareData->m_szGREPFILEArr[j], m_pShareData->m_szGREPFILEArr[j - 1] );
}
}else{
for( j = MAX_GREPFILE - 1; j > 0; j-- ){
strcpy( m_pShareData->m_szGREPFILEArr[j], m_pShareData->m_szGREPFILEArr[j - 1] );
}
++m_pShareData->m_nGREPFILEArrNum;
if( m_pShareData->m_nGREPFILEArrNum > MAX_GREPFILE ){
m_pShareData->m_nGREPFILEArrNum = MAX_GREPFILE;
}
}
strcpy( m_pShareData->m_szGREPFILEArr[0], pcmWork.GetPtr() );
*/
CRecent cRecentGrepFile;
cRecentGrepFile.EasyCreate( RECENT_FOR_GREP_FILE );
cRecentGrepFile.AppendItem( pszGrepFile );
cRecentGrepFile.Terminate();
return;
}
/*! m_nGREPFOLDERArrNumにpszGrepFolderを追加する
YAZAKI
*/
void CShareData::AddToGrepFolderArr( const char* pszGrepFolder )
{
/*
CMemory pcmWork( pszGrepFolder, lstrlen( pszGrepFolder ) );
int i;
int j;
for( i = 0; i < m_pShareData->m_nGREPFOLDERArrNum; ++i ){
if( 0 == strcmp( pszGrepFolder, m_pShareData->m_szGREPFOLDERArr[i] ) ){
break;
}
}
if( i < m_pShareData->m_nGREPFOLDERArrNum ){
for( j = i; j > 0; j-- ){
strcpy( m_pShareData->m_szGREPFOLDERArr[j], m_pShareData->m_szGREPFOLDERArr[j - 1] );
}
}else{
for( j = MAX_GREPFOLDER - 1; j > 0; j-- ){
strcpy( m_pShareData->m_szGREPFOLDERArr[j], m_pShareData->m_szGREPFOLDERArr[j - 1] );
}
++m_pShareData->m_nGREPFOLDERArrNum;
if( m_pShareData->m_nGREPFOLDERArrNum > MAX_GREPFOLDER ){
m_pShareData->m_nGREPFOLDERArrNum = MAX_GREPFOLDER;
}
}
strcpy( m_pShareData->m_szGREPFOLDERArr[0], pcmWork.GetPtr() );
*/
CRecent cRecentGrepFolder;
cRecentGrepFolder.EasyCreate( RECENT_FOR_GREP_FOLDER );
cRecentGrepFolder.AppendItem( pszGrepFolder );
cRecentGrepFolder.Terminate();
return;
}
/*! 外部Winヘルプが設定されているか確認。
*/
bool CShareData::ExtWinHelpIsSet( int nTypeNo )
{
if (m_pShareData->m_Common.m_szExtHelp[0] != '\0'){
return true; // 共通設定に設定されている
}
if (nTypeNo < 0 || MAX_TYPES <= nTypeNo ){
return false; // 共通設定に設定されていない&nTypeNoが範囲外。
}
if (m_pShareData->m_Types[nTypeNo].m_szExtHelp[0] != '\0'){
return true; // タイプ別設定に設定されている。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -