プロパティ画面を呼び出すには?

解決


ロン  2008-02-13 13:30:19  No: 67485

Windows XP
Microsoft Visual C++ 2005 Express Edition

JRA-VANのデータからスピード指数を計算しようと1週間前からVisual C++を始めた初心者です。
JRA-VANのサイトで、VBでの初期設定での説明はあるのですが、そのコードをC++にするのができません。初歩的な質問ですがお願いします。

http://jra-van.jp/dlb/sdv/workshop/20060629/Lesson-1.pdf

以下  VBでのコードです

Try
  'リターンコード
  Dim IReturnCode As Long
  '設定画面表示
  IReturnCode = AxJVLink1.JVSetUIProperties()
  If IReturnCode <> 0 Then
    MsgBox("JVSetUIPropertiesエラーコード:" & IReturnCode & ":", MessageBoxIcon.Error)
  End If
Catch ex As Exception
End Try


そだ  2008-02-13 19:07:30  No: 67486

VC++でformアプリを作るのはイバラの道としか思えないんですが・・・
みなさんどうなんでしょうかねぇ。

あえてそのままかくなら、
try {
    long IReturnCode;
    IReturnCode = this->AxJVLink1->JVSetUIProperties();
    if( IReturnCode != 0 ) {
        MessageBox::Show("JVSetUIPropertiesエラー コード:"+ret+":","error!",MessageBoxButtons::OK, MessageBoxIcon::Error);
    }
} catch (  Exception ^ex ) {
}


そだ  2008-02-13 19:57:16  No: 67487

うっかり間違えた。
×        MessageBox::Show("JVSetUIPropertiesエラー コード:"+ret+":","error!",MessageBoxButtons::OK, MessageBoxIcon::Error);
○        MessageBox::Show("JVSetUIPropertiesエラー コード:"+IReturnCode+":","error!",MessageBoxButtons::OK, MessageBoxIcon::Error);

ふと思ったけど
VC++.NET でCOM操作するときってCoinitialize はいらないのかな。


Blue  2008-02-13 20:07:03  No: 67488

>VC++.NET でCOM操作するときってCoinitialize はいらないのかな。
/clrでコンパイルすれば不要です。

http://msdn2.microsoft.com/ja-jp/library/ms173265(VS.80).aspx

COM の初期化
のところ。


そだ  2008-02-13 21:46:08  No: 67489

>/clrでコンパイルすれば不要です。
Formアプリケーションはデフォルトで/clr:pureになっているから
特にCOMの初期化は不要なんですね
参考になります


ロン  2008-02-13 22:52:47  No: 67490

回答ありがとうございます。
夜、家に帰ってから試してみます。
また、困ったことがありましたらよろしくお願いします。


ロン  2008-02-14 11:09:30  No: 67491

すいません  いろいろと試してみたのですがうまくできません。

http://jra-van.jp/dlb/sdv/workshop/20060629/Lesson-1.pdf

↑の説明に沿って試していますが、Form1をfrmMainにするためのNameが出てこないのと、以下のエラーが出てしまいます。

 error C2039: 'AxJVLink1' : 'sampleJRAVAN::Form1' のメンバではありません。
'sampleJRAVAN::Form1' の宣言を確認してください。
error C2227: '->JVSetUIProperties' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。

すごく初歩的な質問で申し訳ないのですがよろしくお願いします。


Blue  2008-02-14 11:27:25  No: 67492

なんであえてVC++でやるのでしょうか?

>Form1をfrmMainにするためのNameが出てこないのと
VBと違って簡単に変更できないのです。
# pdfのやつもForm.vbでfrmMainって名前なので違和感がある。
Nameを変えなかったからといって先に進めないわけではないのでそのままForm1でもよいでしょう。
どうしても変えたいのであれば、新規にWindows Formを追加して、
Form1.hを削除し、main文を変更すればいいでしょう。

>error C2039: 'AxJVLink1' : 'sampleJRAVAN::Form1' のメンバではありません。
【 やってみよう 】の1で追加したコンポーネントのNameのものを指定するのでは?
VBでは先頭文字が大文字になりますが、C#やC++/CLIでは小文字になります。
(おそらく、axJVLink1とかではないかと。)

それと、VBでのLong型は確かInt64になるのでVC++のlong型とは違います。
> long IReturnCode;

System::Int64 IReturnCode;
としないといけないかも。

>すごく初歩的な質問で申し訳ないのですがよろしくお願いします。
掲示板で1から聞くのは無理がありすぎます。
VC++のFormアプリケーション用の入門書なら世の中にたくさん出ているので
それで勉強してみてはどうでしょうか?


ロン  2008-02-14 12:17:01  No: 67493

>なんであえてVC++でやるのでしょうか?

友人から、VC++を覚えれば他にも応用が効くと言われたのと、有名な予想ソフトを作ってる人もこれで作っていると聞いたからです。
自分としては何からやればいいのかは、わからなかったので助言通りに始めてみました。

>掲示板で1から聞くのは無理がありすぎます。
>VC++のFormアプリケーション用の入門書なら世の中にたくさん出ているので
>それで勉強してみてはどうでしょうか?

本に関しては初心者本を4冊購入して読んだり、本に載っている通りにプログラムも作ってみました。ただ、基礎の基礎までは載っていなく、なんでここにこれがあるの?という疑問を持った状態で進めていたので、このコードをどこにいれるのかがわからなかったりと困っていました。

掲示板で質問したのは、なにか自分が理解できるきっかけになるかと思ったのですが、必要以上に甘えてしまい不快な思いをさせてしまい申し訳ありませんでした。

プログラムの方は、
Blueさんの発言のとおりに修正をしたら、コンパイルできました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加