<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Win32 | ばすにっきTips</title>
	<atom:link href="https://takabus.com/tips/tag/win32/feed/" rel="self" type="application/rss+xml" />
	<link>https://takabus.com/tips</link>
	<description>プログラミングやサーバー、日々のTipsをメモしています。</description>
	<lastBuildDate>Sun, 27 Nov 2022 05:55:39 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.3</generator>

<image>
	<url>https://takabus.com/tips/wp-content/uploads/2022/12/cropped-tips-1-32x32.png</url>
	<title>Win32 | ばすにっきTips</title>
	<link>https://takabus.com/tips</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Win32】ファイルリストを取得するには？ファイルリストを取得して配列に格納する方法</title>
		<link>https://takabus.com/tips/627/</link>
					<comments>https://takabus.com/tips/627/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Sun, 14 Nov 2021 06:51:15 +0000</pubDate>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Win32]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=627</guid>

					<description><![CDATA[ワイルドカードで指定したファイルの一覧を取得し、配列に格納する方法をメモしておきます。]]></description>
										<content:encoded><![CDATA[
<p>ワイルドカードで指定したファイルの一覧を取得し、配列に格納する方法をメモしておきます。</p>



<h2 class="wp-block-heading">ファイルリストを取得する方法</h2>



<p>Win32でファイルリストを取得するには、ファイル検索を逐次実行し、配列に取得した情報を追加していくことで行うことができます。</p>



<h2 class="wp-block-heading">サンプルコード</h2>



<p>さっそくサンプルコードを公開します。</p>



<pre class="wp-block-code"><code>// ファイルの一覧を格納する変数
WIN32_FIND_DATA files&#91;256];
// ワイルドカード
TCHAR path&#91;] = _T("C:\\Users\\user\\*.pdf");

//
// ファイルリストを取得する
//

DWORD fileCount = 0;//ファイル数
WIN32_FIND_DATA win32fd;//ファイルの情報
HANDLE hFind;//ハンドル

hFind = FindFirstFile(path, &amp;win32fd);
do {
	files&#91;fileCount] = win32fd;
	fileCount++;
} while (FindNextFile(hFind, &amp;win32fd));
FindClose(hFind);

//
//メッセージボックスで表示してみる
//
for (int i = 0; i &lt; sizeof(files); i++) {
	wsprintf(path, _T("%s"), files&#91;i].cFileName);
	MessageBox(NULL, path, NULL, NULL);
}
</code></pre>



<p>これを実行すると、filesにファイル一覧が格納されます。</p>



<p>最後に、得られたファイルリストから、メッセージボックスにファイル名を順次表示しています。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/627/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Win32】文字列はどの型を使えばいいの？とりえあずTCHARでオッケー！</title>
		<link>https://takabus.com/tips/618/</link>
					<comments>https://takabus.com/tips/618/#respond</comments>
		
		<dc:creator><![CDATA[ばすにっきTips]]></dc:creator>
		<pubDate>Sat, 13 Nov 2021 05:04:13 +0000</pubDate>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Win32]]></category>
		<guid isPermaLink="false">https://takabus.com/tips/?p=618</guid>

					<description><![CDATA[LPCWSTRとかLPSTRとかいろいろありすぎてわからないWin32の文字列型。初心者は、とりあえずTCHARだけ覚えておきましょう。混乱を避けるため、あえて理屈抜きでシンプルにまとめてみました。]]></description>
										<content:encoded><![CDATA[
<p><strong>LPCWSTR</strong>とか<strong>LPSTR</strong>とか、いろいろありすぎてよくわからないWin32の文字列型。</p>



<p><strong><span class="marker-under">初心者はとりあえず<span class="red">TCHAR</span>だけ覚えておきましょう。</span></strong></p>



<p>混乱を避けるため、あえて理屈抜きで、Win32の文字列型についてシンプルにまとめてみました。</p>



<h2 class="wp-block-heading">Win32の文字列型は難しい</h2>



<p>Win32は古くからの歴史を受け継いでいるため、文字列型がたくさんあります。</p>




<a rel="noopener" href="http://www.wisdomsoft.jp/421.html" title="http://www.wisdomsoft.jp/421.html" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.wisdomsoft.jp%2F421.html?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">http://www.wisdomsoft.jp/421.html</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=http://www.wisdomsoft.jp/421.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.wisdomsoft.jp</div></div></div></div></a>



<p>「ワイド文字とかマルチバイト文字とか、よくわからん。とりあえず動かしたい！どれを使えばいいの？」という人もいるでしょう。</p>



<h2 class="wp-block-heading">文字列のキホンはTCHAR</h2>



<p>早速、結論です。</p>



<p><span class="red"><span class="fz-20px"><span class="marker-under"><strong>文字列型の変数</strong></span></span></span><span class="fz-20px"><span class="marker-under"><strong>を用意したいときは、</strong></span></span><span class="red"><span class="fz-20px"><span class="marker-under"><strong>とりあえず</strong></span></span><span class="marker-under"><span class="fz-24px"><strong>TCHAR</strong></span></span><span class="fz-20px"><span class="marker-under"><strong>で定義しておけばよいです。</strong></span></span></span></p>



<pre class="wp-block-code"><code>TCHAR str&#91;256];</code></pre>



<p>TCHARで定義しておけば、関数側が要求する型がLPWSTRでもLPCWSTRでも、そのまま投入できます。</p>



<p>あと、文字列を定義するときは<strong><span class="marker-under">必ず[256]のように長さも書くことが必要</span></strong>です。</p>



<p>これさえおさえておけば、ほかの言語とほぼ同様に文字列変数を扱うことができます。</p>



<h2 class="wp-block-heading">変数の初期化</h2>



<p>文字列型の変数（TCHAR）を初期化するには、以下のようにします。</p>



<pre class="wp-block-code"><code>TCHAR hoge&#91;256]= _T("hogehoge!");</code></pre>



<p>_Tというマクロを使います。TEXT(&#8220;&#8221;)でも一緒です。日本語も変数に格納することができます。</p>



<h2 class="wp-block-heading">文字列を代入する</h2>



<p>TCHARに文字列を代入するには、<span class="red">wsprintf</span>を使います。</p>



<pre class="wp-block-code"><code>TCHAR hoge&#91;256];
wsprintf(hoge, _T("%s"), _T("hogehoge!"));</code></pre>



<p>これもほぼお決まりのパターンですので、そのまま覚えてしまいましょう。</p>



<h2 class="wp-block-heading">変数を文字列として代入する</h2>



<p>変数（例えばINT型など）を文字列として代入したいときも、<span class="red">wsprintf</span>を使います。</p>



<pre class="wp-block-code"><code>TCHAR hoge&#91;256];
wsprintf(hoge, _T("%d"),123 );</code></pre>



<p>▲これを実行すると、hogeは<strong>&#8220;123&#8221;</strong>という文字列が入ります。</p>



<p><strong>複数の変数</strong>を代入することもできます。</p>



<pre class="wp-block-code"><code>TCHAR hoge&#91;256];
wsprintf(hoge, _T("%d%d"),123,345 );</code></pre>



<p>▲これを実行すれば、hogeは<strong>&#8220;123345&#8221;</strong>という文字列となります。</p>



<p><strong>文字列と組み合わせる</strong>こともできます。</p>



<pre class="wp-block-code"><code>TCHAR hoge&#91;256];
wsprintf(hoge, _T("変数は%d%d"),123,345 );</code></pre>



<p>▲これを実行すれば、hogeは<strong>&#8220;変数は123345&#8221;</strong>という文字列となります。</p>



<p>上記コードでの<code>%d</code>はフォーマット指定子と呼ばれるものです。引数に指定された変数をどういう形式で表示するかを指定できます。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>フォーマット指定子</td><td>変数</td></tr><tr><td>%dまたは%i</td><td>数値</td></tr><tr><td>%s</td><td>文字列</td></tr></tbody></table><figcaption>よく使うフォーマット指定子</figcaption></figure>



<p>ほかのフォーマット指定子については、Microsoftのホームページに掲載されています。</p>




<a rel="noopener" href="https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions?view=msvc-170" title="書式指定構文: &quot;printf&quot; および &quot;wprintf&quot; 関数" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://learn.microsoft.com/en-us/media/open-graph-image.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">書式指定構文: "printf" および "wprintf" 関数</div><div class="blogcard-snippet external-blogcard-snippet">Microsoft C ランタイムの &quot;printf&quot; 関数と &quot;wprintf&quot; 関数の書式設定指定子の構文について説明します</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions?view=msvc-170" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">learn.microsoft.com</div></div></div></div></a>



<h2 class="wp-block-heading">関数から文字列を取得する</h2>



<p>Win32の関数から文字列を取得したいときも、TCHARで大丈夫です。</p>



<pre class="wp-block-code"><code>TCHAR PATH&#91;260];
GetCurrentDirectory(260, PATH);//カレントディレクトリのパスを格納</code></pre>



<p>Win32の関数は通常は文字列型をLPCWSTR型で返します。この場合もTCHARで定義した変数に値を格納することができます。<span class="red">あまり考えずにTCHARで変数を用意しましょう。</span></p>



<h2 class="wp-block-heading">メッセージボックスに変数を表示する</h2>



<p><span class="red">取得したTCHAR型の変数は、メッセージボックスにそのまま表示できます。</span></p>



<pre class="wp-block-code"><code>TCHAR hoge&#91;256];
wsprintf(hoge, _T("%s"), _T("hogehoge!"));
MessageBox(NULL, hoge, hoge, NULL);
</code></pre>



<p>便利です。</p>



<h2 class="wp-block-heading">とりあえず<span class="red">TCHAR</span>を覚えよう</h2>



<p>TCHARはうまいことできている文字列型で、環境にあった文字列型を自動的に選択してくれるようになっています。</p>



<p>ですので、<strong><span class="marker-under">とりあえずTCHARで定義しておけばだいたい動きます。</span></strong></p>



<p>あとはプログラミングしながら、違いを覚えていけばいいと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://takabus.com/tips/618/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
