none
關於關閉視窗疑問? RRS feed

  • 問題

  • 您好,

              此疑問延續之前 EVC 開啟新視窗.

    主視窗使用 
     TEASA dlg;
     dlg.DoModal();

    將TEASA視窗顯示 , 如果TEASA視窗中的 function 使用迴圈方式永遠執行不的離開,這時點選TEASA視窗右上角的 "X" ,會造成TEASA視窗被關閉,主視窗也一起被關閉.

    當執行OnButton1()
    void TEASA::OnButton1()
    {
     
            while(1)
           {
                 :
                 :
           }      
    }

    這時點選TEASA視窗右上角的 "X"

    TEASA視窗被關閉,主視窗也一起被關閉.

    但如果不去執行OnButton1()
    這時點選TEASA視窗右上角的 "X"
    只有TEASA視窗被關閉.

    2009年4月1日 上午 10:10

解答

  • 您好,

    描述不好請見諒.


    我在主視窗(A)下開啟另一視窗(B),現在要從開啟的視窗(B)回到原本的主視窗(A),
    點選B視窗右上角的 "X",可以將B視窗關閉.

    問題:

    B視窗有一個function 如下:
    void B::OnButton1()
    {
            while(1)
           {
                 :
                 :
           }      
    }

    如果在B視窗不去執行OnButton1() ,
    去點選B視窗右上角的 "X",則會關閉B視窗.   <= 沒有疑問.
    但如果在B視窗去執行OnButton1() ,
    再去點選B視窗右上角的 "X",則 A,B 2個視窗都會關閉. <=問題(不是只有B視窗關閉嗎?(點選B視窗右上角的 "X"))



    Hi Joeen,

    ...視窗右上的"X" 只會將程式隱藏,"OK" 才會將視窗關閉。

    照您描述的行為看起來,B視窗執行無窮回圈的程式碼裡面若沒有放出CPU 資源(sleep 之類),
    A視窗沒出現的原因只是因為單純B視窗把資源吃光了,導致A視窗重繪的動作因為沒有CPU資源,畫面出不來而已。

    每天都有進步的人值得敬重
    • 已提議為解答 昭仁 2009年4月6日 上午 06:32
    • 已標示為解答 bauannModerator 2009年4月13日 下午 01:28
    2009年4月6日 上午 06:32

所有回覆

  • HI,

    看不懂您的問題, 前兩種情形好像在描述同一個現象
    2009年4月2日 上午 02:15
  • 您好,

    描述不好請見諒.


    我在主視窗(A)下開啟另一視窗(B),現在要從開啟的視窗(B)回到原本的主視窗(A),
    點選B視窗右上角的 "X",可以將B視窗關閉.

    問題:

    B視窗有一個function 如下:
    void B::OnButton1()
    {
            while(1)
           {
                 :
                 :
           }      
    }

    如果在B視窗不去執行OnButton1() ,
    去點選B視窗右上角的 "X",則會關閉B視窗.   <= 沒有疑問.
    但如果在B視窗去執行OnButton1() ,
    再去點選B視窗右上角的 "X",則 A,B 2個視窗都會關閉. <=問題(不是只有B視窗關閉嗎?(點選B視窗右上角的 "X"))



    2009年4月2日 上午 03:17
  • HI,

    如果在B視窗出現後執行OnButton1(), 因為程式進入無窮迴圈, 此時按下B視窗右上角的 "X", 程式應該是沒有反應的, 因為程式正忙於執行無窮迴圈, 但是您如果強制終止程式執行, 當然B視窗和A視窗都會一起被關閉, 因為程式被強制終止執行了
    2009年4月6日 上午 02:55
  • 您好,

    描述不好請見諒.


    我在主視窗(A)下開啟另一視窗(B),現在要從開啟的視窗(B)回到原本的主視窗(A),
    點選B視窗右上角的 "X",可以將B視窗關閉.

    問題:

    B視窗有一個function 如下:
    void B::OnButton1()
    {
            while(1)
           {
                 :
                 :
           }      
    }

    如果在B視窗不去執行OnButton1() ,
    去點選B視窗右上角的 "X",則會關閉B視窗.   <= 沒有疑問.
    但如果在B視窗去執行OnButton1() ,
    再去點選B視窗右上角的 "X",則 A,B 2個視窗都會關閉. <=問題(不是只有B視窗關閉嗎?(點選B視窗右上角的 "X"))



    Hi Joeen,

    ...視窗右上的"X" 只會將程式隱藏,"OK" 才會將視窗關閉。

    照您描述的行為看起來,B視窗執行無窮回圈的程式碼裡面若沒有放出CPU 資源(sleep 之類),
    A視窗沒出現的原因只是因為單純B視窗把資源吃光了,導致A視窗重繪的動作因為沒有CPU資源,畫面出不來而已。

    每天都有進步的人值得敬重
    • 已提議為解答 昭仁 2009年4月6日 上午 06:32
    • 已標示為解答 bauannModerator 2009年4月13日 下午 01:28
    2009年4月6日 上午 06:32