質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

5回答

3977閲覧

WIN32APIのデータ型

fermat

総合スコア183

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/04/08 10:08

編集2017/04/11 07:00

WIN32APIには独自のデータ型(LRESULT、HWIND、WNDPROCなど)がありますが、
LRESULTはlong型に別名が付けられたものであると、APIの入門書で知りました。

WIN32APIのデータ型C言語でのデータ型
LRESULTlong型
HWINDlong型
UINTunsigned int型
WPARAMint型
LPARAMlong型

書籍で知ることができたのは一部のデータ型のみだったので、
この他にもWIN32API独自のデータ型がC言語では何のデータ型を示しているのか全て知りたいのですが、
何か知る方法や一覧が示されたサイトをご存知でしたら教えていただけないでしょうか。

(いくつかサイトを調べたのですが、載っているものは一部のデータ型のみでした。
使ったことのないWIN32APIのデータ型の場合、試行錯誤してC言語のデータ型を見つけているのでしょうか?)

よろしくお願いします。

追記:せっかく早くにもコメントを頂きながら、お返事なくすみません。
急用ができまして(焦)しばらくパソコンから離れますので
ご回答の内容で問題が解決したかやベストアンサーについて、
少々お時間を頂きたく・・・申し訳ございません。(4月8日)

追記:植物に水をやるロボットを制作中なのですが、
気温センサーを取り付けたところAPIで制御できない事態に直面していました。
引き続きテラテイルで皆さまにお世話になりますがどうぞよろしくお願いします。(4月11日)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

WIN32APIでのデータ型が、Microsoftの提供する様々なSDKのうち、どこまでを範囲とするかによりますが、基本的には各種SDKのヘッダファイルを確認するのが確実です。
たとえば基本的なデータ型はWindows におけるコーディング規約に提示されていますが、一部です。
さらにWindowsの基本っぽいヘッダファイルに記されている通り、他にもwindef.h,winbase.h,winnt.hなどがあります。
さらにさらにCOM関連だとcomutil.hBSTR型などが定義されています。

投稿2017/04/08 10:44

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/04/11 06:39

ヘッダーファイルは様々情報が載っていて勉強になりました。 各関数について、MSDNのリファレンスと併せて読むと 関数の正式名や定数の値など、より詳しくその関数を知ることができたので、 これからも関数が通らないときなどに思い出して開いてみようと思います。ありがとうございました。
fermat

2017/04/11 06:53

COMもいじっていたので助かります!!
guest

0

WindowsのC/C++プログラミングを行う場合、#include <windows.h>としますが、その中で呼ばれるwindef.hに型の定義があります(MinGW添付のもの)。

なお、

使ったことのないWIN32APIのデータ型の場合、試行錯誤してC言語のデータ型を見つけているのでしょうか?

ですが、(ほかのデータ型に詰め込むとか、そういうことをしない限り)そのままの型で宣言して受け取るので、実際の型が何に対応しているかは、特に知らなくてもやっていけます。

投稿2017/04/08 10:49

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/04/11 06:46

そのままの型で宣言して受け取るプログラムの方がやはり良いみたいですね。 自分のプログラム見直してみます。ありがとうございました。
guest

0

他の方々が具体的な定義場所などをコメントされていますが、例えばVisutal StudioなどのIDEではコード上の型名の定義箇所を即座に参照できる機能などがついてますので実際に開発する場面では調べるのに苦労することはないと思います。

Cで実装するときにデバッグプリントにprintfを使うような場合フォーマット指定子を間違えないようしないといけないから・・・といった事情はあるかも知れませんが、そんなときは仕方ないのでIDEの力を借りて確認しましょう。もっともC++など型によるオーバーロードの機能がついている言語を使うとそうしたことを気にする場面も少なくなることでしょう。そういう意味でmaisumakunさんがおっしゃるように「特殊なことをしない限り特定の型が実際にCでの何型になるかや何バイトの型になるかを意識せずともやっていける」のだと思います。

おそらくWIN32に限らず色々なライブラリーを使う場合に「特定の型がlong/intのどちらになるかや何バイトの型であるか」を知ることより、それに依存しなくても済むようにするプログラミングテクニックを身に着けることの方に注意を向けるとよいのではないかと思います。多分Cを使う場合それがかなり大事なことになるのではないでしょうか。

投稿2017/04/08 11:31

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/04/11 06:49

木を見て森を見ずのようなことをやっているので、そうだなと思いながら読ませていただきました。 次回の設計をするときは、ご回答の言葉を思い出して効率の良いプログラムを書きたいです。 ありがとうございました。
guest

0

こんにちは。

この他にもWIN32API独自のデータ型がC言語では何のデータ型を示しているのか全て知りたいのですが、

何か知る方法や一覧が示されたサイトをご存知でしたら教えていただけないでしょうか。

そもそも変化するものなので存在しないような気がします。
例えば、WPARAMは16ビット→32ビット→64ビットでそれぞれ変わっています

特定の型について実際の型を知りたい場合は、簡単にはtypeid().name()で表示してみると良いと思います。
(ビルド・オプションにより異なる場合がありますが。)

投稿2017/04/08 10:46

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/04/11 06:43

いつもお世話になっております。 植物水やりロボを作っているのですが気温センサーに値を渡せなくて困っている所でした。 データ型はPCによりけり変化するということも覚えておきたいです。ありがとうございました。 P.S.ケイロニアン先生のサイトでC++の勉強をさせていただきます!
guest

0

言語により名称が異なるだけで結局はbit数、符号の有無、ポインタ型か、などがわかれば柔軟に対応できると思います。おそらくこれらの型は関数の引数や戻り値が一致しないとエラーかワーニングとなるので間違っていればその都度修正すればいいと思います。もし知りたければ検索すると山ほど出てくると思います。私もプログラミングではあまり気にしないですよ。

投稿2017/04/09 22:56

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/04/11 06:52

エラーを繰り返し、もうこれ以上は作れないかもと疲れていたので、 沢山プログラミングをされてきた方でも都度修正しているのか・・・と少し肩の力が抜けました。 あまり神経質にならずにスクリプトを書きたいです。 退会されてしまったようなのですが、今まで困ったときに助けて下さりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問