2009-09-30 6 views
0

code:Qu'est-ce qui manque dans mon code ici .. comment faire d même?

[DllImport("AYGShell.dll")] 
    static extern Int32 SHFullScreen(IntPtr hwndRequester, UInt32 dwState); 

    public const UInt32 SHFS_SHOWSIPBUTTON = 0x0004; 
    public const UInt32 SHFS_HIDESIPBUTTON = 0x0008; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void OnPaint(object sender, PaintEventArgs e) 
    { 
     HideSipButton(); 
    } 

    private void HideSipButton() 
    { 
     UInt32 dwState = SHFS_HIDESIPBUTTON;//: SHFS_SHOWSIPBUTTON; 
     SHFullScreen(this.Handle, dwState); 
    } 

HI, au-dessus du code fonctionne très bien dans le premier lancement d'une forme windowsmobile, il cache le bouton gorgée d'une forme windows mobile, mais si je clique sur la barre de menu SIP- bouton réapparaît .. je ne sais pas comment éliminer complètement le bouton sip .. s'il vous plaît aidez-moi comment résoudre ce problème ..

Je ne veux pas bouton sip du tout pour une forme dans windowsmobile .. J'utilise .net CF

Remerciements

+0

avez-vous vu cette http://msdn.microsoft.com/en-us/library/microsoft.windowsce.forms.inputpanel%28VS.85%29.aspx? et cette question (pas sûr que ça va vous aider): http://stackoverflow.com/questions/323874/how-to-show-hide-sip-on-pocket-pc – Shaihi

+0

merci, je vais essayer, mais je suis n'utilisant aucun panneau ici. c'est un panneau par défaut. il pourrait y avoir une technique simple pour cacher .. donc je cherche. – Naruto

Répondre

1

Lorsque vous dites que vous cliquez sur la "barre de menu", parlez-vous d'une barre personnalisée que vous avez écrite ou de la barre standard (celle avec le menu démarrer, horloge, etc.) en haut de tous les programmes (sauf en plein écran ceux)? Si vous parlez de la barre de menu de démarrage normale, lorsque vous cliquez dessus, votre programme n'est plus actif, ce qui explique pourquoi le bouton SIP est redessiné. Si c'est le cas, vous pouvez utiliser l'événement Activated pour essayer de masquer à nouveau le bouton SIP. Remarque supplémentaire: Ce code ne fera que masquer à nouveau le bouton SIP lorsque l'utilisateur cliquera de nouveau sur votre formulaire, il ne fonctionnera pas jusqu'à ce que cela se produise.

est ici une idée sur ce que je décris:

public Form1() 
{ 
    InitializeComponent(); 
    this.Activated += new EventHandler(Form1_Activated); 
} 

private void Form1_Activated(object sender, EventArgs e) 
{ 
    HideSipButton(); 
} 

private void OnPaint(object sender, PaintEventArgs e) 
{ 
    HideSipButton(); 
} 
+0

Hey ça marche .. seulement en première instance .. et si je clique sur le premier bouton SIP apparaît, puis si je clique sur le bouton SIP, il appellera l'événement de peinture, à nouveau il sera caché .. quand je clique sur la barre de menus activer ou peindre l'événement ne viendra pas. – Naruto

0

Remplacer la méthode Form.OnActivated et appelez HideSipButton. E.x .:

protected override void OnActivated(EventArgs e) 
{ 
    HideSipButton(); 
    return base.Equals(e); 
} 
+0

Pourquoi le remplacer lorsque vous pouvez simplement attacher à l'événement? – Joshua

+0

Dans la section "Remarques". "La méthode OnActivated permet également aux classes dérivées de gérer l'événement sans attacher de délégué.Cette méthode est la technique préférée pour gérer l'événement dans une classe dérivée." - http://msdn.microsoft.com/fr-fr/library/system.windows.forms.form.onactivated.aspx –

+0

Intéressant, je ne le savais pas. – Joshua

Questions connexes