2010-03-30 10 views
1

J'ai une application .NET qui commence toujours elle-même avec son style de bordure à 'Aucun', car il s'agit d'une application en plein écran avec une résolution fixe.Ajout d'une bordure (Fixed3D) à une application sans bordure existante

Cependant, je voudrais ajouter la bordure de la fenêtre (Fixed3D) à cette fenêtre lorsque l'application démarre pour que je puisse la déplacer sur mon bureau.

Ma première idée était d'avoir une application de plateau en cours d'exécution, en surveillant les messages d'événement, et en quelque sorte changer le style de la fenêtre lorsque cette application spécifique démarre. Cependant, je ne suis pas sûr que cela fonctionnera et comment le faire.

Toute personne qui peut me diriger dans la bonne direction?

+0

vous voulez dire que vous n'avez pas le code pour l'application sans frontières? et vous voulez le contrôler en utilisant une autre application? – Amsakanna

+0

J'ai le code pour l'application sans frontières. Cependant, je ne peux pas changer ce code. Cette application définit son frmMain.BorderStyle sur None. Ce que je veux, c'est ajouter une bordure autour du frmMain, sans toucher à ce code. Ma première suggestion est d'attraper WM_PAINT et de forcer le style de bordure. – Aphelion

Répondre

2

Vous devriez probablement regarder en utilisant la fonction de user32.dll.

Vous aurez besoin de la poignée de fenêtre associée à la fenêtre principale de l'application. Cela pourrait être fait en utilisant:

Process[] processes = Process.GetProcesses(); 
foreach (Process process in processes) { 
    if (process.MainModule.FileName == @"C:\Program Files\App\app.exe") { 
     IntPtr handle = process.MainWindowHandle; 
     // Call method to change window style here. 
     break; 
    } 
} 

Vous pouvez ensuite définir les styles appropriés en utilisant la constante GWL_STYLE (valeur -16 en décimal) et SetWindowLongPtr.

Changing the Style of the Main Window devrait vous aider à trouver les styles dont vous avez besoin.

1

Vous pouvez hériter d'une classe d'une classe principale dans le code source et modifier ses propriétés dans les événements appropriés. Ce ne serait pas une modification du code source, bien qu'il s'agisse d'une application différente.

+0

Ce serait en effet une bonne solution. Malheureusement, dans ma situation spécifique, le programme principal du programme exécute beaucoup de logique interne, qui à son tour crée la mainForm. En outre, je ne peux pas toucher la solution réelle et le code interne. Je dois l'approcher comme si je n'avais pas les sources; Cependant, je suis capable de les "voir". – Aphelion

Questions connexes