source: dev/trunk/ab5.0/abdev/abdev/Ruler.cpp @ 681

Last change on this file since 681 was 655, checked in by dai_9181, 15 years ago

FileManager周りをリファクタリング

File size: 2.6 KB
Line 
1#include "stdafx.h"
2
3#include "common.h"
4
5LRESULT CALLBACK RulerProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
6    switch(message){
7        case WM_PAINT:
8            CRuler *pobj_Ruler;
9            pobj_Ruler=(CRuler *)GetWindowLongPtr(hwnd,GWLP_USERDATA);
10
11            HDC hdc;
12            PAINTSTRUCT ps;
13            hdc=BeginPaint(hwnd,&ps);
14
15            pobj_Ruler->draw(hdc);
16
17            EndPaint(hwnd,&ps);
18            break;
19    }
20    return DefWindowProc(hwnd,message,wParam,lParam);
21}
22
23CRuler::CRuler(HWND hParent,MDIINFO *pMdiInfo)
24    : pMdiInfo( pMdiInfo )
25{
26    hRulerWnd=CreateWindowEx(0,"Ruler","Ruler",
27        WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE,
28        0,0,0,0,
29        hParent,0,hInst,0);
30    SetWindowLongPtr(hRulerWnd,GWLP_USERDATA,(long)this);
31
32    HDC hdc;
33    hdc=GetDC(hRulerWnd);
34
35    memdc=CreateCompatibleDC(hdc);
36    hMemBmp=CreateCompatibleBitmap(hdc,ScreenX,HEIGHT_RULER);
37    SelectObject(memdc,hMemBmp);
38
39    ReleaseDC(hRulerWnd,hdc);
40}
41CRuler::~CRuler(){
42    DeleteDC(memdc);
43    DeleteObject(hMemBmp);
44
45    DestroyWindow(hRulerWnd);
46}
47
48void CRuler::resize(int x,int y,int cx,int cy){
49    MoveWindow(hRulerWnd,x,y,cx,cy,1);
50}
51void CRuler::draw(HDC hdc){
52    int i;
53
54    //スクロールバーによるベースポジションを取得
55    int BaseX,BaseY;
56    BaseX=0;
57    BaseY=0;
58    GetScrollBaseCaretPos(this->pMdiInfo,&BaseX,&BaseY);
59
60    int iControlTabSpace;
61    iControlTabSpace=this->pMdiInfo->pMdiTextEdit->iWidth_ControlTabSpace;
62
63    HBRUSH hBrush,hOldBrush;
64    hBrush=CreateSolidBrush(RGB(230,230,230));
65
66    HPEN hPen,hOldPen;
67    hPen=CreatePen(PS_SOLID,0,RGB(60,60,60));
68
69    //背景色を塗りつぶす
70    hOldBrush=(HBRUSH)SelectObject(memdc,hBrush);
71    PatBlt(memdc,0,0,ScreenX,HEIGHT_RULER,PATCOPY);
72    SelectObject(memdc,hOldBrush);
73
74
75    extern HFONT hRulerFont;
76    HFONT hOldFont;
77    hOldFont=(HFONT)SelectObject(memdc,hRulerFont);
78
79    hOldPen=(HPEN)SelectObject(memdc,hPen);
80
81    //ラインを描画
82    extern int font_width;
83    int x;
84    for(x=iControlTabSpace,i=-BaseX;x<ScreenX;x+=font_width,i++){
85        if(i%10==0){
86            MoveToEx(memdc,x,0,NULL);
87            LineTo(memdc,x,HEIGHT_RULER);
88        }
89        else if(i%5==0){
90            MoveToEx(memdc,x,HEIGHT_RULER/2,NULL);
91            LineTo(memdc,x,HEIGHT_RULER);
92        }
93        else{
94            MoveToEx(memdc,x,HEIGHT_RULER-3,NULL);
95            LineTo(memdc,x,HEIGHT_RULER);
96        }
97    }
98
99    //桁番号を描画
100    char temporary[32];
101    SetBkColor(memdc,RGB(230,230,230));
102    SetTextColor(memdc,RGB(60,60,60));
103    for(x=iControlTabSpace,i=-BaseX;x<ScreenX;x+=font_width,i++){
104        if(i%10==0){
105            sprintf(temporary,"%d",i);
106            TextOut(memdc,x+2,0,temporary,lstrlen(temporary));
107        }
108    }
109
110    SelectObject(memdc,hOldPen);
111    SelectObject(memdc,hOldFont);
112
113
114    //画面に描画
115    BitBlt(hdc,0,0,ScreenX,HEIGHT_RULER,memdc,0,0,SRCCOPY);
116
117    DeleteObject(hBrush);
118    DeleteObject(hPen);
119}
Note: See TracBrowser for help on using the repository browser.