
C++の構造体で困っています
印刷領域のカレントポジションを原点に戻すとともに、それ以前のカレントポジションを知ろうと思い以下のようなプログラムを書きました
typedef struct {
int x;
int y;
}POINT ;
POINT MyPoint;
MyPoint.x = 9999;
MyPoint.y = 9999;
bool rtn = MoveToEx(hdc, 0, 0, MyPoint); ・・・・・(1)
MyPoint.xとMyPoint.y には9999ではなく、現在のカレントポジションが入るという単純なものです
ところが(1)のMyPointで以下のような文法エラーが発生します
ERROR "POINT"から"LPPOINT"への適切な変換関数が存在しません
色々調べましたらC++のコンパイラの設定に関連するエラーらしいです
この辺りのことは不勉強で困っております
どのように対処すれば良いかご指導願います
No.2ベストアンサー
- 回答日時:
> 色々調べましたらC++のコンパイラの設定に関連するエラーらしいです
違います。関数の呼び出し方が間違っていることを表すエラーです。
Windows 関連の C/C++ で LP~ で始まる型を見たら ~ 型のポインタを意味するものと考えてまず間違いないです。今回の場合は POINT 型のポインタを要求されているところに POINT 型そのものを渡しているために問題のエラーが発生しています。
したがって、今回の場合は
bool rtn = MoveToEx(hdc, 0, 0, &MyPoint);
としてやれば OK ……とはなりません。このコード片にはそれ以外の問題があるからです。
(1)なぜ POINT 型を自分で定義しているのでしょうか? この関数が要求しているのは windef.h で定義されている POINT 構造体のはずで、この関数を使用するために windows.h をインクルードしていれば使えるはずです。
http://msdn.microsoft.com/ja-jp/library/8kk2sy33 …
(2)この関数の戻り値の型は C++ の bool 型ではなく Windows SDK で定義されている BOOL 型です。実験してみたところ VC++ では問題なく変換できるようですが、型は合わせたほうが安心でしょう。
No.1
- 回答日時:
BOOL MoveToEx(
HDC hdc, // デバイスコンテキストのハンドル
int X, // 新しい現在の位置の x 座標
int Y, // 新しい現在の位置の y 座標
LPPOINT lpPoint // それまでの現在の位置
);
http://msdn.microsoft.com/ja-jp/library/cc410478 …
という定義ですから、
bool rtn = MoveToEx(hdc, 0, 0, MyPoint);
第4パラメーターはMyPoint(POINT型)ではなく、LPPOINTでなければなりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
【C++】関数ポインタの使い方
C言語・C++・C#
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
-
4
既定のコンストラクタがありません。というエラーについて
C言語・C++・C#
-
5
CString型 全角半角を意識せずに「1文字」ずつ取り出す
C言語・C++・C#
-
6
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
7
CString から LPCTSTRの型に変換
C言語・C++・C#
-
8
cout と cerrの違い
C言語・C++・C#
-
9
#include <Windows.h>というヘッダファイルについて
C言語・C++・C#
-
10
既定のコンストラクタがない?
C言語・C++・C#
-
11
画面を強制的に再描画させる方法
C言語・C++・C#
-
12
CString型の文字列連結について
C言語・C++・C#
-
13
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
14
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
15
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
16
ボタンの配置を変更したい
C言語・C++・C#
-
17
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
18
CStringをwchar_tに変換したい
C言語・C++・C#
-
19
エラーの原因は?「この関数の定義が見つかりません」
C言語・C++・C#
-
20
エディットボックスの入力制限について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
-
ピンとくる人とこない人の違いは?直感を鍛える方法を心理コンサルタントに聞いた!
根拠はないがなんとなくそう感じる……。そんな「直感がした」という経験がある人は少なくないだろう。ただ直感は目には見えず、具体的な説明が難しいこともあるため、その正体は理解しにくい。「教えて!goo」にも「...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
fortranでプログラムを実行する...
-
キーの自動入力
-
VB2008で定数に色の設定をした...
-
スレッドで Byref の引数を渡し...
-
RightとLeft関数のライブ...
-
ローカル関数についてお願いします
-
SDKでのエラーなのですが。
-
HEWを使用しているのですが、こ...
-
バッチからsqlplusの接続エラー...
-
適切な変換関数が存在しない???
-
Octaveが勝手に閉じる.
-
マルチスレッドのやり方
-
error C2143: 構文エラー の対処法
-
error C3867 関数呼び出しには...
-
visual C++ でビルドの中止がで...
-
「指定したフォルダにあるファ...
-
コンパイルできません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
デバッグ中のエラーのことで教...
-
fortranでプログラムを実行する...
-
RightとLeft関数のライブ...
-
ビルド失敗 指定されたファイ...
-
Handlesについて
-
HEWを使用しているのですが、こ...
-
DLL関数を使ったプログラム
-
キーの自動入力
-
Visual Studioのstrcpy_sについて
-
コンパイルできません。
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報