C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: VBの画面制御について


(過去ログ 65 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■37782 / inTopicNo.1)  VBの画面制御について
  
□投稿者/ ケイ (24回)-(2009/06/30(Tue) 12:27:01)

分類:[VB6 以前] 

お世話になっております。

VBの画面制御について、分からない点が出てきたため、ご教授お願いいたします。

現在VBのFormで画面を最大にし、且つ移動させないという内容で作成しています。
最大化についてはWindowState、移動についてはmoveablで制御できたのですが
Formのタイトルをダブルクリック時に、画面が移動してしまいます。(最大化→標準化)

そこで、Formのサイズ自体を画面の最大に合わせたのですが、ダブルクリックしてしまうと
やはり移動(標準化)してしまいます。

Formのタイトルをダブルクリックした際に処理を行わないようにするにはどうすれば良いか
ご教授のほうお願いいたします。
引用返信 編集キー/
■37783 / inTopicNo.2)  Re[1]: VBの画面制御について
□投稿者/ hagecha (1回)-(2009/06/30(Tue) 12:32:27)
MaxButton = False 辺りでどうでしょうか。
その代わり、最大化ボタンが使用できなくなりますが。
引用返信 編集キー/
■37786 / inTopicNo.3)  Re[2]: VBの画面制御について
□投稿者/ やじゅ (1063回)-(2009/06/30(Tue) 12:46:41)
やじゅ さんの Web サイト
No37783 (hagecha さん) に返信
> MaxButton = False 辺りでどうでしょうか。
> その代わり、最大化ボタンが使用できなくなりますが。

一番手軽なのは、hagecha さんの、MaxButton = False ですね。

MaxButton = False したくないなら、
WM_NCLBUTTONDBLCLK を捕捉してメッセージを止める。
WM_NCLBUTTONDBLCLK は、クライアント領域以外をダブルクリックしたことを示すメッセージ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24807&forum=7
引用返信 編集キー/
■37788 / inTopicNo.4)  Re[3]: VBの画面制御について
□投稿者/ ケイ (26回)-(2009/06/30(Tue) 13:03:14)
hagechaさん、やじゅさん
返答のほうありがとうございます。

MaxButtonとMinButtonについては、既にFALSEです。
既にForm上のボタンは×しか表示させていない状態です。

となると、WM_NCLBUTTONDBLCLKというのしか方法はなさそうです・・・
教えていただいたURLを見ながら、試してみます。

引用返信 編集キー/
■37789 / inTopicNo.5)  Re[4]: VBの画面制御について
□投稿者/ ケイ (27回)-(2009/06/30(Tue) 13:48:25)
やじゅさんに教えていたURLと
http://tokyo.cool.ne.jp/kanain/APIHTM/GetMsg.html
を参考に、なんとかタイトルバーのダブルクリックのイベント(?)は
拾えたのですが、やはり画面サイズが変更してしまいます。

サンプルコードなどを探したのですが、見つからずどうしてもやり方がわかりません。
教えていただけないでしょうか?

引用返信 編集キー/
■37790 / inTopicNo.6)  Re[5]: VBの画面制御について
□投稿者/ やじゅ (1065回)-(2009/06/30(Tue) 14:13:01)
やじゅ さんの Web サイト
No37789 (ケイ さん) に返信
> http://tokyo.cool.ne.jp/kanain/APIHTM/GetMsg.html
> を参考に、なんとかタイトルバーのダブルクリックのイベント(?)は
> 拾えたのですが、やはり画面サイズが変更してしまいます。

現在、どのようなコードになってますか、よければ投稿モードを図表モードにして
ソースコードを貼ってみてください。

一応、WindowProcまで処理が行ってしまうと画面サイズが変更されるので、
単純に、Returnして処理を終了させればいいと思います。

If uMsg = WM_NCLBUTTONDOWN Then
 Return '何もしないで終わる
End If

WindowProc = CallWindowProc(oad, hWnd, uMsg, wParam, lParam)
引用返信 編集キー/
■37792 / inTopicNo.7)  Re[6]: VBの画面制御について
□投稿者/ ケイ (28回)-(2009/06/30(Tue) 14:24:51)
やじゅさん

Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If uMsg = WM_NCLBUTTONDBLCLK Then
    Debug.Print "非クライアント領域(タイトルバーなど)がDクリックされました"
End If

WindowProc = CallWindowProc(oad, hWnd, uMsg, wParam, lParam)
End Function

が教えていただく前のソースになります。
調べたサンプルの一部改変しただけで、そのままreturnをするとエラーになってしまいます。

根本的なとこかもしれないのですが、このイベントってForm_Loadとかに記載できるものなのでしょうか?
それとも、何か関数を作成してその中で呼び出さないと扱えないのでしょうか?

引用返信 編集キー/
■37796 / inTopicNo.8)  Re[7]: VBの画面制御について
□投稿者/ やじゅ (1066回)-(2009/06/30(Tue) 16:26:52)
やじゅ さんの Web サイト
No37792 (ケイ さん) に返信
> 調べたサンプルの一部改変しただけで、そのままreturnをするとエラーになってしまいます。
>

おっと失礼、 returnの代わりにExit Functionでいいかも
http://homepage1.nifty.com/rucio/main/tyukyu/tyukyu9.htm
引用返信 編集キー/
■37799 / inTopicNo.9)  Re[8]: VBの画面制御について
□投稿者/ ケイ (29回)-(2009/06/30(Tue) 18:31:43)
No37796 (やじゅ さん) に返信
> ■No37792 (ケイ さん) に返信
>>調べたサンプルの一部改変しただけで、そのままreturnをするとエラーになってしまいます。
>>
>
> おっと失礼、 returnの代わりにExit Functionでいいかも
> http://homepage1.nifty.com/rucio/main/tyukyu/tyukyu9.htm

やじゅさん
無事に望んだ動きになりました。
とはいえ、まだ完全には把握しきれていないので、サブクラスについて勉強したいと思います。
ありがとうございました!


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -