導入された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 } } }