「Windows API/文字表示の命令」の版間の差分

削除された内容 追加された内容
MSDNのシンタックスの読みかた
129 行
 
TextOutする事じたいは難しくないのだが、それを実用的なコードにするためにWindows独自の型などを学ばなければならず、そっちが難しい。
 
 
 
== MSDNのシンタックスの読みかた ==
たとえば、マイクロソフトの開発者むけサイト MSDN を見ると、TextOut関数について、
<source lang=c>
BOOL TextOutA(
HDC hdc,
int x,
int y,
LPCSTR lpString,
int c
);
</source>
 
と、冒頭に、あかたも文法のような何か が書いてある。[https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-textouta MSDN TextOutA function]
 
なお、MSDN英語版では、このような冒頭に書かれているアレを「Syntax」と説明している。日本語に直訳すると、「統語論」、「公文法」、「文法」である(※ 参考文献: 『ジーニアス英和辞典 <改訂版> 2色刷』1997年3月1日 改訂版)。
 
 
さて、このシンタックスに書かれている関数は TextOut関数ではなくTextOutA関数だが、これは単に文字コードのANSI版との互換性に対応したバージョンがTextOutA関数なだけである。TextOut関数を使用すれば、Visual Studioが内部でコンパイル時に文字コード関連の設定を適切な設定に置き換えてくれるので、初心者は気にせずTextOutで置き換えてよい。
 
msdnのサンプルコードでも、TextOut関数で説明している(2019年10月4日に閲覧)。
 
冒頭の BOOL が気になる人もいるだろうが、冒頭の型は、その関数を呼び出した時の戻り値の型である。BOOL型 という型がある。
 
TextOut関数にかぎらず、API関数を実際に使う場合、冒頭の型は宣言しない。つまり、
 
プログラミング中にTextOut関数を実際に呼び出して使用するための命令を記述したい場合は、単に
<source lang=c>
TextOutA(
HDC hdc,
int x,
int y,
LPCSTR lpString,
int c
);
</source>
のような、冒頭のBOOL型を除去した書式で書く必要がある。
 
つまり、実際のプログラミング作業では、シンタックスにある冒頭の型を除去した書き方で、コードを記述することになる。
 
もし仮にシンタックスの記法のまま、冒頭の型をAPI関数の呼び出し時に宣言しても、単にコンパイル時にエラーになるだけだろう。
 
 
市販の解説書など、書籍によっては、シンタックスのことを「書式」などという用語で、こういう書き方をして説明しているが(※ 参考文献: 林晴彦『明快入門Visual C++ 2010 シニア編』ソフトバンククリエイティブ、2009年8月24日 初版 第1刷発行、24ページ。)、しかし、けっして実際のコードでは、こういうふうにBOOL型などを宣言してから使うわけではない。
 
 
またシンタックスでは、数行に分けて書かれているが、これは単に読みやすいようにマイクロソフト社が改行して紹介しているだけであるので、実際の使用では改行せずに1行にまとめて宣言しても良い。
 
実際、MSDNのサンプルコードでは、
<source lang=c>
TextOut(hdc,r.left,r.top,text, ARRAYSIZE(text));
</source>
 
のように、冒頭の型を除去したあとに1行でまとめて宣言している。
 
 
TextOut関数のほかにもDrawText関数など、さまざまなAPI関数があるが、それらのどれも、実際のコード中での使用宣言の際には、シンタックスの冒頭にある型を除去した形で宣言することになる。
 
 
 
=== 変数の値を画面表示 ===