C#のメッセージフォーム

導入されたC#シミュレーションシステムメニューのポップアップフォーム

使用してSystem.Runtime.InteropServicesを。

CONST  UINTの TPM_LEFTBUTTON = 0 CONST  UINTの TPM_RIGHTBUTTON = 2 CONST  UINTの TPM_LEFTALIGN = 0 CONST  UINTの TPM_CENTERALIGN = 4 CONST  UINTの TPM_RIGHTALIGN = 8 CONST  UINTの TPM_TOPALIGN = 0 const  のuint TPM_VCENTERALIGN = 0x10を;
const  のuint TPM_BOTTOMALIGN = 0x20のCONST UINT TPM_RETURNCMD = 0x100をconst  UINT WM_SYSCOMMAND = 0x0112 ; 

#region DLLIMPORT 
[DLLIMPORT(" User32.dllの" )]
 静的 にexternのIntPtr GetSystemMenu(のIntPtr hWndは、BOOL bRevert)。
[DLLIMPORT(" User32.dllの" )]
 静的 にexternの ブール GetCursorPos(アウトポイントlpPoint)。
[DLLIMPORT(" User32.dllの" )]
 静的 にexternの INT TrackPopupMenu(のIntPtr HMENU、UINT uFlags、
  int型のx、int型の yは、int型 nReserved、のIntPtr hWndは、アウト長方形prcRect)。
[DLLIMPORT(" user32.dllの" )]
 パブリック 静的 にexternの INTのSendMessage(のIntPtrのhWnd、UINTメッセージ、INT wParamに、INT lParamに)。
#endregion 

プライベート 無効のbutton1_Click(オブジェクト送信者、EventArgsの電子)
{ 
 ポイントVPOINT。
 長方形VRECT; 
 (GetCursorPos アウトVPOINT)。 
 のSendMessageが(ハンドル、WM_SYSCOMMAND、TrackPopupMenu(
 GetSystemMenu(ハンドル、)、
 TPM_RETURNCMD | TPM_LEFTBUTTON、vPoint.X、vPoint.Y、
  0、ハンドル、アウト VRECT)、0 ); 
}
 
コードの表示

C#と同様のMSN Messengerのポップアッププロンプトウィンドウを達成

いくつかの技術のためのWin32を使用して、おそらく最近、何人かの友人いくつかの疑問、私のブログの最近の記事は、Win32である理由、Windows Mobileの開発の冒険と呼ばれるが、実際には、私は最近、Windows Mobileの/のWindows XPの構造である何かを書きました我々はまた、自分の感情や経験のいくつかを持って、取得します。その後、私はこれらの事を無駄に行かせ、または来書き留めることはできない、と思いました。だから、自分が長い時間のために覚えている、だけでなく、あなたと共有しましょう。
今日の記事は、私が実装MSN Messengerのポップアップフォーム、MSN Messengerのポップアップウィンドウが再接触登録を導入したり、新しいメッセージを送信するときに、デスクトップポップアップウィンドウの右下隅。このような形状は非常に簡単です達成するために、Delphiは私がこのコンポーネントを書いたがために修飾されていない企業秘密として知られている何かの。C#がハハ、ちょうどリリースされ、無料になります!
実際には、単にWindows API関数を呼び出すことができます。このポップアップフォームを達成するために、AnimateWindow--我々はハハ、示唆して名前を付けることができます!これは、動的なウィンドウです!それでは、私たちはそれに関数定義の引数ならば、この関数を呼び出す方法を知っておく必要があります。私は例をあげてみよう、と簡単なコメントで結合されたので、私たちは私たちが望む機能を実現することができます。次のように:

使用してシステムを。

使用してSystem.Collections.Genericを。

使用してSystem.ComponentModelを。

使用してSystem.Dataを。

使用System.Drawingを。

使用してSystem.Textのを。

使用してのSystem.Windows.Formsを。

使用してSystem.Runtime.InteropServicesを。

 

名前空間FormHintTest 

{ 

 パブリック 部分 クラスFormHint:フォーム

 { 

 パブリックFormHint()

 { 

 のInitializeComponent(); 

 // 根据系统当前分辨率确定窗体的位置ヒント

 INT - X = Screen.PrimaryScreen.WorkingArea.Width この .Width - 1 

 INT Y = Screen.PrimaryScreen.WorkingArea.Height - この .Height - 1。; 

 この .location = 新しい新しい点(X、Y); 

 } 

 

 公共 ボイドポップアップ()

 { 

 // 動的効果でパブリック関数に実装API関数呼び出し

 (AnimateWindowをこの .handle、200は、(UINT)AnimateWindowFlags.AW_SLIDE | 
UINT)AnimateWindowFlags.AW_VER_NEGATIVE | 
UINT )AnimateWindowFlags.AW_ACTIVATE); 

 この.SHOW(); 

 } 

 

 

 [DLLIMPORT(" User32.dllの")] //WindowsのAPI函数AnimateWindow起動

 公共 のextern  静的 ブール AnimateWindowを(のIntPtr HWND、UINT dwTime、UINT dwFlagsパラメータ)。

 

 パブリック 列挙 AnimateWindowFlags:UINT  // AnimateWindow的dwFlagsパラメータ参数定义

 { 

 AW_HOR_POSITIVE = 0x00000001に

 AW_HOR_NEGATIVE = 0x00000002 

 AW_VER_POSITIVE = 0x00000004 

 AW_VER_NEGATIVE = 0x00000008 

 AW_CENTER = 0x00000010 

 AW_HIDE =0x00010000 

 AW_ACTIVATE = 0x00020000 

 AW_SLIDE = 0x00040000 

 AW_BLEND = 0x00080000 

 } 

 

 } 

}
コードの表示

 

おすすめ

転載: www.cnblogs.com/blogpro/p/11457051.html