したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

「×」クリック処理で教えて下さい

1シマチャン:2003/11/14(金) 04:19
MAINFORM以外にFORM2ウインドウも表示させるものを作製しました。
MAINFORMを消し、FORM2が表示されているときにウインドウの右上の「×」をクリックした時にFORM2を消しMAINFORMを表示させたいのですが、下記のように記述するとコンパイルではエラー発生しないのですが、実行時に「×」をクリックするとエラー発生してしまいます。これを解決する方法を教えて頂きたいので、宜しくお願いします。
---作ったエラーになる記述---
var shared FORM2 as object
declare sub FORM2_QUERYCLOSE edecl(CAHCEL%,byval MODE%)
・・・
'FORM2で。
SHOWWINDOW 0;'メインフォームを消す
〜FORM2の処理ルーチン〜
・・・
sub FORM2_QUERYCLOSE(CAHCEL%,byval MODE%)
form2.SHOWWINDOW 0 :'ウインドウを消す。
form2.SETTOPMOSTWINDOW (0) :'トップモーストウィンドウを廃棄。
SHOWWINDOW -1 ;'メインフォーム表示
end sub
-----

2TOKO:2003/11/14(金) 08:27
シマチャンさん>
自己流でイベント駆動型を動かしているTOKOといいます。
エラーが出ますか?というより終了できない状態ではないでしょうか。

文面ではFORM2でMAINFORMを消すのにSHOWWINDOW 0 となっていますが
これは自分を消すことになっていませんか?
FORM2_QUERYCLOSE内では、FORM2.SHOWWINDOW 0 でFORM2を消して
再びFORM2を表示することになっているように思えます。
MAINFORMおよびFORM2を明示する方がいいのではないかと思います。


#include "windows.bi"
'
var shared MAINFORM as object
var shared FORM2 as object
MAINFORM.ATTACH GETHWND

declare sub BUTTON1_ON edecl ()
sub BUTTON1_ON()
MAINFORM.SHOWWINDOW 0
FORM2.CREATEWINDOW "FORM2",-1
end sub

declare sub FORM2_QUERYCLOSE edecl(CANCEL%,byval MODE%)
sub FORM2_QUERYCLOSE(CANCEL%,byval MODE%)
FORM2.SHOWWINDOW 0
MAINFORM.SHOWWINDOW -1
end sub

while 1
waitevent
wend
stop
end

3シマチャン:2003/11/14(金) 16:05
TOKOさんへ。
解決しました、お早いご回答を頂き有難う御座います。早速試しましたが、MAINFORMの明示関連の記述がポイントのようでした。感謝致します、今後とも宜しくお願いします。

4F橋:2003/11/17(月) 19:45
シマチャンさん>
ご投稿ありがとうございました

TOKOさん>
ご回答ありがとうございました

-----

フォームの件もまだまだ勉強中でして…私には解答出来ませんでしたのでありがとうございました

そういえば私も確かこれと似たような症状もあった気が…
(そのまま納品…で。このフォームを開いた時に×を押さないで…とお客様に説明…)

5シマチャン:2003/11/18(火) 08:43
>(そのまま納品…で。このフォームを開いた時に×を押さないで…とお客様に説明…)
私の場合は、TOKOさんの回答を貰うまでメッセージボックスで「終了」を表示させて、「OK」ボタンしか押せないようにして強制的にendさせていました。mainformに戻れるようになり、これまでよりスマートな動作(操作)になりました。この掲示板と達人の皆さんのお陰です。これからも何かとお世話になると思いますので、皆様宜しくお願い致します。(早く、アドバイスする立場になりたい!!、願望のみ??)

6nisii:2003/11/18(火) 11:04
小ネタ「アプリケーションを閉じさせない」にも書いていますが、
QUERYCLOSEイベントが発生したとき、引数のCANCEL%を 0 以外に変更すれば、
アプリケーションが閉じるのを禁止できます。
例えば、ファイル書き込み中だけ「×」押下を無視する、といった処理に利用できます。

7iwakifarm:2003/11/18(火) 19:25
あれ?確か、xを無効にするプログラムありましたよ。
#include "windows.bi"
declare sub API_EXITWINDOWSEX lib "user32" alias "ExitWindowsEx" (byval UFLAGS as long, byval DWRESERVED as long)
'========================================================================
'= クローズボタンを禁止するサンプルプログラム =
'= COPYRIGHT FUJITSU LIMITED 1997-1999 =
'========================================================================
'#include "windows.bi"

MF_BYCOMMAND& = 0
MF_BYPOSITION& = &H400
MF_DISABLED& = 2
MF_ENABLED& = 0
MF_GRAYED& =1
SC_CLOSE& = &HF060

declare function API_ENABLEMENUITEM lib "user32" alias "EnableMenuItem" (byval HMENU as long, byval WIDENABLEITEM as long, byval WENABLE as long) as long
declare function API_GETSYSTEMMENU lib "user32" alias "GetSystemMenu" (byval HWND as long, byval BREVERT as long) as long
var HSYSMENU as long

HSYSMENU = API_GETSYSTEMMENU( GETHWND, 0 )
ATR& = MF_BYCOMMAND& or MF_DISABLED& or MF_GRAYED&
STATUS& = API_ENABLEMENUITEM( HSYSMENU, SC_CLOSE&, ATR& )


' API ExitWindowsExの定義
'declare sub API_EXITWINDOWSEX lib "user32" alias "ExitWindowsEx" (byval UFLAGS as long, byval DWRESERVED as long)


API_EXITWINDOWSEX 1, 0
end
fbasicのディレクトリhelp/samplesにあったような。。。

8nisii:2003/11/19(水) 09:12
おぉ〜アドバイスをありがとうございます。
これなら「×」を禁止表示できますね。

APIサンプルを書いてながら、できることなら使いたくない、という不精な私。(笑)

9F橋:2003/11/19(水) 23:46
>>5
シマチャンさん>

>>(そのまま納品…で。このフォームを開いた時に×を押さないで…とお客様に説明…)
>私の場合は、TOKOさんの回答を貰うまでメッセージボックスで「終了」を表示させて…
…似たようなこともした覚えがあります(笑
何にせよWindowがあちこちに出現するプログラムなんてのは
MS-DOSしか知らなかった私には未知な分野がたくさんありすぎて…

これはしないで。あれはしないで。ってのがかなりあったかと…(汗(笑
(といいつつ未だにそれほど変わらなかったりしてますが…(笑))

10F橋:2003/11/19(水) 23:48
>>6
nisiiさん>
>アプリケーションが閉じるのを禁止できます。
もっと簡単な方法をしてまして…

11F橋:2003/11/19(水) 23:51
>>7
iwakifarmさん>
>あれ?確か、xを無効にするプログラムありましたよ。

初めは「xを押さないで」で納品だったのですが…
F-BASICのマニュアルやサンプルを見て次のソフトからはもこれを利用する様になりました

ただ…これを発見するまでには色々と回り道もしたり…(笑

ご紹介ありがとうございました

12F橋:2003/11/19(水) 23:52
>>8
nisiiさん>
>APIサンプルを書いてながら、できることなら使いたくない、という不精な私。(笑)
楽が出来るなら楽な方がいいかもっすね…(笑

でも私の場合は勉強も兼ねて少しずつでもAPI使わないと…
頑張りますです


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板