
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も見ています
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
既定のコンストラクタがありません。というエラーについて
C言語・C++・C#
-
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
-
4
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
5
【C++】関数ポインタの使い方
C言語・C++・C#
-
6
cout と cerrの違い
C言語・C++・C#
-
7
エディットボックスの入力制限について
C言語・C++・C#
-
8
CString型の文字列連結について
C言語・C++・C#
-
9
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
10
多重定義が起きている?--lnk2005エラー:VC++
C言語・C++・C#
-
11
CString型 全角半角を意識せずに「1文字」ずつ取り出す
C言語・C++・C#
-
12
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
13
Visual Studioのstrcpy_sについて
C言語・C++・C#
-
14
画面を強制的に再描画させる方法
C言語・C++・C#
-
15
ボタンの配置を変更したい
C言語・C++・C#
-
16
ファイル名に日付の挿入
C言語・C++・C#
-
17
ダイアログの上のテキストボックスの、初期値を設定する方法が分かりません・・・・
C言語・C++・C#
-
18
C++にてtemplateで受け取った任意の型の変数が何型であるかを判定したい
C言語・C++・C#
-
19
EDITコントロールで入力できる文字を制限するには?
C言語・C++・C#
-
20
外部依存関係について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
WindowsからLinuxへの移植
-
OpenSSLでOPENSSL_Applinkが見...
-
バッチからsqlplusの接続エラー...
-
Excelのエラーで困ってます。
-
Visual Basic でサポートされて...
-
エクセルのエラーメッセージ「4...
-
Handlesについて
-
windowsフォームアプリケーショ...
-
適切な変換関数が存在しない???
-
visual C++ でビルドの中止がで...
-
RightとLeft関数のライブ...
-
VC++でboolがエラーになる
-
C# 固定長ファイルの取得 FileGet
-
sys/time.hのインクルードがで...
-
UNIX-Cのsystem関数でエラーを...
-
visual studio 2019において、...
-
VC++でコンパイルエラーが出ま...
-
構文エラーについて
-
VC++ 2010 Expressのエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
fortranでプログラムを実行する...
-
適切な変換関数が存在しない???
-
バッチからsqlplusの接続エラー...
-
ビルド失敗 指定されたファイ...
-
デバッグ中のエラーのことで教...
-
sys/time.hのインクルードがで...
-
visual C++ でビルドの中止がで...
-
BC30002: 型 'ListItem' が定義...
-
VB2008で定数に色の設定をした...
-
コンパイルできません。
-
HEWを使用しているのですが、こ...
-
Arduinoに関する質問
-
Visual Studioのstrcpy_sについて
-
RightとLeft関数のライブ...
-
左側がクラス、構造体、共用体...
-
Handlesについて
-
DLL関数を使ったプログラム
おすすめ情報