wince 全屏问题,菜鸟求

fgh0302 2012-01-04 10:14:06
我用vs2008 建了个一个 wince5.0的项目。我部署到 一台 wince系统的pos机上。

我想全屏,把下面的任务栏隐藏 或者 遮挡 掉。

求教 急啊!!!
...全文
206 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fgh0302 2012-01-12
  • 打赏
  • 举报
回复
class Class1
{
public const int SPI_SETWORKAREA = 47;
public const int SPI_GETWORKAREA = 48;
public const int SW_HIDE = 0x00;
public const int SW_SHOW = 0x0001;
public const int SPIF_UPDATEINIFILE = 0x01;
[DllImport("coredll.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpWindowName, string lpClassName);
[DllImport("coredll.dll", EntryPoint = "ShowWindow")]
private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("coredll.dll", EntryPoint = "SystemParametersInfo")]
private static extern int SystemParametersInfo(int uAction, int uParam, ref Rectangle lpvParam, int fuWinIni);

/// <summary>
/// 设置全屏或取消全屏
/// </summary>
/// <param name="fullscreen">true:全屏 false:恢复</param>
/// <param name="rectOld">设置的时候,此参数返回原始尺寸,恢复时用此参数设置恢复</param>
/// <returns>设置结果</returns>
public static bool SetFullScreen(bool fullscreen, ref Rectangle rectOld)
{
IntPtr Hwnd = FindWindow("HHTaskBar", null);
if (Hwnd == IntPtr.Zero) return false;
if (fullscreen)
{
ShowWindow(Hwnd, SW_HIDE);
Rectangle rectFull = Screen.PrimaryScreen.Bounds;
SystemParametersInfo(SPI_GETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);//get
SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectFull, SPIF_UPDATEINIFILE);//set
}
else
{
ShowWindow(Hwnd, SW_SHOW);
SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);
}
return true;
}

}

结贴 完毕
jazka346704803 2012-01-05
  • 打赏
  • 举报
回复
两种方法:遮挡的话记得设置你的界面为全屏,而且一定要记得置顶;如果是隐藏的话,就按上面说的,应该比较容易实现的。
帮帮你我她 2012-01-05
  • 打赏
  • 举报
回复
隐藏任务栏

using System.Runtime.InteropServices;
//Imports Microsoft.VisualBasic

class hideshowtask
{
const int SW_HIDE = 0x0;
const int SW_SHOW = 0x1;
public int Hwnd;


[DllImport("Coredll.dll")]
private int FindWindow(string lpClassName, string lpWindowName)
{
}

[DllImport("Coredll.dll")]
private bool EnableWindow(int hwnd, int fEnable)
{
}

[DllImport("Coredll.dll")]
private bool ShowWindow(int hwnd, int nCmdShow)
{
}

void showtaskbar()
{
// Try
Hwnd = FindWindow("HHTaskBar", null);
ShowWindow(Hwnd, SW_SHOW);
// EnableWindow(Hwnd, True)
// Catch 'ex As Exception
// End Try
}

void hidetaskbar()
{
// Try
Hwnd = FindWindow("HHTaskBar", null);
ShowWindow(Hwnd, SW_HIDE);
// EnableWindow(Hwnd, False)
// Catch ' ex As Exception
// End Try
}


}

LIXIYO 2012-01-05
  • 打赏
  • 举报
回复
很简单,如果是VB.NET的话声明

Public Declare Function ShowWindow Lib "coredll.dll" (ByVal hwnd As IntPtr, ByVal nCmdShow As Integer) As Integer

程序启动时使用代码:

Dim htask As IntPtr = FindWindow("HHTaskBar", Nothing)
ShowWindow(htask, SW_HIDE)

就可以隐藏wince的任务栏
退出时使用代码:

Dim htask As IntPtr = FindWindow("HHTaskBar", Nothing)
ShowWindow(htask, SW_SHOWNORMAL)

即可恢复显示wince的任务栏
c#的代码和这个差不多,VC的就不了解了。
以上代码在我的项目里正常使用没有问题。
如果你的程序非正常退出的话,没有调用恢复显示wince的任务栏代码的话,wince的工具栏将不能显示
LIXIYO 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lixiyo 的回复:]

很简单,如果是VB.NET的话声明
VB.NET code

Public Declare Function ShowWindow Lib "coredll.dll" (ByVal hwnd As IntPtr, ByVal nCmdShow As Integer) As Integer


程序启动时使用代码:
VB.NET code

Dim htask As IntPtr = F……
[/Quote]
少了个声明:

Public Declare Function FindWindow Lib "coredll.dll" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
fgh0302 2012-01-04
  • 打赏
  • 举报
回复
我 没做过 wince的 请问C# 怎么隐藏 ?

HWND hTaskBar;
hTaskBar = ::FindWindow(TEXT("HHTaskBar"), NULL);
::ShowWindow(hTaskBar, SW_HIDE);


这函数在哪?
woshi_ziyu 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 91program 的回复:]

引用 2 楼 fgh0302 的回复:

我是 C#啊 修改属性topmost 属性也是true 就是任务栏没有隐藏掉


必须用代码先隐藏了任务栏
[/Quote]
++
91program 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fgh0302 的回复:]

我是 C#啊 修改属性topmost 属性也是true 就是任务栏没有隐藏掉
[/Quote]

必须用代码先隐藏了任务栏
fgh0302 2012-01-04
  • 打赏
  • 举报
回复
我是 C#啊 修改属性topmost 属性也是true 就是任务栏没有隐藏掉
northcan 2012-01-04
  • 打赏
  • 举报
回复

int iWidth = GetSystemMetrics(SM_CXSCREEN);
int iHeight = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0, 0, iFullWidth, iFullHeight, SWP_NOOWNERZORDER | SWP_SHOWWINDOW);


如果楼主是vb.net或者c#.net应用程序,可以直接修改对话框的大小属性即可。
如果是VC/MFC程序,可以在对话框的OnInitDialog函数中加入上面三行代码。
这样可以全屏幕显示,并且可以盖住任务栏。
也就是这时候任务栏可以不必隐藏,如果非要隐藏,可以通过下面这段代码:


HWND hTaskBar;
hTaskBar = ::FindWindow(TEXT("HHTaskBar"), NULL);
::ShowWindow(hTaskBar, SW_HIDE);
fgh0302 2012-01-04
  • 打赏
  • 举报
回复
class Class1
{
[DllImport("coredll.dll", EntryPoint = "FindWindow")]
public static extern int FindWindow(string lpWindowName, string lpClassName);
[DllImport("coredll.dll", EntryPoint = "ShowWindow")]
public static extern int ShowWindow(int hwnd, int nCmdShow);
public const int SW_SHOW = 5; //显示窗口常量
public const int SW_HIDE = 0; //隐藏窗口常量
public static bool HideTaskBar(bool FLAG)
{
int Hwnd = FindWindow("HHTaskBar", null);
if (Hwnd == 0)
return false;
else
{
if (FLAG)
{
ShowWindow(Hwnd, SW_HIDE);
}
else
{
ShowWindow(Hwnd, SW_SHOW);
}
}
return true;
}
}


/// <summary>
/// 应用程序的主入口点。
/// </summary>
[MTAThread]
static void Main()
{
Application.Run(new Form1());

Class1.HideTaskBar(true);


}

只是把 任务栏 变成蓝条了 没有隐藏哦

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧