毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

C++根据滚动条的调整,从而改变static的颜色背景

更新时间:2013-1-1:  来源:毕业论文

预期结果:

窗口左边有3个滚动条,右边有个static控件。

可以根据滚动条的调整,从而改变这个static的颜色背景。


说明:

hwndScroll------------3个滚动条

hwndRect--------------窗口右边的static控件


没有达到预期的结果.
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {      static COLORREF crPrim[3] = { RGB (255, 0, 0), RGB (0, 255, 0),                                    RGB (0, 0, 255) } ;      static HBRUSH  hBrush[3] ;      static HWND    hwndScroll[3], hwndLabel[3],  hwndRect ;      static int     color[3], cyChar ;      static RECT    rcColor ;      static TCHAR * szColorLabel[] = { TEXT ("Red"), TEXT ("Green"),                                         TEXT ("Blue") } ;      HINSTANCE      hInstance ;      int            i, cxClient, cyClient ;      TCHAR          szBuffer[10] ;             switch (message)      {      case WM_CREATE :          {              hInstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);                hwndRect=CreateWindow("static",NULL,WS_VISIBLE|WS_CHILD,0,0,0,0,hwnd,(HMENU)9,hInstance,NULL);                  //hwndScroll        hwndLabel                            for(i=0;i<3;i++)              {                  hwndScroll[i]=CreateWindow("scrollbar",NULL,WS_VISIBLE|WS_CHILD|WS_TABSTOP|SBS_VERT,0,0,0,0,hwnd,(HMENU)i,hInstance,NULL);                  hwndLabel[i]=CreateWindow("static",szColorLabel[i],WS_VISIBLE|WS_CHILD|SS_CENTER,0,0,0,0,hwnd,(HMENU)(i+3),hInstance,NULL);                  hBrush[i]=CreateSolidBrush(crPrim[i]);              }                    cyChar=HIWORD(GetDialogBaseUnits());                SetScrollRange(hwndScroll[i],SB_CTL,0,255,FALSE);              SetScrollPos(hwndScroll[i],SB_CTL,0,FALSE);                return 0 ;            }           break;        case WM_VSCROLL:          {            i=GetWindowLong(hwnd,GWL_ID);          switch (LOWORD(wParam))          {            case SB_PAGEDOWN:              color[i]+=15;              break;          case SB_PAGEUP:              color[i]-=15;              break;            case  SB_LINEDOWN:              color[i]=max(0,color[i]-1);              break;            case  SB_LINEUP:              color[i]=min(255,color[i]-1);              break;            case SB_TOP:              color[i]=0;              break;            case SB_BOTTOM:              color[i]=255;              break;            case SB_THUMBPOSITION:          case SB_THUMBTRACK:              color[i]=HIWORD(wParam);              break;            default:              break;              }            //end switch                    //修改          SetScrollPos(hwndScroll[i],SB_CTL,color[i],TRUE);          DeleteObject((HBRUSH)SetClassLong(hwnd,GCL_HBRBACKGROUND,(LONG)CreateSolidBrush(RGB(color[0],color[1],color[2]))));          InvalidateRect(hwnd,&rcColor,TRUE);          return 0;          }          break;                    case WM_SIZE :          {              cxClient=LOWORD(lParam);              cyClient=HIWORD(lParam);                SetRect(&rcColor,cxClient/2,0,cxClient,cyClient);                MoveWindow(hwndRect,cxClient/2,0,cxClient/2,cyClient,TRUE);               //hwndLabel            hwndScroll              for(i=0;i<3;i++)              {                  MoveWindow(hwndLabel[i],(2*i+1)*cxClient/14,cyChar/2,cxClient/14,cyClient/15,TRUE);                  MoveWindow(hwndScroll[i],(2*i+1)*cxClient/14,cyChar+cyClient/15,cxClient/14,cyClient*12/15,TRUE);                }                return    0;            }          break;                        case WM_DESTROY:          PostQuitMessage(0);          return 0;          break;        }      return DefWindowProc (hwnd, message, wParam, lParam) ; }

3个滚动条代表 RGB,(0-》255)
static 的背景颜色是 这3个滚动条的: RGB(滚动条1,滚动条2,滚动条3)

i=GetWindowLong(hwnd,GWL_ID);
你这是返回的窗口ID啊,而color[i]中i只能取0,1,2,你调试下看看i是取的多少,
但是我想即使取的[0,2],那也是固定不变的,因为你始终获取的是窗口的ID,而不是滚动条的ID for(i=0;i<3;i++) {   hwndScroll[i]=CreateWindow("scrollbar",NULL,WS_VISIBLE|WS_CHILD|WS_TABSTOP|SBS_VERT,0,0,0,0,hwnd,(HMENU)i,hInstance,NULL);   hwndLabel[i]=CreateWindow("static",szColorLabel[i],WS_VISIBLE|WS_CHILD|SS_CENTER,0,0,0,0,hwnd,(HMENU)(i+3),hInstance,NULL);   hBrush[i]=CreateSolidBrush(crPrim[i]);   SetScrollRange(hwndScroll[i],SB_CTL,0,255,FALSE);   SetScrollPos(hwndScroll[i],SB_CTL,0,FALSE); }

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©chuibin.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。