検索結果 106 件

by jacoby
2008年3月27日(木) 02:35
フォーラム: プログラミング質問板
トピック: 連続的なメッセージの解消について
返信数: 7
閲覧数: 3774

連続的なメッセージの解消について

一つのスレッドと、ウインドウ上に一つのメニュー「Test」を持つプログラムがあるとします。 '----------------------------------------------------------------------------- ' イベント プロシージャ '----------------------------------------------------------------------------- ' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。 ' ウィンドウ ハンドル: hMainWnd #prompt ' TO...
by jacoby
2006年11月05日(日) 21:14
フォーラム: プログラミング質問板
トピック: クリックされてもアクティブにならないウインドウ
返信数: 2
閲覧数: 2969

レスありがとうございます。

MessageBox関数の前に EnableWindow([モードレスウィンドウのハンドル],FALSE) MessageBox関数の後に EnableWindow([モードレスウィンドウのハンドル],TRUE) ※意図する動作にならないかもしれませんが…  hiraさん、レスありがとうございます。 ホントに、上手く行きました。"EnableWindow"、これを使うんですね。 しっかり非アクティブのままで控えてくれる。意図する動作、そのものです。 長いこと詰まっていたとこが、これで上手くいくんじゃないかと 思います。  レス、ありがとうございました。またよろしくお願いし...
by jacoby
2006年11月04日(土) 00:03
フォーラム: プログラミング質問板
トピック: クリックされてもアクティブにならないウインドウ
返信数: 2
閲覧数: 2969

クリックされてもアクティブにならないウインドウ

 クリックされてもアクティブにならないウインドウが作れないかと思っています。  例えば、メインウインドウと、一つのモードレスウインドウから成るアプリが あるとして、  メインウインドウの処理で何らかのエラーが発生した時、 それをメッセージボックスで表示したとします。 そのメッセージボックスが表示されている間(okボタンなどの入力待ちの間)は、 モードレスダイアログをアクティブにしたくないのです。 (Googleなどで検索してみたところではアクティブ、非アクティブの判断に 「WM_NCACTIVATE」等のメッセージが使えそうな感じもしたのですが、 実際にどうすればアクティブにさせないように出来...
by jacoby
2006年10月09日(月) 23:10
フォーラム: プログラミング質問板
トピック: ダイアログボックスのアクティブ動作について
返信数: 6
閲覧数: 3781

音。

 (↑のフォーカスを投げるプログラムではなく、一番最初の何も小細工してない
ものを使った時ですが)
 モードレス、モーダル(※メッセージボックス)が表示されている時の
一旦全体非アクティブからメインウインドウをクリックしたとき、
例の「ポーン」という音(モーダルに返答しなさいよという感じでしょうか?)は
聞こえるんです。
 だから、メインウインドウの領域も確かに認識していることは確かだと
思うのですが。
by jacoby
2006年10月09日(月) 21:55
フォーラム: プログラミング質問板
トピック: ダイアログボックスのアクティブ動作について
返信数: 6
閲覧数: 3781

用語の間違いを。

 上の記述、自分の用語の使い方に間違いがあるので修正します。

 これまで親ウインドウ、子ウインドウと書いていましたが
僕のこのプログラムの場合では正しくはそれぞれ、

 「オーナーウインドウ」
 「オーナー付きウインドウ」

の誤りでした。

 子ウインドウというのは親ウインドウのクライアント領域内にのみ
表示されるウインドウということで、これはプログラムの内容と違いますね。
 以後気をつけて、そう書きたいと思います。
 失礼しました。
by jacoby
2006年10月09日(月) 17:44
フォーラム: プログラミング質問板
トピック: ダイアログボックスのアクティブ動作について
返信数: 6
閲覧数: 3781

レスありがとうございます。

Mario2さん、レスありがとうございます。 CreateDialogの第1引数にGetDesktopWindow()を指定してはどうでしょう?  こちらでもこの設定で実行してみましたが、どうも状態は変わらないようです。 (こちらのやり方が間違っているかもしれません。いずれにしてもレスを寄せて 頂いて、感謝です。)  それで、以後もあれこれ考えてはみるのですが、  まずメッセージボックスをモーダルダイアログに変えてハンドルを取得出来る ようにして、  メインウインドウ、及びモードレスウインドウのアクティベイト・イベントで "もしモーダルダイアログ(※前述のメッセージボックスの代わり)...
by jacoby
2006年10月07日(土) 22:43
フォーラム: プログラミング質問板
トピック: ダイアログボックスのアクティブ動作について
返信数: 6
閲覧数: 3781

レスありがとうございます。

 イグトランスさん、レスありがとうございます。 とりあえずCreateDialogの最初の引数にhMainWndを指定しては どうでしょうか。  教えて頂いた通り、CreateDialogの最初の引数にhMainWndを 指定すると一度非アクティブにしてから、MainWndをクリックすると メッセージボックスをアクティブにすることが出来ました。  ただしCreateDialogで親をhMainWndにしたくない場合など (このモードレスウインドウをMainWndの子にしてしまうと常にMainWndより 前面に来てしまう。それを避けたい時など)には、ここは「0」にしておきたい と思います。   ...
by jacoby
2006年10月07日(土) 01:35
フォーラム: プログラミング質問板
トピック: ダイアログボックスのアクティブ動作について
返信数: 6
閲覧数: 3781

ダイアログボックスのアクティブ動作について

 メインウインドウに二つのボタンを貼り付け、 一つをクリックすると「メッセージボックス(モーダル・ダイアログ)」、 もう一つをクリックすると「モードレス・ダイアログ」を開くような簡単な プログラムを書きます。 Sub MainWnd_CommandButton1_Click() MessageBox(hMainWnd,"Message","MessageBox",MB_OK) End Sub Sub MainWnd_CommandButton2_Click() hModelessDialog=CreateDialog(0,"ModelessDi...
by jacoby
2006年9月29日(金) 18:39
フォーラム: プログラミング質問板
トピック: エディットボックスと「クリップ」について。
返信数: 1
閲覧数: 2219

ちらつきを解消するには?

 上の質問を整理しようと、今までActiveBasicのプロジェクトで 自分が作成したプログラムを見直していたのですが、 どうもどのプログラムにおいても"リサイズ"の時に ウインドウがちらつく現象が起こっています。 今回はそれを直そうとテキストエディタにて「子ウインドウをクリップ」に チェックを入れてみて上記のような問題にあたったのですが、 ただし仮に「子ウインドウをクリップ」でちらつきが解決したとしても、 テキストエディタのような「子ウインドウ」を持たない他のプログラムでは リサイズ時のちらつきの問題は残るままだろうと思います。  これらのリサイズ時のちらつきをよく見てみ...
by jacoby
2006年9月26日(火) 04:12
フォーラム: プログラミング質問板
トピック: エディットボックスと「クリップ」について。
返信数: 1
閲覧数: 2219

エディットボックスと「クリップ」について。

 ヘルプセンターの「テキストエディタを作る」で説明されているサンプルのように、 ウインドウにエディットボックスを一つ貼り付けて、 リサイズ・イベントでその大きさを調整して表示するプログラムを下の様に 書きました。 (AB 4.24/プロジェクト名「EditBoxTest_Flickering」で製作。) '----------------------------------------------------------------------------- ' イベント プロシージャ '-----------------------------------------------------...
by jacoby
2006年9月22日(金) 19:40
フォーラム: プログラミング質問板
トピック: 領域を指定した再描画について
返信数: 5
閲覧数: 3089

レスありがとうございます。

マティさん、再びのレスありがとうございます。 WM-PAINTを発生するために、InvalidateRectを使用していますよね! このときInvalidateRect(hMainWnd, rc2, FALSE)で再描画を行う範囲を明示していると思います。 システムは、この範囲を再描画を行う領域と認識(描画命令を実行する範囲をhMainWndのパラメータとして保持)、ドライバーレベルで解読します。 かなり突っ込んで説明して頂いた内容なので、中々自分には難しいのですが、 こういうことでしょうか、 つまり、「InvalidateRect」を実行したとき、その時点で、 そこで指定されている描画範囲指...
by jacoby
2006年9月20日(水) 02:20
フォーラム: プログラミング質問板
トピック: 領域を指定した再描画について
返信数: 5
閲覧数: 3089

レスありがとうございます。

マティさん、レスありがとうございます。 私の記憶が正しければ、クリッピングは右辺と底辺を描画対象にしません。  それを受けて、次のようにプログラムを書き直してみると、うまく描画されました。 'MainWndに描画 rc.right=x rc.bottom=y DrawLine(hMemDC) ' Dim rc2 As RECT If rc.left>rc.right Then rc2.left =rc.right rc2.right=rc.left Else rc2.left =rc.left rc2.right=rc.right End If If rc.top>rc.bottom Then...
by jacoby
2006年9月17日(日) 16:03
フォーラム: プログラミング質問板
トピック: 領域を指定した再描画について
返信数: 5
閲覧数: 3089

プログラムにバグがありました。

 どうやらInvalidateRectに渡すRECT構造体「rc」の設定に まず誤りがありました。 rc.leftとrc.topには「左上頂角」、 残りのrc.rightとrc.bottomには「右下頂角」の座標を 入れなければならないのですが、そこがあのプログラムでは必ずしも その値になっておらず、間違ったセットになっていました。 スレッド1の描画ループの箇所を下のように修正をして、 'MainWndに描画 rc.right=x rc.bottom=y DrawLine(hMemDC) '左上頂角、右下頂角かどうか判定。 Dim rc2 As RECT If rc.left>rc.right...
by jacoby
2006年9月16日(土) 02:50
フォーラム: プログラミング質問板
トピック: 領域を指定した再描画について
返信数: 5
閲覧数: 3089

領域を指定した再描画について

描画速度の高速化のために InvalidateRectで領域を指定した再描画を させようと以下のようにプログラムを書いてみたのですが、、、 '----------------------------------------------------------------------------- ' イベント プロシージャ '----------------------------------------------------------------------------- ' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。 ' ウィンドウ ハンド...
by jacoby
2006年9月06日(水) 23:42
フォーラム: プログラミング質問板
トピック: ツールバーの「標準のビットマップ」について
返信数: 8
閲覧数: 3540

レスありがとうございます。

ノッチさん、レスありがとうございます。

 書いて頂いた定数のリスト、プログラムに組み込んで実行すると
きちんと標準のビットマップのボタンが表示されました。
これらの定数は自分でセットしなければならないんですね。
定数を検索する時は
define
APIを検索する時は
Declare
あたりを一緒に指定するとたいていは出てきますよ。
 検索方法も、教えてもらってありがとうございました。
 早速、色々調べてみようと思います。

 またよろしくお願いします。