HWND CreateWindowExA
dwExStyle
lpClassName
lpWindowName
dwStyle
X
Y
nWidth
nHeight
hWndParent
hMenu
hInstance
lpParam
WS_EX_WINDOWEDGE=&H100
WS_EX_TOOLWINDOW=&H80
: Window Styles
WS_BORDER=&H800000
WS_CHILD=&H40000000
WS_POPUP=&H80000000
: Note
The windows is a pop-up window. This style cannot'be used with the WS_CHILDstyle
Case WM_CREATE/SHOWWINDOW
: case WM_CREATE
"hButton = CreateWindow("button","Label,
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
100, 200,
50 ,20,
hWnd,(HMENU) BUTTON_ID,
0,0,
if message=WM_CTLCOLOREDIT Then
HDC hdcChild=(HDC)wParam
variable for text color
((SetTextColor hdcChild,RGB(0,0,0
End if
(OnSetFocus(pOldWnd
(m_BackColor=RGB(255,255,0
Type CHANGENOTIFY
dwChangeType : CN_TEXTCHANGED
End Type
wParam
.This parameter is not used; it must be zero
case WM_CTLCOLORSTATIC
HDC hdcStatic = (HDC) wParam
(SetTextColor hdcStatic,RGB(0,0,255
(SetBkColor hdcStatic,RGB(250,250,0
((Function=CreateSolidBrush(RGB(250,250,0
case WM_CTLCOLOREDIT
HDC hdcStatic = (HDC) wParam
(SetTextColor hdcStatic,RGB(0,0,255
(SetBkColor hdcStatic,RGB(0,230,0
((Function=CreateSolidBrush(RGB(0,230,0
)
nidEvent می تواند WM_MOUSELEAVE باشد یعنی SetTimer در MOUSEMOVE تنظیم شود اگر Msg گرفته شده در TIMEPROC برابر MOUSELEAVE شد کاری انجام شده و بعد KillTimer اعمال گردد.
trackmouseevent :Posts messages when the mouse pointer leaves window or hovers over a window for a specified amount of time
پست کردن پیام هایی به پرنت ویندو وقتی نشانگر ماوس پنجره را ترک کرده ( هندل به ویندو ) یا روی یک پنجره برای مدتی از زمان بصورت شناور است ( می پلکد- یا روی آن محدوده).
API Declarations'
Public Type udtTrackMouseEvent
cbSize As Long
dwFlags As Long
hwndTrack As Long
dwHoverTime As Long
End Type
Public Declare Function TrackMouseEvent Lib "comctl32" Alias "_TrackMouseEvent" (lpEventTrack As udtTrackMouseEvent) As Long
getdlgctrlid : Retrieves the identifier of the
.specified control
بر گرفته از فروم خارجی ( بررسی موقعیت ماوس در باتن موردنظر )
1-find your button rectangle
GetWindowRect BtnHwnd,BtnRect
WM_SETCURSOR
. Do not change anything, just detect if wParam is HWND of your button. If it is, then set a #define WM_SETCURSOR 0x0020
تست شده
The WM_PAINT message is sent when the system or another application makes a request to paint a portion
of an application's window
The PAINTSTRUCT
structure contains information that can be used to paint the.client area of a window
حاوی اطلاعاتی برای استفاده در نقاشی ناحیه ی Client پنجره.
Case WM_PAINT
Dim ps As PAINTSTRUCT
( hdc = BeginPaint(lhwnd, ps
Dim rrc As RECT
GetClientRect lhwnd, rrc
(( FillRect hdc, rrc, CreateSolidBrush(RGB(100, 0, 100
SetTextColor hdc, vbRed
TextOutA hdc, 10, 10, "sa", 2
EndPaint lhwnd, ps
ReleaseDC lhwnd, hdc
البته غیر از پیام زیر میشود با پیام WM_CTLCOLORBTN هم رنگ باتن را تغییر داد که lParam میشود هندل باتن و wParam هم هندل DC میشود
Case WM_DRAWITEM
Dim pDIS As DRAWITEMSTRUCT
Dim state
(CopyMemory pDIS, ByVal lParam, Len(pDIS
( hdc = GetDC(pDIS.hdc
Dim p As RECT
p = pDIS.rcItem
state = pDIS.itemState
GetClientRect can, p
If pDIS.CtlID = 2 Then
If state = 272 Then
RoundRect hdc, p.Left, p.Top, p.Right, p.Bottom, 16, 16
ReleaseDC can, hdc
Else
RoundRect hdc, p.Left, p.Top, p.Right, p.Bottom, 4, 4
ReleaseDC can, hdc
End If
End If
(CopyMemory ByVal lParam, pDIS,Len(pDIS
Custom Draw Item State '
CDIS_SELECTED =&H1
CDIS_GRAYED =&H2 CDIS_DISABLED =&H4 CDIS_CHECKED = &H8 CDIS_FOCUS = &H10 CDIS_DEFAULT =&H20 CDIS_HOT = &H40 CDIS_MARKED =&H80 CDIS_INDETERMINATE =&H100
CDIS_HOT : ("The item is currently under the pointer
("hot
برگرفته از فروم خارجی
X,y طبق POINTAPI در lParam
(x = CLng(lParam) And &HFFFF& 'LoWord(lParam
(y = CLng(lParam) \ 65535 ' LoWord(lParam
در پیام WM_NCPAINT
Private tBtn As RECT
Dim i As Integer
Dim C As Integer
C=10
Gap=0
For i=0 To 2
GetClientRect lhwnd,tBtn
With tBtn
(Bottom=GetSystemMetrics(SM_CYCAPTION.
Left=.Right-c-Gap.
Right=.Right+18.
Top=.Top+4.
End With
C=C+28
Gap=2
Next
کپی شده از فروم های خارجی چنانچه در MsgBox تست شود تصویر گذاشته خواهد شد
Public Const SM_CXSIZE = 30
Public Const SM_CYSIZE = 31
Public Const SM_CXFRAME = 32
Public Const SM_CYFRAME = 33
DFC_CAPTION = 1 DFC_MENU = 2 DFC_SCROLL = 3 DFC_BUTTON = 4 DFCS_CAPTIONCLOSE =&H0 DFCS_CAPTIONMIN =&H1 DFCS_CAPTIONMAX = &H2 DFCS_CAPTIONRESTORE =&H3 DFCS_CAPTIONHELP =&H4 DFCS_MENUARROW =&H0 DFCS_MENUCHECK =&H1 DFCS_MENUBULLET =&H2 DFCS_SCROLLUP = &H0 DFCS_SCROLLDOWN =&H1 DFCS_SCROLLLEFT =&H2 DFCS_SCROLLRIGHT =&H3 DFCS_SCROLLCOMBOBOX =&H5 DFCS_BUTTONCHECK =&H0 DFCS_BUTTONRADIO =&H4 DFCS_BUTTON3STATE =&H8 DFCS_BUTTONPUSH =&H10
DFCS_PUSHED =&H200 DFCS_CHECKE =&H400
R=ClientRect(rgn=CreateRoundRectRgn(R.Left, R.Top, R.Right(R.Bottom, 20, 20,InflateRect r, - 4, - 4SetWindowRgn Handle,rgn,True Invalidate
WM_NCCALCSIZE
message. But don't do this unless you plan to do all of the non-client drawing as well by handling WM_NCPAINT
اعضاء این ساختار : Member
wparam باید صفر باشد و lparam هم یک نشانگر به ساختار TITLEBARINFOEX ، قبل از ارسال از طریق پیام باید عضو cbSize آن تنظیم شود!
Dim info As INFOTITLEEX
(info.cbSize=Len(info
,SendMessage(hwnd, WM_GETTITLEBARINFOEX,0
(info
if (info.rgstate(5) & (STATE_SYSTEM_INVISIBLE Or STATE_SYSTEM_OFFSCREEN Or
((STATE_SYSTEM_UNAVAILABLE
return FALSE
ppt->x = info.rgrect(5).left + (info.rgrect(5).right - info.rgrect(5).left) / 2
ppt->y= info.rgrect(5).top + (info.rgrect(5).bottom - info.rgrect(5).top) / 2
,,SendMessage(g_hwndTT, TTM_TRACKPOSITION, 0
(MAKELPARAM(pt.x, pt.y
TTM_TRACKPOSITION 'Sets the position of a tracking tooltip.
TTM_TRACKACTIVATE 'Activates or deactivates a
.tracking tooltip
.structure. All other members are ignored
TTM_SETDELAYTIME=&H403
TTM_TRACKACTIVATE=&H411 TTM_TRACKPOSITION=&H412
TTM_SETTIPBKCOLOR=&H413
TTM_SETTIPTEXTCOLOR=&H414
Public Function LoWord(dwValue As Long) As Integer
CopyMemory LoWord, dwValue, 2
End Function
Public Function MAKELONG(wLow As Long, wHigh As
Long) As Long
*MAKELONG = LoWord(wLow) Or (&H10000
((LoWord(wHigh
Public Function MAKELPARAM(wLow As Long, wHigh As Long) As Long 'Combines two integers into a long integer
BOOL DrawFrameControl( HDC , LPRECT , UINT , UINT );
:Arguman 3
DFC_BUTTON Standard button
DFC_CAPTION Title bar
DFC_MENUMenu bar
DFC_POPUPMENUPopup menu item.
DFC_SCROLL
If Type Is Button , Draw Frame Control State As Follows
DFCS_BUTTON3STATE Three-state button
DFCS_BUTTONCHECK Check box
DFCS_BUTTONPUSH Push button
DFCS_BUTTONRADIO Radio button
If uType is DFC_CAPTION, uState can be one of the
.following values
hRgnBlur
The region within the client area where the blur behind will be applied. A NULL value will apply the blur behind the entire client area
Gdi32
enum { CBS_NORMAL = 1, CBS_HOT = 2, CBS_PUSHED = 3, CBS_DISABLED = 4 };
using System;namespace Microsoft.Samples{public class Constants{public const int AUTOSUGGEST = 0x10000000,AUTOSUGGEST_OFF = 0x20000000,AUTOAPPEND = 0x40000000,AUTOAPPEND_OFF = (unchecked((int)0x80000000));public const int ARW_BOTTOMLEFT = 0x0000,ARW_BOTTOMRIGHT = 0x0001,ARW_TOPLEFT = 0x0002,ARW_LEFT = 0x0000,ARW_TOPRIGHT = 0x0003,ARW_RIGHT = 0x0000,ARW_HIDE = 0x0008,ARW_UP = 0x0004,ARW_DOWN = 0x0004,ACM_OPENA = (0x0400+100),ACM_OPENW = (0x0400+103),ADVF_NODATA = 1,ADVF_ONLYONCE = 2,ADVF_PRIMEFIRST = 4; public const int BCM_GETIDEALSIZE = 0x1601, BI_RGB = 0, BS_PATTERN = 3, BITSPIXEL = 12, BDR_RAISEDOUTER = 0x0001, BDR_SUNKENOUTER = 0x0002, BDR_RAISEDINNER = 0x0004, BDR_SUNKENINNER = 0x0008, BDR_RAISED = 0x0005, BDR_SUNKEN = 0x000a, BF_LEFT = 0x0001, BF_TOP = 0x0002, BF_RIGHT = 0x0004, BF_BOTTOM = 0x0008, BF_ADJUST = 0x2000, BF_FLAT = 0x4000, BF_MIDDLE = 0x0800, BFFM_INITIALIZED = 1, BFFM_SELCHANGED = 2, BFFM_SETSELECTION = 0x400+103, BFFM_ENABLEOK = 0x400+101, BS_PUSHBUTTON = 0x00000000, BS_DEFPUSHBUTTON = 0x00000001, BS_MULTILINE = 0x00002000, BS_PUSHLIKE = 0x00001000, BS_OWNERDRAW = 0x0000000B, BS_RADIOBUTTON = 0x00000004, BS_3STATE = 0x00000005, BS_GROUPBOX = 0x00000007, BS_LEFT = 0x00000100, BS_RIGHT = 0x00000200, BS_CENTER = 0x00000300, BS_TOP = 0x00000400, BS_BOTTOM = 0x00000800, BS_VCENTER = 0x00000C00, BS_RIGHTBUTTON = 0x00000020, BN_CLICKED = 0, BM_SETCHECK = 0x00F1, BM_SETSTATE = 0x00F3, BM_CLICK = 0x00F5; public const int CDERR_DIALOGFAILURE = 0xFFFF, CDERR_STRUCTSIZE = 0x0001, CDERR_INITIALIZATION = 0x0002, CDERR_NOTEMPLATE = 0x0003, CDERR_NOHINSTANCE = 0x0004, CDERR_LOADSTRFAILURE = 0x0005, CDERR_FINDRESFAILURE = 0x0006, CDERR_LOADRESFAILURE = 0x0007, CDERR_LOCKRESFAILURE = 0x0008, CDERR_MEMALLOCFAILURE = 0x0009, CDERR_MEMLOCKFAILURE = 0x000A, CDERR_NOHOOK = 0x000B, CDERR_REGISTERMSGFAIL = 0x000C, CFERR_NOFONTS = 0x2001, CFERR_MAXLESSTHANMIN = 0x2002, CC_RGBINIT = 0x00000001, CC_FULLOPEN = 0x00000002, CC_PREVENTFULLOPEN = 0x00000004, CC_SHOWHELP = 0x00000008, CC_ENABLEHOOK = 0x00000010, CC_SOLIDCOLOR = 0x00000080, CC_ANYCOLOR = 0x00000100, CF_SCREENFONTS = 0x00000001, CF_SHOWHELP = 0x00000004, CF_ENABLEHOOK = 0x00000008, CF_INITTOLOGFONTSTRUCT = 0x00000040, CF_EFFECTS = 0x00000100, CF_APPLY = 0x00000200, CF_SCRIPTSONLY = 0x00000400, CF_NOVECTORFONTS = 0x00000800, CF_NOSIMULATIONS = 0x00001000, CF_LIMITSIZE = 0x00002000, CF_FIXEDPITCHONLY = 0x00004000, CF_FORCEFONTEXIST = 0x00010000, CF_TTONLY = 0x00040000, CF_SELECTSCRIPT = 0x00400000, CF_NOVERTFONTS = 0x01000000, CP_WINANSI = 1004; public const int cmb4 = 0x0473, CS_DBLCLKS = 0x0008, CS_DROPSHADOW = 0x00020000, CF_TEXT = 1, CF_BITMAP = 2, CF_METAFILEPICT = 3, CF_SYLK = 4, CF_DIF = 5, CF_TIFF = 6, CF_OEMTEXT = 7, CF_DIB = 8, CF_PALETTE = 9, CF_PENDATA = 10, CF_RIFF = 11, CF_WAVE = 12, CF_UNICODETEXT = 13, CF_ENHMETAFILE = 14, CF_HDROP = 15, CF_LOCALE = 16, CLSCTX_INPROC_SERVER = 0x1, CLSCTX_LOCAL_SERVER = 0x4, CW_USEDEFAULT = (unchecked((int)0x80000000)), CWP_SKIPINVISIBLE = 0x0001, COLOR_WINDOW = 5, CB_ERR = (-1), CBN_SELCHANGE = 1, CBN_DBLCLK = 2, CBN_EDITCHANGE = 5, CBN_EDITUPDATE = 6, CBN_DROPDOWN = 7, CBN_CLOSEUP = 8, CBN_SELENDOK = 9, CBS_SIMPLE = 0x0001, CBS_DROPDOWN = 0x0002, CBS_DROPDOWNLIST = 0x0003, CBS_OWNERDRAWFIXED = 0x0010, CBS_OWNERDRAWVARIABLE = 0x0020, CBS_AUTOHSCROLL = 0x0040, CBS_HASSTRINGS = 0x0200, CBS_NOINTEGRALHEIGHT = 0x0400, CB_GETEDITSEL = 0x0140, CB_LIMITTEXT = 0x0141, CB_SETEDITSEL = 0x0142, CB_ADDSTRING = 0x0143, CB_DELETESTRING = 0x0144, CB_GETCURSEL = 0x0147, CB_INSERTSTRING = 0x014A, CB_RESETCONTENT = 0x014B, CB_FINDSTRING = 0x014C, CB_SETCURSEL = 0x014E, CB_SHOWDROPDOWN = 0x014F, CB_GETITEMDATA = 0x0150, CB_SETITEMHEIGHT = 0x0153, CB_GETITEMHEIGHT = 0x0154, CB_GETDROPPEDSTATE = 0x0157, CB_FINDSTRINGEXACT = 0x0158, CB_SETDROPPEDWIDTH = 0x0160, CDRF_DODEFAULT = 0x00000000, CDRF_NEWFONT = 0x00000002, CDRF_SKIPDEFAULT = 0x00000004, CDRF_NOTIFYPOSTPAINT = 0x00000010, CDRF_NOTIFYITEMDRAW = 0x00000020, CDRF_NOTIFYSUBITEMDRAW = CDRF_NOTIFYITEMDRAW, CDDS_PREPAINT = 0x00000001, CDDS_POSTPAINT = 0x00000002, CDDS_ITEM = 0x00010000, CDDS_SUBITEM = 0x00020000, CDDS_ITEMPREPAINT = (0x00010000|0x00000001), CDDS_ITEMPOSTPAINT = (0x00010000|0x00000002), CDIS_SELECTED = 0x0001, CDIS_GRAYED = 0x0002, CDIS_DISABLED = 0x0004, CDIS_CHECKED = 0x0008, CDIS_FOCUS = 0x0010, CDIS_DEFAULT = 0x0020, CDIS_HOT = 0x0040, CDIS_MARKED = 0x0080, CDIS_INDETERMINATE = 0x0100, CDIS_SHOWKEYBOARDCUES = 0x0200, CLR_NONE = unchecked((int)0xFFFFFFFF), CLR_DEFAULT = unchecked((int)0xFF000000), CCS_NORESIZE = 0x00000004, CCS_NOPARENTALIGN = 0x00000008, CCS_NODIVIDER = 0x00000040, CBEM_INSERTITEMA = (0x0400+1), CBEM_GETITEMA = (0x0400+4), CBEM_SETITEMA = (0x0400+5), CBEM_INSERTITEMW = (0x0400+11), CBEM_SETITEMW = (0x0400+12), CBEM_GETITEMW = (0x0400+13), CBEN_ENDEDITA = ((0-800)-5), CBEN_ENDEDITW = ((0-800)-6), CONNECT_E_NOCONNECTION = unchecked((int)0x80040200), CONNECT_E_CANNOTCONNECT = unchecked((int)0x80040202), CTRLINFO_EATS_RETURN = 1, CTRLINFO_EATS_ESCAPE = 2, CSIDL_DESKTOP = 0x0000, // <desktop> CSIDL_INTERNET = 0x0001, // Internet Explorer (icon on desktop) CSIDL_PROGRAMS = 0x0002, // Start Menu\Programs CSIDL_PERSONAL = 0x0005, // My Documents CSIDL_FAVORITES = 0x0006, // <user name>\Favorites CSIDL_STARTUP = 0x0007, // Start Menu\Programs\Startup CSIDL_RECENT = 0x0008, // <user name>\Recent CSIDL_SENDTO = 0x0009, // <user name>\SendTo CSIDL_STARTMENU = 0x000b, // <user name>\Start Menu CSIDL_DESKTOPDIRECTORY = 0x0010, // <user name>\Desktop CSIDL_TEMPLATES = 0x0015, CSIDL_APPDATA = 0x001a, // <user name>\Application Data CSIDL_LOCAL_APPDATA = 0x001c, // <user name>\Local Settings\Applicaiton Data (non roaming) CSIDL_INTERNET_CACHE = 0x0020, CSIDL_COOKIES = 0x0021, CSIDL_HISTORY = 0x0022, CSIDL_COMMON_APPDATA = 0x0023, // All Users\Application Data CSIDL_SYSTEM = 0x0025, // GetSystemDirectory() CSIDL_PROGRAM_FILES = 0x0026, // C:\Program Files CSIDL_PROGRAM_FILES_COMMON = 0x002b; // C:\Program Files\Common public const int DUPLICATE = 0x06, DISPID_UNKNOWN = (-1), DISPID_PROPERTYPUT = (-3), DISPATCH_METHOD = 0x1, DISPATCH_PROPERTYGET = 0x2, DISPATCH_PROPERTYPUT = 0x4, DV_E_DVASPECT = unchecked((int)0x8004006B), DISP_E_MEMBERNOTFOUND = unchecked((int)0x80020003), DISP_E_PARAMNOTFOUND = unchecked((int)0x80020004), DISP_E_EXCEPTION = unchecked((int)0x80020009), DEFAULT_GUI_FONT = 17, DIB_RGB_COLORS = 0, DRAGDROP_E_NOTREGISTERED = unchecked((int)0x80040100), DRAGDROP_E_ALREADYREGISTERED = unchecked((int)0x80040101), DUPLICATE_SAME_ACCESS = 0x00000002, DFC_CAPTION = 1, DFC_MENU = 2, DFC_SCROLL = 3, DFC_BUTTON = 4, DFCS_CAPTIONCLOSE = 0x0000, DFCS_CAPTIONMIN = 0x0001, DFCS_CAPTIONMAX = 0x0002, DFCS_CAPTIONRESTORE = 0x0003, DFCS_CAPTIONHELP = 0x0004, DFCS_MENUARROW = 0x0000, DFCS_MENUCHECK = 0x0001, DFCS_MENUBULLET = 0x0002, DFCS_SCROLLUP = 0x0000, DFCS_SCROLLDOWN = 0x0001, DFCS_SCROLLLEFT = 0x0002, DFCS_SCROLLRIGHT = 0x0003, DFCS_SCROLLCOMBOBOX = 0x0005, DFCS_BUTTONCHECK = 0x0000, DFCS_BUTTONRADIO = 0x0004, DFCS_BUTTON3STATE = 0x0008, DFCS_BUTTONPUSH = 0x0010, DFCS_INACTIVE = 0x0100, DFCS_PUSHED = 0x0200, DFCS_CHECKED = 0x0400, DFCS_FLAT = 0x4000, DT_LEFT = 0x00000000, DT_RIGHT = 0x00000002, DT_VCENTER = 0x00000004, DT_SINGLELINE = 0x00000020, DT_NOCLIP = 0x00000100, DT_CALCRECT = 0x00000400, DT_NOPREFIX = 0x00000800, DT_EDITCONTROL = 0x00002000, DT_EXPANDTABS = 0x00000040, DT_END_ELLIPSIS = 0x00008000, DT_RTLREADING = 0x00020000, DT_WORDBREAK = 0x00000010, DCX_WINDOW = 0x00000001, DCX_CACHE = 0x00000002, DCX_LOCKWINDOWUPDATE = 0x00000400, DI_NORMAL = 0x0003, DLGC_WANTARROWS = 0x0001,
Timeinterval را در رویداد Open فرم می توانید روی 1000 میلی تنظیم کنید .