禁止WinCE3.0操作系统下的对话框全屏显示

原创 2003年02月27日 09:05:00

 

       现在市面上很多掌上电脑,如恒基伟业的掌上通、联想的天玑等内嵌的都是微软的WinCE操作系统,如果你买的是内嵌WinCE2.0操作系统的PDA,那也就算了,但如果买的是内嵌WinCE3.0操作系统的PDA,你就发现在这种操作系统下面所显示的对话框都是全屏!这种做法,不仅仅让我看的难受,而且在很多实际应用中都带来了不少的麻烦!!那么,对我们开发人员来说,如何在C编程中禁止对话框全屏显示呢?

       其实这在技术上实现并不难,只是书店里关于WinCE编程的书太少,就更别说WinCE3.0的编程说明了。要资料你就得从网上找!噢,一不小心就多说了几句废话……。好,我们言归正传吧!

       要禁止WinCE3.0操作系统下的对话框全屏显示,总的来说,有两种方法(使用的编程工具是微软发行的VC+ToolKitsEVC)。

第一种方法比较简单直接,就是使用微软偷偷在对话框类里加的一个变量m_bFullScreen,说到这个变量就忍不住要骂微软两句,好好的对话框,你硬要它全屏显示干啥!规定了全屏,又偏要藏一个控制全屏的变量,真是无聊!好了,气出完了,我们继续!这个变量是BOOL型的变量,当其为TRUE时,对话框就会全屏显示,默认当然就是TRUE了,所以我们要在对话框初始化之前,把这个变量设为FALSE。见下例(这里假设你的对话框类名为CXXXDlg):

BOOL CXXXDlg::OnInitDialog()

{

m_bFullScreen=FALSE;

CDialog::OnInitDialog();

…………

…………

…………

Return TRUE;

}

看,就是这么简单,编译一下,你的对话框就不再是全屏咯!

第二种方法就是在对话框的OnInitDialog()函数中去掉Cdialog::OnInitDialog()一行,换成以下语句:

 

       SHINITDLGINFO shidi;

       HWND hDlg = m_hWnd;

       shidi.dwMask = SHIDIM_FLAGS;

       shidi.dwFlags = SHIDIF_SIPDOWN;

       shidi.hDlg = hDlg;

       SHInitDialog(&shidi);

 

这样做,就相当于自己创建一个新类型的对话框,该结构的参数可参考EVCMSDN说明。

       以上就简单介绍了如何禁止WinCE3.0操作系统下的对话框全屏显示,但在第一种方法中,若在程序运行过程中,弹出了虚拟键盘后,对话框将又再全屏显示。因此,我们必须对对话框的WM_SETTINGCHANGE消息进行处理。

       首先,我们需在CXXXDlg.h中加入函数声明:

afx_msg OnSettingChange();

       跟着,我们要在CXXXDlg.cpp中加入函数:

int CXXXDlg::OnSettingChange()

{

       return 1;

}

       该函数什么都不干,只要返回1就行了。

       最后,就是在消息表中添加ON_WM_SETTINGCHANGE()了。

       好了,现在可以再次运行你的对话框程序了,怎样?解决了你的问题了吗?如果还有什么疑问,那就Email联系吧:19776655@163.com

 

windows下QT对话框禁止放大缩小以及拖动

我没怎么碰过QT,新建的工程后,默认的QT主窗口会有最小化最大化以及关闭按钮,还有就是拖动窗口可放大缩小。发现QT不像MFC以及Delphi那样可以直接禁止拖动并且去掉工具栏最大化按钮。因此花了几分钟...
  • jwybobo2007
  • jwybobo2007
  • 2011年03月29日 16:53
  • 3941

MFC对话框全屏显示代码[亲测可用]

新建MFC对话框应用程序 在FullTestDlg.h : 头文件添加变量private: BOOL bFullScreen; WINDOWPLACEMENT m_struOldWndpl;priva...
  • xuexiiphone
  • xuexiiphone
  • 2016年04月26日 18:13
  • 1334

MFC中如何创建真正全屏的对话框

//MFC用于显示全屏dialog的代码,请事先将dialog的title bar属性设置为false CRect m_FullScreenRect; int nFullWidth=GetSystem...
  • hailongchang
  • hailongchang
  • 2008年04月02日 11:01
  • 5677

适应不同分辨率的对话框界面

参考:http://bbs.csdn.net/topics/370126703 你可以用全屏显示,也可以下面这样 int x = GetSystemMetrics(SM_CXSCREEN);   ...
  • qq_20161893
  • qq_20161893
  • 2017年05月04日 18:11
  • 123

MFC 对话框全屏显示图片

1.新建一个基于对话框的工程; 2.对话框去掉标题栏; 3.引入一张图片; 4.添加变量:CBrush m_brBk; 5.OnInitDialog()中添加 CBitmap bmp; ...
  • C_S_D_N_USER
  • C_S_D_N_USER
  • 2013年06月30日 19:13
  • 1980

android 全屏对话框

1 布局文件:style                  true       true      2  java代码: final Dialog dialog = ne...
  • yuyuyuzhen
  • yuyuyuzhen
  • 2015年12月15日 20:51
  • 294

Android中全屏Dialog的实现

Dialog是APP开发中常用的控件,同Activity类似,拥有独立的Window窗口,但是Dialog跟Activity还是有一定区别的,最明显的就是:默认情况下Dialog不是全屏的,所以布局实...
  • JavaAndroid730
  • JavaAndroid730
  • 2017年04月07日 13:54
  • 1267

禁止对话框窗口的改变和实现窗口的拉伸

1.禁止对话框窗口的改变(1)响应WM_SYSCOMMAND 消息void CMfcDemoDlg::OnSysCommand(UINT nID, LPARAM lParam){ if (nID ==...
  • acdnjjjdjkdckjj
  • acdnjjjdjkdckjj
  • 2010年05月20日 20:06
  • 4432

mfc如何让对话框全屏

方法一: 在Dialog::OnInitDialog()中加入: ModifyStyle(WS_CAPTION,0,0); // 如果只是要普通的全屏,不想去掉标题栏,就不用第一个语句 Se...
  • chen825919148
  • chen825919148
  • 2012年07月12日 19:54
  • 5271

通过Dialog Fragment管理和显示对话框

要想使用Dialog Fragment,可以扩展DialogFragment类,重写onCreateDialog处理程序。 package com.example.androidtest; imp...
  • howlaa
  • howlaa
  • 2014年08月03日 15:24
  • 3472
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:禁止WinCE3.0操作系统下的对话框全屏显示
举报原因:
原因补充:

(最多只允许输入30个字)