文書番号: 401949
最終更新日: 2003/11/11
#define PALSIZE 256 class CPaletteView : public CView { public: CPalette CPal; void LineWrite(CDC*); . . . } int CPaletteView::OnCreate(LPCREATESTRUCT lpCreateStruct) { //パレットの為のバッファを確保する PLOGPALETTE plp=(PLOGPALETTE)new char[sizeof(LOGPALETTE)+ (PALSIZE-1)*sizeof(PALETTEENTRY)]; //クラスウィザードが作成した行 if (CView::OnCreate(lpCreateStruct) == -1) return -1; plp->palVersion = 0x300; plp->palNumEntries= PALSIZE; for(int i=0; i< PALSIZE; i++){ plp->palPalEntry[i].peRed = (BYTE)i; //灰色を設定している plp->palPalEntry[i].peGreen = (BYTE)i; plp->palPalEntry[i].peBlue = (BYTE)i; plp->palPalEntry[i].peFlags = (BYTE)NULL; } CPal.CreatePalette(plp); //パレットのオブジェクトを作る delete plp; return 0; } void CPaletteView::OnDraw(CDC* pDC) { CPaletteDoc* pDoc = GetDocument(); pDC->SelectPalette(&CPal,1); pDC->RealizePalette(); // パレットを更新する LineWrite(pDC); // 作成したパレットを使って描画をする } void CPaletteView::LineWrite(CDC *dc) { CPen cp; CPen *OldPen; for(int i=0; i<PALSIZE; i++){ //ここは PALETTEINDEX を使っても良い cp.CreatePen(PS_SOLID,5,PALETTERGB(i,i,i)); OldPen=dc->SelectObject(&cp); dc->MoveTo(i,0); dc->LineTo(i,100); dc->SelectObject(OldPen); cp.DeleteObject(); } }
Keywords: KBHOWTO VC10 KB401949
Technology: kbAudDeveloper kbVCsearch