亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rangeslider.c

?? 讀取音樂(lè)光盤磁道為磁盤文件的DLL源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#include <windows.h>
#include "rangeslider.h"
#include "globals.h"


#define HEIGHTSLIDER 13

typedef struct {
  DWORD min;
  DWORD max;
  DWORD start;
  DWORD finish;
  int xOfsStart;        // possibly useless
  SHORT xStart;         // x-offset of starting position
  SHORT yStart;         // y-offset of starting position
  int which;
  RECT rc;
  BOOL bInDrag;
  HDC hCompDC;
  HBITMAP hBmp;
  HBITMAP hTop;
  HBITMAP hBottom;
  HPEN hDkGreyPen;
  HPEN hLtGreyPen;
  HPEN hBlackPen;
  HPEN hWhitePen;
  HBRUSH hBackground;
  HBRUSH hGreenBrush;
  int numTics;
  DWORD tic[100];
} RANGESLIDERSTRUCT, FAR *LPRANGESLIDERSTRUCT;


void PaintRangeSliderWnd( HWND hWnd, LPRANGESLIDERSTRUCT lpr );
LRESULT CALLBACK RangeSliderBarProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
void CreateSliderBitmaps( HDC hDC, LPRANGESLIDERSTRUCT lpr );
BOOL SliderHitTest( HWND hWnd, int which, LPARAM lParam, LPRANGESLIDERSTRUCT lpr );
BOOL sliderHandleLButtonDown( HWND hWnd, LPRANGESLIDERSTRUCT lpr, LPARAM lParam );
BOOL sliderHandleLButtonUp( HWND hWnd, LPRANGESLIDERSTRUCT lpr, LPARAM lParam );
BOOL sliderHandleMouseMove( HWND hWnd, LPRANGESLIDERSTRUCT lpr, LPARAM lParam );
BOOL sliderHandleSnap( HWND hWnd, WPARAM wParam, BOOL bRight, LPRANGESLIDERSTRUCT lpr );
BOOL SliderLeftHitTest( HWND hWnd, int which, LPARAM lParam,
			 LPRANGESLIDERSTRUCT lpr );
BOOL SliderRightHitTest( HWND hWnd, int which, LPARAM lParam,
			 LPRANGESLIDERSTRUCT lpr );
BOOL SendSliderNotifyChanging( HWND hWnd, LPRANGESLIDERSTRUCT lpr, DWORD dwNew );
BOOL SendSliderNotifyChanged( HWND hWnd, LPRANGESLIDERSTRUCT lpr );


static char szRangeSliderClass[] = "ak_rangeslider";


int InitRangeSliderClass( void )
{
  WNDCLASSEX wc;
  
  ZeroMemory( &wc, sizeof(wc) );
  wc.cbSize          = sizeof(wc);
  wc.style           = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc     = (WNDPROC)RangeSliderBarProc;
  wc.hInstance       = ghInstance;
  wc.hCursor         = LoadCursor( NULL, IDC_ARROW );
  wc.hbrBackground   = (HBRUSH)(COLOR_BTNFACE+1);
  wc.lpszClassName   = szRangeSliderClass;

  if ( !RegisterClassEx( &wc ) )
    return 0;

  return -1;
}


/*
 * Implements a sliding range bar control.  The control is used to select
 * a range using two slide controls -- one on top and one on bottom.
 *
 * Message          wParam      lParam
 * ---------------- ----------- ------------------------------------------
 * RSB_SETMIN       bRepaint    minimum allowed value
 * RSB_SETMAX       bRepaint    maxiumum allowed value
 * RSB_GETMIN       0           0
 * RSB_GETMAX       0           0
 * RSB_RESET        0           0
 * RSB_SETSTART     bRepaint    starting position of selected range
 * RSB_SETFINISH    bRepaint    ending position of selected range
 * RSB_SNAP         top/bottom  0 = left, 1 = right
 */
LRESULT CALLBACK RangeSliderBarProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
  LPRANGESLIDERSTRUCT lpr;
  DWORD dwTmp;

  lpr = (LPRANGESLIDERSTRUCT)GetWindowLong( hWnd, GWL_USERDATA );
  if ( !lpr && (uMsg != WM_CREATE) )
    return DefWindowProc( hWnd, uMsg, wParam, lParam );

  switch( uMsg )
    {
    case WM_CREATE:
      dwTmp = sizeof(*lpr);
      lpr = (LPRANGESLIDERSTRUCT)GlobalAlloc( GPTR, sizeof(*lpr) );
      lpr->min = 0;
      lpr->max = 100;
      lpr->start = 0;
      lpr->finish = 0;
      lpr->hTop = (HBITMAP)LoadBitmap( ghInstance, "SliderTop" );
      lpr->hBottom = (HBITMAP)LoadBitmap( ghInstance, "SliderBottom" );
      lpr->hWhitePen = (HPEN)GetStockObject( WHITE_PEN );
      lpr->hBlackPen = (HPEN)GetStockObject( BLACK_PEN );
      lpr->hDkGreyPen = CreatePen( PS_SOLID, 1, RGB( 128, 128, 128 ) );
      lpr->hLtGreyPen = CreatePen( PS_SOLID, 1, RGB( 192, 192, 192 ) );
      lpr->hBackground = CreateSolidBrush( GetSysColor( COLOR_MENU ) );
      lpr->hGreenBrush = CreateSolidBrush( RGB( 0, 255, 0 ) );
      GetClientRect( hWnd, &lpr->rc );
      SetWindowLong( hWnd, GWL_USERDATA, (LONG)lpr );
      break;

    case WM_DESTROY:
      DeleteObject( lpr->hTop );
      DeleteObject( lpr->hBottom );
      DeleteObject( lpr->hDkGreyPen );
      DeleteObject( lpr->hLtGreyPen );
      DeleteObject( lpr->hBackground );
      DeleteObject( lpr->hGreenBrush );
      if ( lpr->hCompDC )
	ReleaseDC( hWnd, lpr->hCompDC );
      if ( lpr->hBmp )
	DeleteObject( lpr->hBmp );
      GlobalFree( (HGLOBAL)lpr );
      break;

    case WM_PAINT:
      PaintRangeSliderWnd( hWnd, lpr );
      break;

    case WM_LBUTTONDOWN:
      if ( sliderHandleLButtonDown( hWnd, lpr, lParam ) )
	{
	  InvalidateRect( hWnd, &lpr->rc, FALSE );
	  UpdateWindow( hWnd );
	}
      break;

    case WM_LBUTTONUP:
      if ( sliderHandleLButtonUp( hWnd, lpr, lParam ) )
	{
	  InvalidateRect( hWnd, &lpr->rc, FALSE );
	  UpdateWindow( hWnd );
	}
      break;

    case WM_MOUSEMOVE:
      if ( sliderHandleMouseMove( hWnd, lpr, lParam ) )
	{
	  InvalidateRect( hWnd, &lpr->rc, FALSE );
	  UpdateWindow( hWnd );
	}
      break;

    case WM_SETFOCUS:
      break;

    case RSB_SETMIN:
      dwTmp = (DWORD)lParam;
      if ( dwTmp >= lpr->max )
	dwTmp = lpr->max - 1;
      lpr->min = dwTmp;
      break;

    case RSB_SETMAX:
      dwTmp = (DWORD)lParam;
      if ( dwTmp <= lpr->min )
	dwTmp = lpr->min + 1;
      lpr->max = dwTmp;
      break;

    case RSB_SETSTART:
      dwTmp = (DWORD)lParam;
      if ( dwTmp < lpr->min )
	dwTmp = lpr->min;
      else if ( dwTmp >= lpr->max )
	dwTmp = lpr->max-1;
      lpr->start = dwTmp;
      if ( wParam )
	{
	  InvalidateRect( hWnd, &lpr->rc, FALSE );
	  UpdateWindow( hWnd );
	}
      break;

    case RSB_SETFINISH:
      dwTmp = (DWORD)lParam;
      if ( dwTmp <= lpr->min )
	dwTmp = lpr->min + 1;
      else if ( dwTmp > lpr->max )
	dwTmp = lpr->max;
      lpr->finish = dwTmp;
      if ( wParam )
	{
	  InvalidateRect( hWnd, &lpr->rc, FALSE );
	  UpdateWindow( hWnd );
	}
      break;

    case RSB_GETMIN:
      return (LRESULT)lpr->min;

    case RSB_GETMAX:
      return (LRESULT)lpr->max;

    case RSB_GETSTART:
      return (LRESULT)lpr->start;

    case RSB_GETFINISH:
      return (LRESULT)lpr->finish;

    case RSB_SETTIC:
      if ( lpr->numTics < 100 )
	lpr->tic[lpr->numTics++] = (DWORD)lParam;
      break;

    case RSB_SNAP:
      if ( sliderHandleSnap( hWnd, wParam, (BOOL)lParam, lpr ) )
	{
	  InvalidateRect( hWnd, &lpr->rc, FALSE );
	  UpdateWindow( hWnd );
	}
      break;

    default:
      return DefWindowProc( hWnd, uMsg, wParam, lParam );
    }

  return 0L;
}


BOOL SliderHitTest( HWND hWnd, int which, LPARAM lParam,
		    LPRANGESLIDERSTRUCT lpr )
{
  int xOfs;
  POINTS pt;

  pt = MAKEPOINTS( lParam );

  switch( which )
    {
    case TOPSLIDER:
      xOfs = (lpr->rc.right-7) * lpr->start / (lpr->max - lpr->min);
      if ( (pt.x >= xOfs) && (pt.x <= (xOfs + 7)) &&
	   (pt.y >= 0) && (pt.y <= 14) )
	{
	  OutputDebugString( "SliderHitTest: TOPSLIDER hit!" );
	  return TRUE;
	}
      break;

    case BOTTOMSLIDER:
      xOfs = (lpr->rc.right-7) * lpr->finish / (lpr->max - lpr->min);
      if ( (pt.x >= xOfs) && (pt.x <= (xOfs + 7)) &&
	   (pt.y >= 25+HEIGHTSLIDER) && (pt.y <= 39+HEIGHTSLIDER) )
	{
	  OutputDebugString( "SliderHitTest: BOTTOMSLIDER hit!" );
	  return TRUE;
	}
      break;
    }

  OutputDebugString( "SliderHitTest: no slider hit..." );
  return FALSE;
}


BOOL SliderLeftHitTest( HWND hWnd, int which, LPARAM lParam,
			LPRANGESLIDERSTRUCT lpr )
{
  int xOfs;
  POINTS pt;

  pt = MAKEPOINTS( lParam );

  switch( which )
    {
    case TOPSLIDER:
      xOfs = (lpr->rc.right-7) * lpr->start / (lpr->max - lpr->min);
      if ( (pt.x < xOfs) && (pt.y >= 0) && (pt.y <= 14) )
	{
	  return TRUE;
	}
      break;

    case BOTTOMSLIDER:
      xOfs = (lpr->rc.right-7) * lpr->finish / (lpr->max - lpr->min);
      if ( (pt.x < xOfs) && (pt.y >= 25+HEIGHTSLIDER) && (pt.y <= 39+HEIGHTSLIDER) )
	{
	  return TRUE;
	}
      break;
    }

  return FALSE;
}


BOOL SliderRightHitTest( HWND hWnd, int which, LPARAM lParam,
			 LPRANGESLIDERSTRUCT lpr )
{
  int xOfs;
  POINTS pt;

  pt = MAKEPOINTS( lParam );

  switch( which )
    {
    case TOPSLIDER:
      xOfs = (lpr->rc.right-7) * lpr->start / (lpr->max - lpr->min);
      if ( (pt.x > xOfs+7) && (pt.y >= 0) && (pt.y <= 14) )
	{
	  return TRUE;
	}
      break;

    case BOTTOMSLIDER:
      xOfs = (lpr->rc.right-7) * lpr->finish / (lpr->max - lpr->min);
      if ( (pt.x > xOfs+7) && (pt.y >= 25+HEIGHTSLIDER) && (pt.y <= 39+HEIGHTSLIDER) )
	{
	  return TRUE;
	}
      break;
    }

  return FALSE;
}


#define HEIGHTSLIDER 13
void PaintRangeSliderWnd( HWND hWnd, LPRANGESLIDERSTRUCT lpr )
{
  PAINTSTRUCT p;
  RECT rc;
  HDC hDC, hCompDC;
  HBITMAP hBmp;
  POINT pt[10];
  int w, h, xOfs, i;

  hDC = BeginPaint( hWnd, &p );
  rc = lpr->rc;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区欧美在线观看| 一级日本不卡的影视| 色偷偷成人一区二区三区91 | 精东粉嫩av免费一区二区三区| 亚洲国产精品传媒在线观看| 欧美日韩成人在线| 丁香亚洲综合激情啪啪综合| 无吗不卡中文字幕| 成人免费在线播放视频| 精品久久久久久亚洲综合网| 色视频成人在线观看免| 国产成人av电影在线播放| 日本91福利区| 亚洲黄色片在线观看| 国产亚洲欧美色| 欧美一区二区免费视频| 在线亚洲高清视频| 成人黄色电影在线 | 亚洲国产精品国自产拍av| 91精品国产品国语在线不卡| 在线观看日韩一区| 99久精品国产| 懂色av一区二区三区免费观看| 蜜乳av一区二区| 日韩精品亚洲专区| 午夜婷婷国产麻豆精品| 一区二区高清在线| 1区2区3区精品视频| 日本一区二区三区四区在线视频| 日韩视频中午一区| 555www色欧美视频| 欧美日韩成人综合| 欧美日韩中文一区| 欧美日韩一区二区三区高清| 91美女福利视频| 色哟哟国产精品| 97精品超碰一区二区三区| 成人丝袜高跟foot| 成人免费视频免费观看| 成人深夜福利app| 成人白浆超碰人人人人| 菠萝蜜视频在线观看一区| 成人自拍视频在线观看| 成人精品视频一区二区三区| 国产成人免费视频一区| 成人久久久精品乱码一区二区三区| 国产大陆精品国产| 成人高清视频在线| 国产99精品在线观看| 成人国产免费视频| 色综合久久久久| 欧美午夜免费电影| 欧美精三区欧美精三区| 日韩一区二区在线观看视频| 日韩免费性生活视频播放| 久久综合999| 亚洲成人综合视频| 免费成人小视频| 国内久久精品视频| 成人免费高清在线| 日本乱码高清不卡字幕| 欧美色爱综合网| 欧美mv日韩mv| 国产精品久久久久永久免费观看| 国产精品成人免费| 洋洋成人永久网站入口| 青青草精品视频| 国产一区不卡精品| 91论坛在线播放| 欧美老肥妇做.爰bbww视频| 欧美mv日韩mv国产网站app| 中文字幕精品综合| 亚洲午夜在线视频| 久久电影国产免费久久电影| 懂色中文一区二区在线播放| 欧美在线影院一区二区| 欧美成人a在线| 专区另类欧美日韩| 奇米色777欧美一区二区| 国产成人综合视频| 欧美色倩网站大全免费| 久久综合狠狠综合久久综合88| 最新不卡av在线| 奇米一区二区三区| 99久久久免费精品国产一区二区| 欧美日韩一区精品| 国产欧美日韩三级| 亚洲无线码一区二区三区| 激情综合一区二区三区| 91精品1区2区| 久久精品夜色噜噜亚洲a∨| 夜夜嗨av一区二区三区网页| 国产在线视频精品一区| 欧美日韩一级大片网址| 国产校园另类小说区| 亚洲国产成人高清精品| 国产成人亚洲综合a∨婷婷| 精品视频免费在线| 国产精品萝li| 久久国产精品第一页| 在线精品视频一区二区三四| 久久久亚洲国产美女国产盗摄 | 日韩中文字幕不卡| 99久久国产综合精品麻豆| 欧美电影免费观看高清完整版在线观看 | www.成人在线| 精品国产123| 亚洲成av人片www| 91在线porny国产在线看| 久久久久亚洲综合| 秋霞成人午夜伦在线观看| 国产精品情趣视频| 蜜臀av一区二区在线观看| 欧美性色综合网| 亚洲少妇最新在线视频| 国产成人在线网站| 日韩一区二区三区视频| 亚洲一区中文日韩| 99国产一区二区三精品乱码| 久久久国产一区二区三区四区小说| 日韩福利视频导航| 欧美日韩一本到| 一区二区三区中文字幕精品精品| 成人免费电影视频| 国产视频911| 国产成人av在线影院| 久久这里只有精品首页| 精品一区二区国语对白| 日韩欧美一区中文| 蜜桃免费网站一区二区三区| 欧美高清一级片在线| 香蕉乱码成人久久天堂爱免费| 91黄色免费网站| 亚洲一区二区在线播放相泽| 日本伦理一区二区| 亚洲一区二区三区视频在线 | 天天综合天天做天天综合| 欧洲激情一区二区| 亚洲国产欧美另类丝袜| 欧美视频日韩视频| 天堂一区二区在线免费观看| 欧美日韩国产123区| 亚洲 欧美综合在线网络| 欧美巨大另类极品videosbest| 午夜精品福利一区二区三区蜜桃| 欧美日韩在线播放一区| 日韩福利视频导航| 欧美电视剧在线看免费| 国产精品一区免费在线观看| 欧美国产一区二区| 国产色产综合产在线视频| 国产成人精品综合在线观看 | 国产成人精品免费看| 国产精品久久久久久亚洲毛片 | 精品亚洲成a人| 国产欧美日韩亚州综合 | 91视视频在线直接观看在线看网页在线看| 国产精品午夜在线观看| 色香色香欲天天天影视综合网| 亚洲一区中文在线| 日韩一二三区不卡| 懂色中文一区二区在线播放| 亚洲欧美另类小说| 欧美精品乱人伦久久久久久| 久88久久88久久久| 国产精品久久久久三级| 欧美性大战久久| 国产资源在线一区| 亚洲人成亚洲人成在线观看图片 | 亚洲激情网站免费观看| 欧美妇女性影城| 国产高清精品网站| 亚洲欧美另类久久久精品2019| 91精品国产综合久久久蜜臀图片| 国产制服丝袜一区| 一区二区在线观看免费| 日韩欧美区一区二| 91在线视频观看| 蜜桃精品视频在线| 中文字幕一区二区三区在线观看| 欧美日韩精品高清| 国产成人综合在线播放| 亚洲18影院在线观看| 国产精品美女久久久久高潮| 欧美午夜电影网| 国产成人免费高清| 日本亚洲最大的色成网站www| 国产欧美精品一区二区色综合| 在线视频一区二区三区| 国内精品国产成人国产三级粉色| 亚洲免费观看视频| 久久婷婷一区二区三区| 欧美日精品一区视频| 成人一级视频在线观看| 青青草精品视频| 一区二区三区国产精华| 国产欧美精品国产国产专区 | 中文字幕日韩欧美一区二区三区| 91精品国产色综合久久| 日本韩国精品在线|