ページ 11

VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月04日(木) 09:09
by 真由美
今までC++でプログラムを書いてきました。
次のステップに進む為にVC++.netでアプリを作っております。 VS2005

そこで問題が出てきました。WindowsAPI等で書いていた時は
ウインドウズのスタイルを変えたりして出来たのですが.netではどのようにかけばよいのかがわかりません。

VC++.netで最小化した時にタスクバー?にいくのではなく
右下の時計とか表示してある画面に移動させたいです。

・ウインドウズのサイズ変更が出来ないようにする。
・フォーム名?が表示されているウインドウズバーを消す。

この3点が調べたのですがわかりませんでした。
その為質問させて頂きます。

VCについては大体は理解しておりますので
これらのプロパティ名を教えて頂けますと助かります。
例)lavel->text みたいな感じで

お手数おかけいたしますが宜しくお願い致します。

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月04日(木) 09:18
by たかぎ
他にもいろいろ疑問が出てきそうですので...

http://dobon.net/vb/dotnet/index.html
↑でも参考にしてください。
C#とVBのサンプルしかありませんが、C++/CLIでも似たようなもんです。

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月04日(木) 10:29
by 真由美
たかぎ様
ご回答ありがとうございます。
さらにわかりやすいサイトまでありがとうございました。

サイズの変更についてはわかったのですが
タイトルバーを持たないフォームの時、
マウスでの移動?が上手くいきません。

エラーは出ずに
if (e->Button == System::Windows::Forms::MouseButtons::Left)については実行出来てるみたいです。
ラベルの値を変えるようなプログラムを書いて実行したら反応が御座いました。
private: System::Void Form1_MouseDown(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
                 if (e->Button == System::Windows::Forms::MouseButtons::Left){
                     mousePoint = Point(e->X, e->Y);
                  }
             }
    private: System::Void Form1_MouseMove(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
                 if (e->Button == System::Windows::Forms::MouseButtons::Left){
                     Form1::Left += e->X - mousePoint.X;
                     Form1::Top +=    e->Y - mousePoint.Y;
                 }
             }
お手数おかけいたしますがご回答頂けないでしょうか?

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月04日(木) 10:38
by 真由美
すみません。
抜けておりました。
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
Form1::MouseDown += MouseEventHandler(Form1_MouseDown());
Form1::MouseMove += MouseEventHandler(Form1_MouseMove());

}

これを書くと引数がないとエラーが出ます。
ただ引数に何を入れればよいのかがわかりません・・・。

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月05日(金) 01:36
by pooka
>Form1::MouseDown += MouseEventHandler(Form1_MouseDown());
>Form1::MouseMove += MouseEventHandler(Form1_MouseMove());

ここは
this->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::Form1_MouseDown);
this->MouseMove += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::Form1_MouseMove);
ではないかと。

あとイベントハンドラの追加は
http://dobon.net/vb/dotnet/beginner/eventhandle.html
こちらのページのC#のところが参考になるかもしれません。

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月05日(金) 06:46
by 真由美
ご回答ありがとうございます。
エラーが出ずに出来ました。
ただ問題が御座いまして枠ぎりぎりの所を選択していないと動かないのと
かなりピクピク動きます。
クリックした位置から離れるともはやどこに止まるかわかりません。

ソースが間違えているのでしょうか?

ウインドウのどこをドラック&ドロップしても
スムーズに移動するような仕様にしたいです。

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月05日(金) 19:12
by 真由美
すみません・・・。色々と挑戦してみたのですがやはり
ピクピクするのがとれません・・・・。
どうか教えては頂けないでしょうか?

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月06日(土) 01:38
by Justy
 同一のイベントハンドラに対して同一のメソッドを多重登録しているのが原因だったりしませんか?

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月06日(土) 02:27
by 真由美
Justy様
ご回答ありがとうございます。
どうやらそうだったみたいです><

よく見てみるとラベルの上でドラック&ドロップしても反応しないみたいです。
フォームの何もないところでしたらスムーズに移動しました。

ラベルの上では反応しないのでしょうか。

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月06日(土) 02:42
by Justy
 そのラベルにもフォームと同じマウス関連のイベントを登録してあげれば動くと思いますよ。

Re:VC++.netで最小化した時に・・・(他質問あり)

Posted: 2010年3月06日(土) 03:21
by 真由美
出来ました><
登録してあげないとだめなんですね。

本当にありがとうございました。