/*! ターゲットしているAAを使う処理 @param[in] hWnd 多分AA一覧のウインドウハンドル @param[in] dMode 使用モードもしくはデフォで @param[in] dDirct 非0マウス直下ので 0表示トップので @return UINT 非0AAとった 0AA無かった */ UINT AaItemsDoSelect( HWND hWnd, UINT dMode, UINT dDirct ) { LPSTR pcConts = NULL; UINT uRslt; UINT_PTR rdLength; // 該当するインデックスAAを引っ張ってくる if( dDirct ){ pcConts = AacAsciiArtGet( gixNowSel ); } else{ pcConts = AacAsciiArtGet( gixTopItem ); } if( !pcConts ){ return 0; } rdLength = strlen( pcConts ); // 文字列の長さ取得 uRslt = ViewMaaMaterialise( hWnd, pcConts, rdLength, dMode ); // 本体に飛ばす // EditorとViewerで本体が異なるので注意 // ここでお気に入りに入れる if( SUCCEEDED( AaItemsFavUpload( pcConts, rdLength ) ) ) { FavContsRedrawRequest( hWnd ); } free( pcConts ); return 1; }
/*! Targetアイテムを使う・クルップボードへ・他に使いたいときは? @param[in] hWnd ウインドウハンドル @param[in] id 動作モードID @return HRESULT 終了状態コード */ HRESULT DraughtItemUse( HWND hWnd, INT id ) { LPSTR pcAaItem; INT_PTR iItems, i, iOffset, iTarget; UINT_PTR cbSize; UINT dMode; MAAM_ITR itItem; if( gbThumb ) // サムネモード { iOffset = gdVwTop * TPNL_HORIZ; iTarget = iOffset + giTarget; pcAaItem = AacAsciiArtGet( iTarget ); if( !(pcAaItem) ) return E_OUTOFMEMORY; switch( id ) { case IDM_DRAUGHT_INSERTEDIT: dMode = MAA_INSERT; break; case IDM_DRAUGHT_INTERRUPTEDIT: dMode = MAA_INTERRUPT; break; case IDM_DRAUGHT_LAYERBOX: dMode = MAA_LAYERED; break; default: case IDM_DRAUGHT_UNICLIP: dMode = MAA_UNICLIP; break; case IDM_DRAUGHT_SJISCLIP: dMode = MAA_SJISCLIP; break; case IDM_THUMB_DRAUGHT_ADD: dMode = MAA_DRAUGHT; break; } StringCchLengthA( pcAaItem, STRSAFE_MAX_CCH, &cbSize ); ViewMaaMaterialise( hWnd, pcAaItem, cbSize, dMode ); if( id != IDM_THUMB_DRAUGHT_ADD ) { // ここでお気に入りに入れる・大丈夫か? if( SUCCEEDED( AaItemsFavUpload( pcAaItem, cbSize ) ) ) { FavContsRedrawRequest( hWnd ); } } FREE(pcAaItem); } else { iItems = gvcDrtItems.size( ); // 現在個数 if( 0 >= iItems ) return E_OUTOFMEMORY; for( i = 0, itItem = gvcDrtItems.begin(); gvcDrtItems.end() != itItem; i++, itItem++ ) { if( giTarget == i ) // ヒット { switch( id ) { case IDM_DRAUGHT_INSERTEDIT: dMode = MAA_INSERT; break; case IDM_DRAUGHT_INTERRUPTEDIT: dMode = MAA_INTERRUPT; break; case IDM_DRAUGHT_LAYERBOX: dMode = MAA_LAYERED; break; default: case IDM_DRAUGHT_UNICLIP: dMode = MAA_UNICLIP; break; case IDM_DRAUGHT_SJISCLIP: dMode = MAA_SJISCLIP; break; } StringCchLengthA( itItem->pcItem, STRSAFE_MAX_CCH, &cbSize ); ViewMaaMaterialise( hWnd, itItem->pcItem, cbSize, dMode ); } } } return E_INVALIDARG; }