小问题——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事件。   
 

 

 


 

 

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