DOBON.NET DOBON.NETプログラミング掲示板過去ログ

【VB.NET2008Exp+FW3.0】バルーンのようなものを表示させたい

環境/言語:[VB.NET2008Exp+FW3.0]
分類:[.NET]

先日はお世話になりました。
おかげさまで無事開発は進んでおりますが、またひとつ問題が出てきてしまいました。
可能な限り自分でも調べてみたのですが、どうしてもわからないのでご教授頂きたく存じます。


作成しているのはいわゆるP2P系のチャットソフトです。
これで例えばForm1で入力や送信を制御し、ログを表示しているとします。
この時、相手側から緊急コールがあった場合、それをバルーンとしてForm2などに
大きく表示したいのです。
しかし、Form2.Visible=TrueやForm2.Showでは、Form2がアクティブになり
フォーカスが移動してしまうため、Form1での作業が中断してしまったり
変換中の入力が消えてしまったりします。
頻繁なやり取りがあるチャットソフトでこれは好ましくないため
どうにかForm2を非アクティブで(フォーカスを移動させずに)表示したいのですが
何か方法はありませんでしょうか?

ShowWindowというAPIがあるところまではこぎつけましたが、
SW_SHOWNAを指定してもウィンドウが表示されません……。
現在、サンプルを作成していろいろと挑戦中ですが、何かよい方法があれば
お教えください。

Public Class Form1

Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Public Const SW_SHOWNA = 8
Public Const SW_HIDE = 0


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim ret As Long
ret = ShowWindow(Form2.Handle, SW_HIDE)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim ret As Long
ret = ShowWindow(Form2.Handle, SW_SHOWNA)

End Sub

End Class
Form2 の ShowWithoutActivation プロパティをオーバーライドしてやるのはどうでしょう。
>>Hongliangさん
> Form2 の ShowWithoutActivation プロパティをオーバーライドしてやるのはどうでしょう。

心当たりのあるキーワードで検索したし、リファレンスも読み込んだのに。
……なんでこれに行き当たらないんだ自分 orz

ものすごい盲点でした。
.NET Frameworkのほうにあったのですね……(それで引っかからなかったのかな)

ありがとうございました。
おかげさまで1日たたずに解決できました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板