windows³ÌÐòÉè¼ÆµÚËÄÕÂ±Ê¼Ç ×ªÔØ
Êä³öÎÄ×Ö
WM_PAINTÏûÏ¢£º
ÔÚ·¢ÉúÏÂÃæ¼¸ÖÖʼþ֮һʱ£¬´°¿ÚÏûÏ¢´¦Àí³ÌÐò»á½ÓÊÕµ½Ò»¸öWM_PAINTÏûÏ¢£º
ÔÚʹÓÃÕßÒÆ¶¯´°¿Ú»òÏÔʾ´°¿Úʱ£¬´°¿ÚÖÐÏÈǰ±»Òþ²ØµÄÇøÓòÖØÐ¿ɼû¡£
ʹÓÃÕ߸ı䴰¿ÚµÄ´óС£¨Èç¹û´°¿ÚÀà±ðÑùʽÓÐ×ÅCS_HREDRAWºÍCS_VREDRAWλÆì±êµÄÉ趨£©¡£
³ÌÐòʹÓÃScrollWindow»òScrollDCº¯Êý¹ö¶¯ÏÔÊ¾ÇøÓòµÄÒ»²¿·Ö¡£
³ÌÐòʹÓÃInvalidateRect»òInvalidateRgnº¯Êý¿ÌÒâ²úÉúWM_PAINTÏûÏ¢¡£
ÔÚÒÔÏÂÇé¿öÏ£¬Windows¿ÉÄÜ·¢ËÍWM_PAINTÏûÏ¢£º
Windows²Á³ý¸²¸ÇÁ˲¿·Ö´°¿ÚµÄ¶Ô»°¿ò»òÏûÏ¢¿ò¡£
²Ëµ¥ÏÂÀ³öÀ´£¬È»ºó±»ÊÍ·Å¡£
ÏÔʾ¹¤¾ßÌáʾÏûÏ¢¡£
ÔÚijЩÇé¿öÏ£¬Windows×ÜÊDZ£´æËüËù¸²¸ÇµÄÏÔÊ¾ÇøÓò£¬È»ºó»Ö¸´Ëü¡£ÕâЩÇé¿öÊÇ£º
Êó±ê¹â±ê´©Ô½ÏÔÊ¾ÇøÓò¡£
ͼ±êÍϹýÏÔÊ¾ÇøÓò¡£
ÓÐЧ¾ØÐκÍÎÞЧ¾ØÐÎ
WindowsÄÚ²¿ÎªÃ¿¸ö´°¿Ú±£´æÒ»¸ö¡¸»æÍ¼ÐÅÏ¢½á¹¹¡¹£¬Õâ¸ö½á¹¹°üº¬Á˰üΧÎÞÐ§ÇøÓòµÄ×îС¾ØÐεÄ×ø±êÒÔ¼°ÆäËüÐÅÏ¢£¬Õâ¸ö¾ØÐξͽÐ×ö¡¸ÎÞЧ¾ØÐΡ¹.ÏÔÊ¾ÇøÓòÄÚÎÞÐ§ÇøÓòµÄ´æÔÚ»áÈÃWindows½«Ò»¸öWM_PAINTÏûÏ¢·ÅÔÚÓ¦ÓóÌÐòµÄÏûÏ¢¶ÓÁÐÖС£
´°¿ÚÏûÏ¢´¦Àí³ÌÐò¿ÉÒÔͨ¹ýºô½ÐInvalidateRectʹÏÔÊ¾ÇøÓòÄڵľØÐÎÎÞЧʹµÃ´¥·¢WM_PAINTÏûÏ¢¡£Èç¹ûÏûÏ¢¶ÓÁÐÖÐÒѾ°üº¬Ò»¸öWM_PAINTÏûÏ¢£¬Windows½«¼ÆËã³öеÄÎÞЧ¾ØÐΡ£·ñÔò£¬Ëü½«Ò»¸öеÄWM_PAINTÏûÏ¢·ÅÈëÏûÏ¢¶ÓÁÐÖС£
ÔÚ´¦ÀíWM_PAINTÏûÏ¢´¦ÀíÆÚ¼ä£¬´°¿ÚÏûÏ¢´¦Àí³ÌÐòÔÚºô½ÐÁËBeginPaintÖ®ºó£¬Õû¸öÏÔÊ¾ÇøÓò¼´±äΪÓÐЧ¡£³ÌÐòÒ²¿ÉÒÔͨ¹ýºô½ÐValidateRectº¯ÊýʹÏÔÊ¾ÇøÓòÄÚµÄÈÎÒâ¾ØÐÎÇøÓò±äΪÓÐЧ¡£Èç¹ûÕâºô½Ð¾ßÓÐÁîÕû¸öÎÞÐ§ÇøÓò±äΪÓÐЧµÄЧ¹û£¬ÔòĿǰ¶ÓÁÐÖеÄÈκÎWM_PAINTÏûÏ¢¶¼½«±»É¾³ý¡£
È¡µÃÉ豸ÄÚÈݾä±ú£º·½·¨Ò»
PAINTSTRUCT ps ;
HDC hdc ;
......
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
ʹÓÃGDIº¯Êý,ÈçTextOut
EndPaint (hwnd, &ps) ;
Èç¹ûÁ½¸öBeginPaintºÍEndPaintºô½ÐÖ®¼äÖÐûÓÐÈκÎÐðÊö£¬½ö½öʹÏÈǰÎÞÐ§ÇøÓò±äΪÓÐЧ.Èç¹ûÔÚWM_PAINTÖв»ºô½ÐBeginPaintºÍEndPaint£¨»òÕßValidateRect£©£¬ÔòWindows²»»áʹ¸ÃÇøÓò±äΪÓÐЧ¡£Ïà·´£¬Windows½«·¢ËÍÁíÒ»¸öWM_PAINTÏûÏ¢£¬ÇÒÒ»Ö±·¢ËÍÏÂÈ¥¡£
È¡µÃÉ豸ÄÚÈݾä±ú£º·½·¨¶þ
hdc = GetDC (hwnd) ;
ʹÓÃGDIº¯Êý
ReleaseDC (hwnd, hdc) ;
Óë´ÓBeginPaint´«»ØÉ豸ÄÚÈݾä±ú²»Í¬£¬GetDC´«»ØµÄÉ豸ÄÚÈݾä±ú¾ßÓÐÒ»¸ö¼ôÈ¡¾ØÐΣ¬ËüµÈÓÚÕû¸öÏÔÊ¾ÇøÓò¡£¿ÉÒÔÔÚÏÔÊ¾ÇøÓòµÄijһ²¿·Ö»æÍ¼£¬¶ø²»Ö»ÊÇÔÚÎÞЧ¾ØÐÎÉÏ»æÍ¼£¨Èç¹ûȷʵ´æÔÚÎÞЧ¾ØÐΣ©¡£ÓëBeginPaint²»Í¬£¬GetDC²»»áʹÈκÎÎÞÐ§ÇøÓò±äΪÓÐЧ¡£
ºóÃæ²¿·ÖÄÚÈݱȽ϶à,¿´ÍøÉÏÓÐһƪдµÄ²»´í,ËùÒԾͲο¼¹ýÀ´ÁË: ) (͵ÀÁµÄ½è¿Ú)
TextOutÊÇÓÃÓÚÏÔʾÎı¾µÄ×î³£ÓõÄGDIº¯Êý¡£¸Ãº¯ÊýµÄÊ׸ö²ÎÊý¾ÍÊÇÉ豸ÃèÊö±í¾ä±ú¡£É豸ÃèÊö±íµÄÊôÐÔ¿ØÖÆÏÔʾÎı¾µÄÌØÕ÷£¬È±Ê¡¶¨ÒåÎı¾×ÖÌåΪºÚÉ«£¬Îı¾±³¾°Îª°×É«¡£É豸ÃèÊö±íµÄÎı¾±³¾°ÑÕÉ«ºÍ¶¨Òå´°¿ÚÀàʱÉèÖõı³¾°ÑÕÉ«ÊǶÀÁ¢µÄÁ½¸ö²¿·Ö¡£´°¿ÚÀà±³¾°ÑÕÉ«ÔÚ²Á³ý¿Í»§ÇøÊ±Ê¹Óã¬Îı¾±³¾°ÑÕÉ«ÔÚ¿Í»§Çøµ÷ÓÃGDIº¯Êý»æÖÆÐÂÄÚÈÝʱʹÓá£Ò»°ãĬÈϽ«Á½ÕßÉèÖÃÏàͬÑÕÉ«¡£xºÍy¶¨Òå¿Í»§ÇøÄÚ×Ö·û´®µÄ¿ªÊ¼×ø±ê¡£ÔÚĬÈÏÉ豸ÃèÊö±íÖУ¬Ôµã£¨0£¬0£©×ø±êÉèΪ¿Í»§ÇøµÄ×óÉϽǡ£ÆäʵÎÒÃÇÔÚGDIº¯ÊýÖÐʹÓõÄ×ø±ê¶¼ÊÇ¡°Âß¼×ø±ê¡±£¬ËüÊÇÏÔʾÆ÷ÎïÀíÏóËØ×ø±êµÄÒ»ÖÖÓ³Éä¡£WindowsÖÐÓжàÖÖ×ø±ê¡°Ó³É䷽ʽ¡±¡£Ó³É䷽ʽÔÚÉ豸ÃèÊö±íÖж¨Ò壬ĬÈÏÓ³É䷽ʽÊÇMM_TEXT¡£ÔÚÕâÖÖÓ³É䷽ʽÏ£¬Âß¼µ¥Î»ºÍÎïÀíµ¥Î»Ïàͬ¡£
µ÷ÓÃTextOutÏÔʾÎı¾Ê±Ä¬ÈϲÉÓõÄ×ÖÌåÊÇϵͳ×ÖÌ壬ËüÊÇÒ»ÖÖ¡°µãÕó×ÖÌ塱¡£ÔçÆÚϵͳ×ÖÌå²ÉÓõȿí×ÖÌ壬ÏÖ¶¼²ÉÓñä¿í×ÖÌå¡£
GetTextMetricsº¯Êý·µ»ØÉ豸ÃèÊö±íÖÐÉ趨µÄ×ÖÌåÐÅÏ¢£¬·µ»ØÐÅÏ¢±£´æÔÚÒ»¸öTEXTMETRIC½á¹¹ÖС£ÕâÀïÎÒÃÇֻʹÓøýṹµÄǰ7¸ö²ÎÊý£º
typedef struct tagTEXTMETRIC {
LONG tmHeight;
LONG tmAscent;
LONG tmDescent;
LONG tmInternalLeading;
LONG tmExternalLeading;
LONG tmAveCharWidth;
LONG tmMaxCharWidth;
¡
} TEXTMETRIC, *PTEXTMETRIC;
tmHeightµÈÓÚtmAscentºÍtmDescentÖ®ºÍ¡£tmAscentºÍtmDescent·Ö±ð±íʾ»ùÏßÉÏ¡¢ÏµÄ×î´ó×ÝÏò¸ß¶È¡£¼ä¾à£¨Leading£©±íʾÁ½ÐÐÎı¾¼äÔ¤ÁôµÄ¿Õ¼ä¡£ÄÚ²¿¼ä¾à£¨tmInternalLeading£©°üº¬ÔÚtmAscentÖУ¬ËüÊÇÖØÒô·ûºÅ¾³£³öÏֵĵط½¡£Èç¹ûÄÚ²¿¼ä¾àÉèÖÃΪ0£¬¼ÓÖØÒôµÄ×Ö·û»áËõ¶Ì¸ß¶È£¬ÒÔÈÝÄÉÖØÒô·ûºÅ¡£Íⲿ¼ä¾à£¨tmExternalLeading£©ÊÇÎı¾ÐÐÖ®¼äµÄ¿Õ¼ä´óС£¬²»°üº¬ÔÚtmAscentÖС£tmAveCharWidth±íʾСд×Öĸ¼ÓȨƽ¾ù¿í¶È¡£tmMaxCharWidth±íʾ×ÖÌåÖÐ×î¿í×Ö·ûµÄ¿í¶È¡£
Ò»°ãÎÒÃÇÔÚµ÷ÓÃCreateWindowÖ®ºóµÄWM_CREATEÏûÏ¢´¦ÀíÖм´¿Éµ÷ÓÃGetTextMetricsº¯ÊýÀ´»ñµÃϵͳÐÅÏ¢¡£
GetSystemMetricsº¯Êý·µ»Ø¸÷ÖÖϵͳÐÅÏ¢£¨Í¼ÐÎÔªËØµÄ³¤¿í£©ºÍϵͳÅäÖÃÉ趨¡£ ¸Ãº¯ÊýÖ»ÓÐÒ»¸ö²ÎÊý£¬½Ð×ö¡°Ë÷Òý¡±¡£Í¨¹ýWindows¶¨ÒåµÄ75¸öÕûÊý±êʶ·û£¬GetSystemMetrics·µ»ØÒ»¸öÕûÊý£¬Õâ¸öÕûÊýͨ³£ÊǺ¯Êý²ÎÊýÖÐÖ¸¶¨Í¼ÐÎÔªËØµÄ´óС¡£º¯ÊýÔÐÍÈçÏ£º
int GetSystemMetrics(int nIndex);
TextOutµ÷ÓÃ֮ǰµ÷ÓÃSetTextAlign¿ÉÖ¸¶¨Îı¾ÅÅÁз½Ê½¡£Èç:
SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;
¶ÔÓÚ±ä¿í×ÖÌ壬TEXTMETRIC½á¹¹ÖеÄtmPitchAndFimaly²ÎÊý×îµÍλΪ1£¬¶ÔÓڵȿí×ÖÌ壬¸ÃλΪ0¡£´óд×Öĸ¿í¶È²î²»¶àÊÇСд×ÖĸµÄ1.5±¶¡£Òò´ËÈÝÄÉÒ»¸ö×Ö·ûµÄ»ù±¾¿í¶È¿ÉÒÔÕâÑù¼ÆË㣺
cxCaps = (tm.tmPitchAndFamily&1 ? 3:2)*cxChar/2;
¾¡¹ÜÎÒÃÇ¿ÉÒÔµ÷ÓÃGetClientRectÀ´·µ»Ø¿Í»§Çø´óС£¬µ«È·¶¨¿Í»§Çø´óС¸üºÃµÄ·½·¨ÊÇÔÚ´°¿Ú¹ý³ÌÖд¦ÀíWM_SIZEÏûÏ¢¡£¸ÃÏûÏ¢µÄlParam²ÎÊýµÍλ×Ö°üº¬¿Í»§Çø¿í¶È£¬¸ß×Öλ°üº¬¿Í»§Çø¸ß¶È¡£Ò»°ãWM_SIZEÏûÏ¢Ö®ºó»á²úÉúWM_PAINTÏûÏ¢¡£
Èç¹ûµ±Ç°¿Í»§ÇøÎÞ·¨ÈÝÄÉϼ´½«»æÖƵÄÈ«²¿ÄÚÈÝ£¬ÄÇôÎÒÃǾÍÐèҪʹÓá°¹ö¶¯Ìõ¡±¡£
¹ö¶¯Ìõ·Ö¡°Ë®Æ½¹ö¶¯Ìõ¡±ºÍ¡°´¹Ö±¹ö¶¯Ìõ¡±Á½ÖÖ¡£ÒªÔÚÓ¦ÓóÌÐò´°¿ÚÖаüº¬¹ö¶¯Ìõ£¬ÔÚCreateWindowº¯ÊýµÄ´°¿Ú·ç¸ñ²ÎÊýÖаüº¬WS_VSCROLL£¨´¹Ö±¹ö¶¯£©ºÍWS_HSCROLL£¨Ë®Æ½¹ö¶¯£©¼´¿É¡£¿Í»§Çø²»°üº¬¹ö¶¯ÌõËùÕ¼¾ÝµÄ¿Õ¼ä¡£
ÿ¸ö¹ö¶¯Ìõ¾ùÓÐÒ»¸öÏà¹ØµÄ¡°·¶Î§¡±£¨ÕâÊÇÒ»¶ÔÕûÊý£¬·Ö±ð´ú±í×îСֵºÍ×î´óÖµ£©ºÍ¡°Î»Öá±£¨ËüÊǹö¶¯¿òÔÚ´Ë·¶Î§ÄÚµÄλÖã©¡£¹ö¶¯Ìõ·¶Î§Ä¬ÈÏÊÇ´Ó0£¨¶¥²¿»ò×󲿣©¡«100£¨µ×²¿»òÓÒ²¿£©£¬¸Ä±ä·¶Î§Ò²ºÜÈÝÒ×,µ÷ÓÃSetScrollRange¼´¿É¡£º¯ÊýÔÐÍÈçÏ£º
BOOL SetScrollRange(
HWND hWnd,
int iBar,
int iMinPos,
int iMaxPos,
BOOL bRedraw
);
²ÎÊýiBarΪSB_VERT»òSB_HORZ,iMinºÍiMax·Ö±ðÖ¸·¶Î§×îСֵºÍ×î´óÖµ¡£bRedraw±íʾ·¶Î§É趨ºóÊÇ·ñÖØÐ»æÖƹö¶¯Ìõ¡£¾ÙÀýÈçÏ£º
SetScrollRange(hwnd,SB_VERT,0,NUMLINES ¨C 1,FALSE); //¸ù¾ÝÎı¾ÐÐÊý¾ö¶¨¹ö¶¯Ìõ·¶Î§
Èç¹ûµ÷ÓÃSetScrollRangeºó½«µ÷Óøıä¹ö¶¯ÌõλÖõĺ¯Êý£¬ÔòbRedrawÓ¦¸ÃÉèÖÃΪFALSE¡£·ÀÖ¹¶à´ÎˢС£
µ÷ÓÃSetScrollPosº¯Êý¿ÉÒÔÔÚ¹ö¶¯Ìõ·¶Î§ÄÚÉèÖÃеĹö¶¯ÌõλÖ᣺¯ÊýÔÐÍÈçÏ£º
int SetScrollPos(
HWND hWnd,
int iBar,
int iPos,
BOOL bRedraw
);
²ÎÊýiPos±íʾÐÂλÖ᣾ÙÀýÈçÏ£º
SetScrollPos (hwnd,SB_VERT,0,TRUE); //É趨¹ö¶¯Ìõ³õʼλÖÃ
¹ö¶¯¿òµÄλÖÃ×ÜÊÇÀëÉ¢µÄÕûÊýÖµ¡£Windows»á¸ºÔð´¦ÀíËùÓйö¶¯ÌõÊó±êʼþÒÔ¼°·¢Ë͹ö¶¯ÌõÏûÏ¢¡£ÎÒÃÇͨ³£¸ºÔð³õʼ»¯¹ö¶¯Ìõ·¶Î§ºÍλÖᢴ¦Àí¹ö¶¯ÌõÏûÏ¢¡¢¸üйö¶¯ÌõλÖÃÒÔ¼°¸üпͻ§ÇøÒÔÏìÓ¦¹ö¶¯ÌõµÄ¸Ä±ä¡£
ÔÚÓÃÊó±êµ¥»÷¹ö¶¯Ìõ»òÍ϶¯¹ö¶¯¿òʱ£¬Windows¸ø´°¿Ú¹ý³Ì·¢ËÍWM_VSCROLL£¨ÉÏÏÂÒÆ¶¯£©»òWM_HSCROLL(×óÓÒÒÆ¶¯)ÏûÏ¢¡£¹ö¶¯ÌõÉϵÄÿ¸öÊó±ê¶¯×÷ÖÁÉÙ²úÉúÁ½¸öÏûÏ¢£¬Ò»¸öÔÚ°´ÏÂÊó±ê°´¼üʱ²úÉú£¬Ò»¸öÔÚÊͷżüʱ²úÉú¡£Èç¹û¹ö¶¯Ìõ×÷Ϊ´°¿ÚµÄÒ»²¿·Ö£¬ºöÂÔlParam;lParam²ÎÊýÖ»ÓÃÓÚ×÷Ϊ×Ó´°¿ÚµÄ¹ö¶¯Ìõ¡£wParam²ÎÊýµÍ16λ±êʶÊó±ê¶ÔÓÚ¹ö¶¯ÌõµÄ¶¯×÷£¬¶ø¸ß16λֻÔÚ·¢ÉúÊó±êÍ϶¯¹ö¶¯¿ò¶¯×÷ʱ£¬ÓÃÓÚ±êʶ¹ö¶¯¿òλÖã¬ÆäËûÊó±ê¶¯×÷ÇéÐÎϱ»ºöÂÔ¡£
µ¥»÷¹ö¶¯ÌõÁ½¶Ë¼ýÍ·²úÉúSB_LINEUP»òSB_LINELEFT»òSB_LINEDOWN»òSB_LINERIGHTÏûÏ¢£»µ¥»÷¹ö¶¯Ìõ±¾Éí²úÉúSB_PAGEUP»òSB_PAGELEFT»òSB_PAGEDOWN»òSB_PAGERIGHTÏûÏ¢£¬Í϶¯¹ö¶¯¿ò²úÉúWM_THUMBTRACKÏûÏ¢£»¶øÊó±ê¶¯×÷½áÊøÊ±³ýÍ϶¯¹ö¶¯¿ò²úÉúWM_THUMBPOSITIONÏûÏ¢Í⣬ÆäËûÊó±ê¶¯×÷½áÊøÊ±¶¼²úÉúÒ»¸öWM_ENDSCROLLÏûÏ¢¡£
´¦ÀíÍ϶¯¹ö¶¯¿ò¶¯×÷£¬Ò»°ãÎÞÐèͬʱ´¦ÀíWM_THUMBTRACKºÍWM_THUMBPOSITIONÏûÏ¢¡£ÖÁÓÚÑ¡Ôñ´¦ÀíÄĸöÏûÏ¢£¬ÊÓÇé¿ö¶ø¶¨¡£
×÷ΪӦÓóÌÐò´°¿ÚÒ»²¿·ÖµÄ¹ö¶¯Ìõ£¬ÓÀÔ¶²»»á½ÓÊÕµ½°üº¬SB_TOP¡¢SB_BOTTOM¡¢SB_LEFT¡¢SB_RIGHTµÈÊó±ê¶¯×÷µÄ֪ͨÏûÏ¢¡£
ÏìÓ¦¹ö¶¯ÌõÊó±ê¶¯×÷´úÂë¾ÙÀý£º
case SB_LINEUP:
iVscrollPos -= 1;
case SB_LINEDOWN:
iVscrollPos += 1;
case SB_THUMBPOSITION:
iVscrollPos = HIWORD(wParam);
¡
SetScrollPos(hwnd,SB_VERT,iVscrollPos,TRUE);
InvalidateRect(hwnd,NULL,TRUE); //µ÷ÓÃUpdateWindowº¯Êý¿Í»§ÇøË¢Ð¸ü¿ì
ÏÖÔÚÎÒÃÇ´¦Àí¹ö¶¯ÌõÏûϢʱ¸ü³£ÓÃSetScrollInfoº¯Êý£¬Ö÷ÒªÓÐÁ½´óÓŵ㣺
1£® ¹ö¶¯¿òºÍÏÔʾÎĵµ´óС³É±ÈÀý¡£Ë㷨Ϊ£º
¾í¶¯·½¿é´óС/¹ö¶¯³¤¶È Ô¼µÈÓÚ Ò³Ãæ´óС/·¶Î§ Ô¼µÈÓÚ ÏÔʾµÄÎļþÊýÁ¿/ÎļþµÄ×Ü´óС
2£® ¹ö¶¯Ìõ·¶Î§¿ÉÉèÖÃΪ32λֵ£¬Í¨¹ýGetScrollInfoº¯Êý¿É»ñÈ¡32λµÄ¹ö¶¯¿òλÖá£
SetScrollInfoºÍGetScrollInfoº¯Êý¶¼°üº¬Ò»¸öSCROLLINFO½á¹¹ÀàÐ͵IJÎÊý£¬¸Ã½á¹¹ÔÐÍÈçÏ£º
typedef struct tagSCROLLINFO {
UINT cbSize;
UINT fMask;
int nMin;
int nMax;
UINT nPage;
int nPos;
int nTrackPos;
} SCROLLINFO, *LPSCROLLINFO;
fMask²ÎÊý°üº¬ÒÔSIFǰ׺¿ªÍ·µÄÒ»¸ö»ò¶à¸ö±êÖ¾£¬¿Éͨ¹ýλ»òÔËËã(|)×éºÏÕâЩ±êÖ¾¡£Ê¹ÓÃSIF_RANGE±ê־ʱ£¬Í¨¹ýnMinºÍnMax²ÎÊýÉèÖûò·µ»Ø¹ö¶¯Ìõ·¶Î§£»Ê¹ÓÃSIF_POS±ê־ʱ£¬Í¨¹ýnPos²ÎÊýÉèÖûò·µ»Ø¹ö¶¯ÌõλÖã»Ê¹ÓÃSIF_PAGE±ê־ʱ£¬Í¨¹ýnPage²ÎÊýÉèÖûò·µ»Øµ±Ç°Ò³Ãæ´óС£»Ê¹ÓÃSIF_TRACKPOS±êÖ¾£¬Í϶¯¹ö¶¯¿òʱͨ¹ýnTrackPos²ÎÊý·µ»Øµ±Ç°¹ö¶¯¿òλÖã»Ê¹ÓÃSIF_DISABLENOSCROLL±êÖ¾£¬½ûÓùö¶¯Ìõ¡£¾ÙÀýÈçÏ£º
si.cbSize = sizeof(SCROLLINFO);
si.cbMask = SIF_RANGE|SIF_PAGE;
si.nMin = 0;
si.nMax = NUMLINES ¨C 1;
si.nPage = cyClient/cyChar;
SetScrollInfo(hwnd,SB_VERT,&si,TRUE);
ÉÏÃæSetScrollInfoº¯Êýµ÷ÓÃʵÏÖÁËÏÂÁдúÂëµÄЧ¹û£º
iVscrollMax = max(0,NUMLINES ¨C cyClient/cyChar);
SetScrollRange (hwnd,SB_VERT,0,iVscrollMax,TRUE);
| ¡¤Re:<windows³ÌÐòÉè¼Æ>µÚËÄÕÂ±Ê¼Ç -|clmd(ÓοÍ)·¢±íÆÀÂÛÓÚ2005-11-4 13:26:00 |
ÓëBeginPaint²»Í¬£¬GetDC²»»áʹÈκÎÎÞÐ§ÇøÓò±äΪÓÐЧ¡£ ´íÎó¡£Ó¦¸ÃÊÇ¡°ÓëEndPaint²»Í¬£¬ReleaseDC²»»áʹÈκÎÎÞÐ§ÇøÓò±äΪÓÐЧ¡£¡±£¨²Î¼ûpetzold¡¶Windows³ÌÐòÉè¼Æ¡·µÚÎå°æ£© |