全画面表示からの復帰 – プログラミング – Home

通知
すべてクリア

[解決済] 全画面表示からの復帰


Kon
 Kon
(@Kon)
ゲスト
結合: 19年前
投稿: 89
Topic starter  

いつもお世話になっておりますKonです。よろしくお願いします。

PCはWinXP、Visual C++ 2005 Express Edition を使用しています。
Windowsフォームアプリケーション でプロジェクトを作成しています。

ボタンを押すと全画面表示になり、Escキーで復帰する
というプログラムを作っていますが、
復帰時の表示が、完全に元に戻らずに困ってます。

下記の2つの関数で、全画面表示と通常表示を切り替えています。
Form の上には Panel。Panel の上には pictureBox が乗っていて、
Panel の AutoScroll は true;です。

private: System::Void fullScreenk(System::Object^ sender, System::EventArgs^
e)
{
 this->statusStrip->Visible = false;
 this->toolStrip->Visible = false;
 this->menuStrip->Visible = false;
 this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;
 this->WindowState = System::Windows::Forms::FormWindowState::Maximized;
}
private: System::Void Form1_KeyDown(System::Object^ sender,
System::Windows::Forms::KeyEventArgs^ e)
{
 if ( e->KeyCode == Keys::Escape){
  this->statusStrip->Visible = true;
  this->toolStrip->Visible = true;
  this->menuStrip->Visible = true;
  this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::Sizable;
  this->WindowState = System::Windows::Forms::FormWindowState::Normal;
 }
}

で、どう戻らないのかというと、ちょっと分かり難いと思うのですが・・・
全画面表示で、Panel より pictureBox が大きくなる状態のとき、
スクロールバーを下げたまま、Escで復帰すると、
スクロールバーが、一番上に無いのに、pictureBox の左上が表示され、
結果、pictureBox の上端と、Panel の上端がずれてしまうのです。

スクロールバーの位置を上端に戻さないままなのが原因かとも思うのですが、
どなたか良い方法をご存じでは無いでしょうか?


引用未解決
トピックタグ
Kon
 Kon
(@Kon)
ゲスト
結合: 19年前
投稿: 89
Topic starter  

Kon です。

上記のエラーが起きる原因は、
Form の Resize イベントで、

if (pictureBox_main->Width > panel_main->Width) w = 0;
if (pictureBox_main->Height > panel_main->Height) h = 0;
this->pictureBox_main->Location = System::Drawing::Point(w, h);

という処理が走るために起きていました。
これは、画像を常に中央に表示させたいために記述しているものです。
この部分を、

w = panel_main->AutoScrollPosition.X;
h = panel_main->AutoScrollPosition.Y;

として、スクロールバーの位置だけずらして表示することにしました。
お騒がせしました。m(_ _)m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました