小問題——mobile中OK鍵替換X鍵

        vs2005用win32寫界面程序,有個小問題,就是wm5.0上的X鍵一開始就生成了,並且代表最小化,而不是退出程序。所以想替換成OK鍵,直接關閉程序。

        在WM5.0右上角的有2種按鈕,叉和OK,叉代表最小化,OK代表關閉。最小化程序會使得程序佔用內存,沒有釋放內存,會使得系統越跑越慢。而WM5.0中提供的許多程序都是最小化。看了一些資料,主要圍繞msdn查找。

WM_CLOSE對應於後臺內存的關閉。

X鍵:smart monomoze button

OK鍵:done button

C#:

將最小化變爲OK通過設置form的屬性MinimizeBox,true爲最小化按鈕,false爲OK按鈕。

PPC可以修改,而Smartphone不可以,如果不添加menu中的事件來結束程序的話,那程序始終會以最小化方式保留在系統內部。

修改屬性都是用於.NET   CF。

C++:

MFC

ok按鈕

繼承函數     afx_msg   void   OnOK();  
  重寫  
  void   C****::OnOK()  
  {  
          //你的代碼  
  }
  

X按鈕

繼承函數     afx_msg   void   OnCancel(); 
  重寫  

void   ****::OnCancel()  
  {   
            //你的代碼 
  }
  

 

win32

在WM_CREATE消息處理中加SHDoneButton(HWND,SHDB_SHOW);   ok按鈕取代X按鈕,

        case WM_CREATE:
                 SHDoneButton(hWnd,SHDB_SHOW);  

然後在WM_COMMAND中處理IDOK

        case WM_COMMAND:

                  {

                    case IDOK:
                              DestroyWindow (hWnd);
                               break;

                                   ~~~~

相反,SHDoneButton(hWnd,SHDB_SHOWCANCEL); 顯示X鍵,case IDCANCEL: 對應消息。

 

 

 

其他(以下沒做測試)

MFC

 

例如CDialog中,在OnOK裏將CDialog::OnOK();註釋可屏蔽OK   
CMainFrame::PreCreateWindow(CREATESTRUCT&   cs)

加cs.style   =  WS_NONAVDONEBUTTON;

或在OnInitDialog()中加ModifyStyle(0,   WS_NONAVDONEBUTTON,   SWP_NOSIZE);   可去掉

 

 

在OnInitDialog中加入  
  SHDoneButton(this->m_hWnd,SHDB_HIDE);     //hide   ok   button   in   upper   right  
  ::CommandBar_Show(this->m_hWnd,   FALSE);//hide   command   bar  

 

 

"OK"   按鈕隱掉  
  SHDoneButton(AfxGetMainWnd()->m_hWnd,SHDB_HIDE);  
  "X"   按鈕隱掉  
  ModifyStyle(AfxGetMainWnd()->m_hWnd,WS_CAPTION,WS_MINIMIZEBOX,SWP_NOSIZE);  

 

 

在Frame的   WM_CREATE   消息裏使用    
          ModifyStyle(m_hWnd,   WS_CAPTION,   WS_MINIMIZEBOX,   SWP_NOSIZE);   
          去掉X 按鈕   

在對話框的WM_INITDIALOG   消息裏使用  
          ModifyStyle(m_hWnd,   WS_CAPTION,   WS_MINIMIZEBOX,   SWP_NOSIZE);  
          SHDoneButton(m_hWnd,   SHDB_HIDE);   
         
去掉OK按鈕
OK按鈕觸發OnOK事件,  X 按鈕觸發OnCancel事件。   
 

 

 


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章