鱼C论坛

 找回密码
 立即注册
查看: 2493|回复: 2

滚动条控件问题

[复制链接]
发表于 2015-12-11 15:38:48 | 显示全部楼层 |阅读模式
10鱼币

  1. #include <windows.h>
  2. #include "strsafe.h"
  3. LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
  4. int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstantce,LPSTR lpCmdLine,int nShowCmd)
  5. {
  6.         static TCHAR zifu[]=TEXT("我是字符串");
  7.         HWND hwnd;
  8.         MSG msg;
  9.         WNDCLASS wndclass;
  10.         wndclass.cbClsExtra=0;
  11.         wndclass.cbWndExtra=0;
  12.         wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
  13.         wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
  14.         wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  15.         wndclass.lpfnWndProc=WndProc;
  16.         wndclass.lpszClassName=TEXT("wodechuangkou2");
  17.         wndclass.style=CS_HREDRAW|CS_VREDRAW;
  18.         wndclass.hInstance=hInstance;
  19.         wndclass.lpszMenuName=NULL;
  20.         if(!RegisterClass(&wndclass))
  21.         {
  22.                 MessageBox(NULL,TEXT("buxing"),TEXT("zhenbuxing"),MB_YESNO);
  23.                 return 0;
  24.         }
  25.         hwnd=CreateWindow(
  26.                 TEXT("wodechuangkou2"),
  27.                 TEXT("我是个标题"),
  28.                 WS_OVERLAPPEDWINDOW,
  29.                 CW_USEDEFAULT,
  30.                 CW_USEDEFAULT,
  31.                 CW_USEDEFAULT,
  32.                 CW_USEDEFAULT,
  33.                 NULL,
  34.                 NULL,
  35.                 hInstance,
  36.                 NULL);
  37.         ShowWindow(hwnd,nShowCmd);
  38.         UpdateWindow(hwnd);
  39.         while(GetMessage(&msg,NULL,0,0))
  40.         {
  41.        TranslateMessage(&msg);
  42.            DispatchMessage(&msg);
  43.         }
  44.         return msg.wParam;

  45. }

  46. LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM  wParam,LPARAM lParam)
  47. {
  48.          HINSTANCE hInstance;
  49.         static int cxClient,cyClient;
  50.     int i;
  51.         HDC hdc;
  52. PAINTSTRUCT ps;
  53. RECT rect;
  54. static WCHAR bzBuffer[10];
  55.     static HWND Hwndlabel[3],Pingtai,Hwndscrollbar[3],HwndValue[3];
  56.         TCHAR* szColorLablel[]={TEXT("Red"),TEXT("Green"),TEXT("Blue")};
  57.         static TEXTMETRIC tm;
  58.         static SCROLLINFO scroll;
  59.         static int color[3];
  60.         size_t leng;

  61.         switch(message)
  62.         {
  63.         case WM_CREATE:
  64.                 hdc=GetDC(hwnd);
  65.                 GetTextMetrics(hdc,&tm);
  66.      hInstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
  67.                 Pingtai=CreateWindow(TEXT("static"),NULL,WS_CHILD|WS_VISIBLE|SS_WHITERECT,0,0,0,0,hwnd,(HMENU)9,hInstance,NULL);
  68.                 scroll.cbSize=sizeof(SCROLLINFO);
  69.                   scroll.fMask=SIF_ALL;
  70.                   scroll.nMax=255;
  71.                   scroll.nMin=0;
  72.                   scroll.nPage=15;
  73.                   scroll.nPos=0;
  74.                
  75.        for(i=0;i<3;i++)
  76.            {
  77.           Hwndlabel[i]=CreateWindow(TEXT("static"),szColorLablel[i],WS_CHILD|WS_VISIBLE|SS_CENTER,0,0,0,0,hwnd,(HMENU)(i),hInstance,NULL);   
  78.           Hwndscrollbar[i]=CreateWindow(TEXT("scrollbar"),NULL,WS_CHILD|WS_VISIBLE|WS_TABSTOP|SBS_VERT,0,0,0,0,hwnd,(HMENU)(i+3),hInstance,NULL);
  79.                   HwndValue[i]=CreateWindow(TEXT("static"),TEXT("0"),WS_CHILD|WS_VISIBLE|SS_CENTER,0,0,0,0,hwnd,(HMENU)(i+6),hInstance,NULL);
  80.                   SetScrollInfo(Hwndscrollbar[i],SB_CTL,&scroll,TRUE);
  81.            }            

  82.      
  83.                 break;
  84.        
  85.         case WM_SIZE:
  86.        cxClient=LOWORD(lParam);
  87.            cyClient=HIWORD(lParam);
  88.            MoveWindow(Pingtai,0,0,cxClient/2,cyClient,TRUE);
  89.          
  90.                   
  91.                   
  92.                   for(i=0;i<3;i++)
  93.            {   

  94.                    MoveWindow(Hwndlabel[i],(4*i+1)*cxClient/28,tm.tmHeight/2,cxClient / 7, tm.tmHeight, TRUE);
  95.                    MoveWindow(Hwndscrollbar[i],(4*i+2)*cxClient/28,tm.tmHeight*1.5,cxClient/14,cyClient-tm.tmHeight*4,TRUE);
  96.                MoveWindow(HwndValue[i],(4*i+1)*cxClient/28,cyClient-tm.tmHeight*2.5,cxClient/7,tm.tmHeight,TRUE);
  97.                   
  98.            }            


  99.                 break;
  100.         case WM_VSCROLL:
  101.                 i=GetWindowLong((HWND)lParam,GWL_ID)-3;
  102.         switch (LOWORD(wParam))
  103.         {
  104.                
  105.         case SB_PAGEDOWN:
  106.                
  107.                 color[i]=min(255,color[i]+15);
  108.                 break;
  109.         case SB_PAGEUP:
  110.         color[i]=max(0,color[i]-15);
  111.                         break;
  112.         case SB_LINEUP:
  113.                  color[i]=max(0,color[i]-1);
  114.                 break;
  115.         case SB_LINEDOWN:
  116.                 color[i]=min(255,color[i]+1);
  117.                 break;
  118.    case SB_THUMBTRACK:
  119.          scroll.cbSize=sizeof(SCROLLINFO);
  120.         scroll.fMask=SIF_ALL;
  121.            GetScrollInfo((HWND)lParam,SB_CTL,&scroll);

  122.            color[i] =scroll.nTrackPos;
  123.                         break;
  124.         }
  125.         scroll.cbSize=sizeof(SCROLLINFO);
  126.         scroll.fMask=SIF_POS;
  127.         scroll.nPos=color[i];
  128.         SetScrollInfo((HWND)lParam,SB_CTL,&scroll,TRUE);
  129.    
  130. StringCchPrintf(bzBuffer,10,TEXT("%d"),color[i]);
  131.         SetWindowText(HwndValue[i],bzBuffer);
  132.    
  133.                 break;
  134.         case WM_PAINT:
  135.     hdc=BeginPaint (hwnd,&ps);
  136.         GetClientRect (hwnd,&rect);
  137.        



  138.         EndPaint (hwnd,&ps);
  139.         return 0;
  140.         case WM_DESTROY:
  141.                 PostQuitMessage(0);
  142.                 return 0;
  143.         //case WM_PAINT:

  144.         }
  145.         return DefWindowProc(hwnd,message,wParam,lParam);
  146. }
复制代码

为什么滚动条托到最下面 不是255 是 241

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-12-15 13:38:02 | 显示全部楼层
@小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-17 11:46:59 | 显示全部楼层
滑块也有大小,要计算滑块的大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-23 20:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表