クリップボードに書式指定の文字列を出力するには次の手順で行います。(戻る)
- va_list型で argp を宣言
- va_start()マクロで可変引数の lpFormat をセット
- wvsprintf()関数で書式指定の文字列を作成
- va_end()マクロで可変引数の終了
- funcClipWrite()関数でクリップボードに文字列を出力
プロトタイプ宣言
void va_start( va_list argp, // 可変リストへのポインタ prev_param // 可変引数の1つ前の引数名 ); void va_end( va_list argp // 可変リストへのポインタ ); int wvsprintf( LPTSTR lpBuff, // 出力バッファ LPCTSTR lpFormat, // 書式制御文字列 va_list argp // 書式制御引数の可変リスト );
サンプル
// クリップボードに書式列を出力 extern BOOL funcClipPutf( HWND hWnd, LPCTSTR lpFormat, ... ) { TCHAR szBuff[ 2048 ]; DWORD dwSize; va_list argp; va_start( argp, lpFormat ); dwSize = wvsprintf( szBuff, lpFormat, argp ); va_end( argp ); return funcClipWrite( hWnd, szBuff, dwSize ); } // 使用例 int main( void ) { static LPCTSTR WeekTable[] = { TEXT("日"), TEXT("月"), TEXT("火"), TEXT("水"), TEXT("木"), TEXT("金"), TEXT("土"), }; HWND hWnd = GetDesktopWindow(); SYSTEMTIME st; GetLocalTime( &st ); funcClipPutf( hWnd, TEXT("%04u/%02u/%02u (%s) %02u:%02u.%02u"), st.wYear, st.wMonth, st.wDay, WeekTable[ st.wDayOfWeek ], st.wHour, st.wMinute, st.wSecond ); return 0; }
- hWnd にウインドウのハンドルを指定します。
- hWnd に NULL を指定することも出来ます。
- printf()関数と同じ可変引数をとるため便利に文字列をクリップボードに出力できます。
- 現在の時刻をクリップボードにコピーする簡単なツール作成時などに利用して下さい。
その他
- funcClipPutf 関数は「マルチバイト文字セット」、「Unicode文字セット」の両方に対応しています。
- 使用例のコンパイル時は printf 使用のため「マルチバイト文字セット」で行って下さい。
- なお、使用例ではクリップボードに現在の時刻を[西暦/月/日(曜日)時:分:秒]形式でコピーします。
関連記事
- クリップボードのデータをクリア - funcClipClear()
- クリップボードからテキストを読み込む - funcClipRead()
- クリップボードにテキストを書き込む - funcClipWrite()
- クリップボードの文字列を複製取得 - funcClipGets()
- クリップボードに文字列を出力 - funcClipPuts()
- クリップボードに書式列を出力 - funcClipPutf()
- クリップボードの基本関数(まとめ)
※コメント投稿者のブログIDはブログ作成者のみに通知されます