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
char*を初期化したいのですが
C言語・C++・C#
-
5
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
6
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
7
CString から LPCTSTRの型に変換
C言語・C++・C#
-
8
既定のコンストラクタがない?
C言語・C++・C#
-
9
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
10
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
11
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
12
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
13
c++,ある関数のクラスから別のクラスの関数を呼ぶ
C言語・C++・C#
-
14
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
15
c++std::string型をTCHARに変換したい!
C言語・C++・C#
-
16
char str[256]の256の意味は?
C言語・C++・C#
-
17
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
18
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
-
19
戻り値で構造体を返すことは可能でしょうか?
C言語・C++・C#
-
20
エディットボックスの入力制限について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
Excelのエラーで困ってます。
-
fopen() がたまにNULLを返す
-
バッチからsqlplusの接続エラー...
-
sys/time.hのインクルードがで...
-
ACCESSのDate関数のエラー表示...
-
DLL関数を使ったプログラム
-
コンパイルできません。
-
Handlesについて
-
ビルド失敗 指定されたファイ...
-
multiple definitionというエラー
-
RightとLeft関数のライブ...
-
BC30002: 型 'ListItem' が定義...
-
VB.NETのWEBアプリでテキストボ...
-
左側がクラス、構造体、共用体...
-
新版 明解 C++ 入門編 につ...
-
HEWを使用しているのですが、こ...
-
LPCWSTRとchar
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
fortranでプログラムを実行する...
-
HEWを使用しているのですが、こ...
-
コンパイルできません。
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
BC30002: 型 'ListItem' が定義...
-
Handlesについて
-
sys/time.hのインクルードがで...
-
ビルド失敗 指定されたファイ...
-
VB2008で定数に色の設定をした...
-
RightとLeft関数のライブ...
-
WindowsからLinuxへの移植
-
multiple definitionというエラー
-
HANDLEの宣言でのエラー
-
レコードセットをcloseする所で...
おすすめ情報