5

Voglio creare un addin per vs2008, per mostrare una maschera/finestra trasparente sull'editor di vs2008.Come ottenere la posizione superiore dello schermo sinistro della finestra dell'editor di Visual Studio 2008?

nel codice seguente, il "aw.Left" e "aw.Top" è valore relativo, entrambi è 1.

DOMANDA:

  1. fai a sapere come ottenere il posizione sinistra/schermo superiore della parte dell'editor?

  2. oppure Posso spostare il cursore in alto/a sinistra, ma sai come ottenere la posizione dello schermo del cursore?

Grazie mille.

public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled) 
    { 
     handled = false; 
     if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault) 
     { 
      if(commandName == "MyAddin1.Connect.MyAddin1") 
      { 
       Window aw = _app.ActiveWindow; 
       int left = aw.Left; 
       int top = aw.Top; 

editor part

+0

['LinkedWindowFrame'] (http://msdn.microsoft.com/en-us/library/vstudio/envdte.window.linkedwindowframe.aspx) presumibilmente ottiene il genitore in modo da poter andare su e su e fino a hai la posizione assoluta. Oppure potresti rendere il tuo rivestimento un bambino della finestra ed evitare di aver bisogno della posizione assoluta. –

+0

Forse puoi farlo con i macro – Kuzgun

risposta

0

È possibile utilizzare la funzione Win32 ClientToScreen.

dichiarare la seguente funzione esterna:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] 
public struct POINT 
{ 
    public int x; 
    public int y; 
}; 

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
public static extern bool ClientToScreen(IntPtr hwndClient, ref POINT lpPoint); 

È possibile chiamare questo come segue

POINT pt = new POINT(); 
pt.x = left; 
pt.y = top; 
ClientToScreen(myForm.Handle, ref pt); 

Dopo questo, pt dovrebbe contenere le coordinate assolute del pt. Utilizzare ScreenToClient per l'operazione opposta. Usando i due, puoi anche ottenere la posizione di un punto rispetto ad un'altra finestra (dato che conosci l'handle di entrambe le finestre).

Problemi correlati