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

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

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

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

Win32 API

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

C++

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

Q&A

解決済

2回答

4957閲覧

point構造体のメンバ変数の型をdoubleにしたい

TRON1216.

総合スコア37

C

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

Win32 API

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

C++

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

0グッド

0クリップ

投稿2018/12/10 08:04

ウィンドウを作成し、マウスイベントの処理をしたいです。ウィンドウ中の任意の場所にカーソルを持っていき、左クリックを押すと、その座標double型でメッセージボックスに表示させようとしています。point構造体を宣言し、LOWORD, HIWORDマクロを用いて実行しているのですが、int型ならうまくいくのですが、double型にするとカーソルをどこに持っていっても出力結果が0.0にしかなりません。どなたかアドバイスいただけないでしょうか。

C++

1case WM_LBUTTONDOWN: 2 RECT rect2; 3 GetClientRect(hWnd_bitmap, &rect2); 4 start.x = (double)LOWORD(lp); 5 start.y = (double)HIWORD(lp); 6 sprintf_s(szBuf, 256, "%lf %lf", start.x, start.y); 7 MessageBox(NULL, szBuf, "マウスの位置", MB_OK); 8 break;

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

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

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

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

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

maisumakun

2018/12/10 08:07

lpの型は何でしょうか。
KoichiSugiyama

2018/12/10 08:23

POINT構造体のメンバはLONG型だったと思いますが、point構造体とあるので、独自に定義したものでしょうか?そのあたりのコードも開示してもらったほうが解決が早いと思います。
TRON1216.

2018/12/10 08:25

失礼しました、LONGです。 宣言は以下のようにしています。 point start;
TRON1216.

2018/12/10 08:25

独自に定義はしていません。
guest

回答2

0

ベストアンサー

startの定義がわかりませんが、

~~ sprintf_s(szBuf, 256, "%lf %lf", &(start.x), &(start.y));~~
~~ じゃないでしょうか~~


あ、勘違い。

もしかして、startの定義って
Point start;
だったりしてませんか?

投稿2018/12/10 08:37

編集2018/12/10 09:23
y_waiwai

総合スコア87719

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

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

TRON1216.

2018/12/10 09:09

はい、定義はPOINT start;にしています
TRON1216.

2018/12/10 09:09

それだと問題ありですか、?
TRON1216.

2018/12/10 09:29

それは理解してるので、コードの真ん中あたりの(double)を書いたのですがそれじゃだめなのでしょうか、?
y_waiwai

2018/12/10 09:33

いくらdoubleを代入したところで、整数は変わりません doubleがLONG(整数)に変換されて代入されるだけです 新しくdoubleのx、yを持った構造体を定義して、そいつでstartを定義してやりましょう
TRON1216.

2018/12/10 13:17

ありがとうございます。無事できました。
TRON1216.

2018/12/10 13:17

ありがとうございます。無事できました。
guest

0

1つ考えられることとして、sprintf_sの書式があります。printf系の場合、doubleに使う書式は%fであって、本来%lfではありません。C99で%lfも追認はされましたが、処理系によってはうまく動かないことも考えられます。

[迷信] double の出力書式は "%lf"

投稿2018/12/10 08:26

maisumakun

総合スコア145121

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

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

TRON1216.

2018/12/10 13:17

ありがとうございます。 これからは%fでやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問