ش | ی | د | س | چ | پ | ج |
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Const SWP_FRAMECHANGED=&H20
Applies new frame styles set using the SetWindowLong function. Sends a WM_NCCALCSIZE message to the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE is sent only when the window's size is being changed.
اعمال سبک یا استایل های قاب و چهارچوب جدید که با استفاده از تابع SetWindowLong تنظیم میشود .ارسال پیام WM_NCCALCSIZE به پنجره حتی اگر سایز پنجره تغییر نکند. اگر این flag مشخص نشود WM_NCCALCSIZE فقط زمانی ارسال می شود که سایز پنجره تغییر داده شود.
پس زمانیکه بخواهید از پیام WM_NCCALCSIZE برای محاسبه طول و عرض یا مختصات پنجره ای استفاده کنید در صورتیکه پنجره سایزش تغییر نمی کند از تابع SetWindowLong و استایل SWP_FRAMECHANGED استفاده می کنید که هگزار دسیمال آن 20 است و دسیمال برابر 14 ( 20 تقسیم بر 16 خارج تقسیم و مانده کنار هم قرار می گیرند اگر مانده بیشتر و خود 10 شد به ترتیب A تا F جایگزین مانده میشود )
Type RECT
Left As Long
Right As Long
Top As Long
Bottom As Long
End Type
Type WINDOWPOS
hwnd As Long 'LongPtr ( 64 bit )
hWndInsertAfter As Long 'LongPtr ( 64 bit )
x As Long ' Left
y As Long ' Top
cx As Long ' Width in pixle
cy As Long ' Height in pixle
flags As Long
End Type
Type NCCALCSIZE_PARAMS
rgrc(3) As RECT
lppos As WINDOWPOS
END TYPE
the first rectangle contains the new coordinates of a window that has been moved or resized, that is, it is the proposed new window coordinates. The second contains the coordinates of the window before it was moved or resized. The third contains the coordinates of the window's client area before the window was moved or resized
در آرایه rgrc : ( حاوی اطلاعات زیر است )
اولین مستطیل حاوی مختصات پنجره جدید است که تغییر سایز یا جابجا شده ( Move ) ... مختصات جدید است
دومین مختصات پنجره قبل از تغییر سایز یا جابجایی است.
سومین حاوی مختصات پنجره ناحیه Client قبل از تغییر سایز یا جابجا شدن است.
در پیام WM_NCCALCSIZE اگر wParam فالز باشد lParam به ساختار RECT اشاره می کند و اگر True باشد به ساختار NCCALCSIZE_PARAMS.
Dim ncc AS NCCALCSIZE_PARAMS
Debug.Print wParam
CopyMemory ncc,lParam,ByVal Len(ncc)
Debug.Print ncc.rgrc(1).Right
CopyMemory lParam,ncc,ByVal Len(ncc)
پیام WM_SETFOCUS :
پس از اینکه فوکوس صفحه کلید را به دست آورد ، این پیام به پنجره ارسال میشود و wParam حاوی هندلی به پنجره ای است که فوکوس کیبورد را از دست داده ( با Tab یا ماوس به کنترل دیگری می روید ) و lParam هم صفر است .
می توانید در این پیام با تابع SetFocus ، فوکِس یا فوکوس را به کنترل مورد نظر برده تا WM_NCCALCSIZE ارسال شود و بتوانید مختصات پنجره مورد نظر را بگیرید.
تنظیم حاشیه در کنترل EDIT
: wparam
EC_LEFTMARGIN=&H1
EC_RIGHTMARGIN=&H2
: Msg
EM_SETMARGINS=211 '&HD3
دسیمال 211 تبدیل به هگزا - ->> عدد دسیمال تقسیم بر 16 میشود 13 معادل آن D و حاصل تفریق عدد211 و حاصلضرب 13 در 16 میشود 3 .... نهایتا از کنار هم گذاشتن آنها D3 بدست می آید ، در تابع زیر پارامتر هندل Et ذکر شده و منظور گرفتن هندل Edit است که با FindWindowEx انجام شده.
SendMessageA Et, 211, &H1, ByVal 25
SendMessageA Et, 211, &H2, ByVal 65536 * 50
تست شده طبق شکل زیر که تمام تکست داخل EDIT BOX با Ctrl+A انتخاب شده در نتیجه مارجین یا حاشیه مشخص است . البته باید دید تغییر فونت چه تاثیری خواهد گذاشت .
SWP_FRAMECHANGED 0x0020
Applies new frame styles set using the SetWindowLongfunction. Sends a WM_NCCALCSIZE message to the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZEis sent only when the window's size is being changed.
Fully redraw the window in its new
.position
SWP_FRAMECHANGED Sends a WM_NCCALCSIZEmessage to the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE is sent only when the window's size is being changed.
ارسال آیکون به باتن با پیام BM_SETIMAGE و تابع ارسال پیام به دیالوگ باکس و آیدی باتن که یک است. image_icon=1 , un1=1