![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# プログラムが書けません。 4 2023/01/22 22:57
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
【C++】関数ポインタの使い方
C言語・C++・C#
-
既定のコンストラクタがありません。というエラーについて
C言語・C++・C#
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
-
4
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
5
既定のコンストラクタがない?
C言語・C++・C#
-
6
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
7
CString から LPCTSTRの型に変換
C言語・C++・C#
-
8
char*を初期化したいのですが
C言語・C++・C#
-
9
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
10
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
11
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
12
画面を強制的に再描画させる方法
C言語・C++・C#
-
13
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
-
14
char str[256]の256の意味は?
C言語・C++・C#
-
15
C++ で、「)」が必要 というエラー
C言語・C++・C#
-
16
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
17
Debug Assertion Failed?
C言語・C++・C#
-
18
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
19
Run-Time Check Failure #3というエラーが出ます。
C言語・C++・C#
-
20
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
VBScriptによるExecuteExcel4Ma...
-
適切な変換関数が存在しない???
-
コンパイルできません。
-
C++でscanfは使えない?
-
FORTRAN: WIN SalfordFTN77 ...
-
IOCTL_CDROM_RAW_RAEDで生デー...
-
fortranでプログラムを実行する...
-
visual C++ でaruduinoとシリア...
-
Arduinoに関する質問
-
windowsのアプリケーションを作...
-
BC30002: 型 'ListItem' が定義...
-
VC++2005でLAPACKを使用する...
-
SQLServerについて
-
VB2008で定数に色の設定をした...
-
multiple definitionというエラー
-
Visual Studioのstrcpy_sについて
-
DLL関数を使ったプログラム
-
このエラーの対処法を教えて下...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
fortranでプログラムを実行する...
-
Excelのエラーで困ってます。
-
Handlesについて
-
HEWを使用しているのですが、こ...
-
バッチからsqlplusの接続エラー...
-
デバッグ中のエラーのことで教...
-
VB2008で定数に色の設定をした...
-
コンパイルできません。
-
sys/time.hのインクルードがで...
-
multiple definitionというエラー
-
HANDLEの宣言でのエラー
-
BC30002: 型 'ListItem' が定義...
-
visual C++ でビルドの中止がで...
-
RightとLeft関数のライブ...
-
Visual Studioのstrcpy_sについて
-
ビルド失敗 指定されたファイ...
-
エクセルでマクロを実行すると...
おすすめ情報