• ベストアンサー

C++ Regionについて

C++でRegionを使用したいのですが、コンパイルがとおりません。 フォームロード時に以下コードを実行すると、new Region(recT)でエラーとなります。 RectangleF^ recT = gcnew RectangleF(0, 0, 100, 100); this->Region = new Region(recT); エラーメッセージ error C2061: 構文エラー : 識別子 'Region' アドバイスよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

どうもクラス名のRegionがうまく認識できていないのかも 当方の VC2005でも同じような現象が発生します また RegionのRectangleFでの構築は refオブジェクトではないので *で実体を与えるか ^をやめるかしましょう RectangleF recT = RectangleF(0,0,100,100); this->Region = gcnew Drawing::Region( recT ); または RectangleF^ recT = gcnew RectangleF(0,0,100,100); this->Region = gcnew Drawing::Region( *recT ); 名前空間Drawing::を一緒に使用するといいようですよ

tamuhiro1004
質問者

お礼

アドバイスありがとうございます。 using namespace System::Drawing; としているので、このままでいけると思っていたのですが、 なんだかうまく認識していなかった様ですね。 表記していただいたソースで無事コンパイルできました。 非常に参考になりました。ありがとうございました。

関連するQ&A

  • C# PanelのRegion設定について

    ボタンクリックにてPanelのRegion領域を変更したいのですが、勝手にリサイズされて困っております。 panel1の初期Location.X=0,Location.Y=0 のときはうまくいくのですが、初期Locationに値が入ると、矩形領域自体がリサイズされてしまいます。 (矩形領域が小さくなります。) なお、下記コードはテスト様に作成したもので、panel1のサイズを取得して、GraphicsPath からRegionを設定しています。 同じサイズなので、変化はないハズなのですが、初期Locationに値を設定すると、リサイズされてしまいます。 panel1のプロパティは panelのAutoSize=False Dock=None Margin=0,0,0,0 です。 private void button1_Click(object sender, EventArgs e) { Rectangle rect = new Rectangle(panel1.Location.X,panel1.Location.Y, panel1.Width,panel1.Height); GraphicsPath path = GetRoundRect(rect, 10); Graphics g = CreateGraphics(); g.SmoothingMode = SmoothingMode.AntiAlias; panel1.Region = new Region(path); } public GraphicsPath GetRoundRect(Rectangle rect, int radius) {   path.StartFigure();   path.AddLine(rect.Left, rect.Top, rect.Right, rect.Top);   path.AddLine(rect.Right, rect.Top,rect.Right, rect.Bottom);   path.AddLine(rect.Right, rect.Bottom,rect.Left, rect.Bottom);   path.AddLine(rect.Left, rect.Bottom,rect.Left, rect.Top);   path.CloseFigure();   return path; } アドバイスよろしくお願いいたします。

  • Python error C2061: 構文エラー : 識別子 'Py_uintptr_t'

    WindowsXPでPython2.6のC Extensionを作ろうとコンパイルすると、 以下のエラーが出ました。 何が悪いのでしょうか? samplemodule.c c:\python26\include\pyport.h(89) : error C2061: 構文エラー : 識別子 'Py_uintptr_t' c:\python26\include\pyport.h(89) : error C2059: 構文エラー : ';' c:\python26\include\pyport.h(90) : error C2061: 構文エラー : 識別子 'Py_intptr_t' c:\python26\include\pyport.h(90) : error C2059: 構文エラー : ';'

  • C++ Point構造体について

    Point型の配列を作成したいのですが、うまくいきません。 Point^ myArray[] = {  gcnew Point(20, 100),  gcnew Point(40, 150),  gcnew Point(60, 125),  gcnew Point(40, 100),  gcnew Point(60, 75),  gcnew Point(40, 50) }; error C2728: 'System::Drawing::Point ^' : ネイティブ配列はこのマネージ型を含むことはできません となり、コンパイルが通らず、困っています。 アドバイスよろしくお願い致します。

  • C++.NETでのOracle埋め込み

    C++ 6.0ではOracle埋め込みはEXEC SQL BEGIN DECLARE SECTION;と 定義していたのですがC++.NETでは ORA_SUB.cpp(15) : error C2146: 構文エラー : ';' が、識別子 'SQL' の前に必要です。 ORA_SUB.cpp(15) : error C2501: 'EXEC' : 識別名を宣言するのに、型が指定されていません。 ORA_SUB.cpp(15) : error C2146: 構文エラー : ';' が、識別子 'BEGIN' の前に必要です。 ORA_SUB.cpp(15) : error C2501: 'SQL' : 識別名を宣言するのに、型が指定されていません。 ORA_SUB.cpp(15) : error C2146: 構文エラー : ';' が、識別子 'DECLARE' の前に必要です。 ORA_SUB.cpp(15) : error C2501: 'BEGIN' : 識別名を宣言するのに、型が指定されていません。 ORA_SUB.cpp(15) : error C2146: 構文エラー : ';' が、識別子 'SECTION' の前に必要です。 とエラーになります。 C++.NETでは使い方が違っているのでしょうか? よろしくお願い致します。

  • C++のヘッダーについて

    C++のプログラミングをしています そこで出てきた問題なのですが・・・ class Aのヘッダファイルa.hをほかのcppファイルにインクルードすると、 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません error C2146: 構文エラー : ';' が、識別子 'test' の前に必要です。 とほかのヘッダファイルでコンパイルエラーがでます ヘッダファイルをインクルードしたときのみこのエラーがでて困っています。 解決法や、ヒントになりそうな事例を知りませんでしょうか?

  • Visual C++ 2008 EEでメッセージ表示

    Visual C++ 2008 EEを使用し、以下のコードを組みました。これは1つのフォーム(仮に質問フォームとする)に3つのボタンを作成し、ボタンを押すとそれぞれの3種類の質問項目フォームにいって、質問回答が終わったら再び質問フォームに戻ります。このとき、一度回答した質問項目のボタンは選べないようにしていて、全部の質問に答えた場合(全てのボタンが選べなくなった場合)に「これで質問は終わりです」というようなメッセージを表示したいのですが、方法が分からないのでご教授願います。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { this->Hide(); Sai500^ cSai500 = gcnew Sai500(); cSai500->gvflnm(this->flnm); cSai500->ShowDialog(); this->button1->Visible = false; this->Show(); } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { this->Hide(); Sai030^ cSai030 = gcnew Sai030(); cSai030->gvflnm(this->flnm); cSai030->ShowDialog(); this->button2->Visible = false; this->Show(); } private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { this->Hide(); Sai040^ cSai040 = gcnew Sai040(); cSai040->gvflnm(this->flnm); cSai040->ShowDialog(); this->button3->Visible = false; this->Show(); }

  • C言語、実行でエラー。

    いつも大変お世話になり誠にありがとうございます。 標記の件。 shift jifでコンパイルしているのですが コンパイルはお陰様で成功したのですが、 実行でエラーが発生します。 下記にコードとエラーメッセージを書きます。        記 コード #include <stdio.h> int main(void) { printf("8進数101の文字コードをもつ文字は%cです。\n", '\101'); printf("16進数61の文字コードをもつ文字は%cです。\n", '\x61'); return 0; } 実行 C:\MinGW>gcc text4.c -o test4 C:\MinGW>text4.exe 'text4.exe' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ご多忙のところ 度々申し訳ございません。 ご回答の程宜しくお願い申し上げます。

  • VC++ のエラーについて。

    何度もすみません。 今ビルドしたらエラーが。。 環境を教えてくれる人が今日いないのでどうしたらいいのか(T-T) ○○.sqxにSQL文INSERTを追加したのですが、 'EXEC' : 定義されていない識別子です。 error C2146: 構文エラー : ';' が、識別子 'SQL' の前に必要です。 error C2065: 'SQL' : 定義されていない識別子です。 error C2146: 構文エラー : ';' が、識別子 'INSERT' の前に必要です。 error C2065: 'INSERT' : 定義されていない識別子です。 error C2146: 構文エラー : ';' が、識別子 'INTO' の前に必要です。 error C2065: 'INTO' : 定義されていない識別子です。 error C2146: 構文エラー : ';' が、識別子 'TRSS_SM' の前に必要です。 error C2065: 'TRSS_SM' : 定義されていない識別子です。 error C2228: '.FAXSENDINF' : 左側がクラス、構造体、共用体ではありません。 error C2146: 構文エラー : ';' が、識別子 'VALUES' の前に必要です。 error C2065: 'VALUES' : 定義されていない識別子です。 error C2143: 構文エラー : ')' が ':' の前に必要です。 error C2059: 構文エラー : ')' だって、怒られました。 何のことだか?さっぱり? ほかのどこかの影響でしょうか? 何か知っている人お願いします。 Visual Studio 6.0 VC++ Windows2000

  • 構造体(study c)

    現在、study cというものを使ってプログラミングをしているのですが、 どうしてもエラーの原因が分からないので質問させて頂きます。 #include <graph.h> struct blocks_info { bool enable; RECT bounds; }; main() { ・・・//省略 } このようにプログラムしているのですが、コンパイルすると、構造体の部分のbool enable;の行で、 この場所には;が必要です。とエラーが出ます。 ためしにbool enable;を消してコンパイルしてみると、今度は RECT bounds;の行で同じエラーが出ました。 その部分も消すと、};の行でまた同じエラーが出ました。 どなたかエラーの原因が分かる方いらっしゃいましたらご教授下さい。 よろしくお願いいたします。

  • cwchar内でエラーが起きます。

    C++を勉強しているのですが、コンパイルをすると、 識別子が必要です cwchar C2059 構文エラー: '::' cwchar C2589 'unsigned': スコープ解決演算子 (::) の右側にあるトークンは使えません。 cwchar と、cwchar.h内でエラーが起きてしまいます。コードを絞っていって、最終的に以下のコードでもエラーが起きていました。 #include <iostream> using namespace std; int main(){     cout << "HelloWorld." << endl;     return 0; } なぜでしょうか?改善方法を教えていただけると嬉しいです。 環境はVisualStudioCommunity2015 windows10 です。

専門家に質問してみよう