mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
100 lines
2.0 KiB
C++
100 lines
2.0 KiB
C++
// StatusDialog.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "dxwndhost.h"
|
|
#include "PaletteDialog.h"
|
|
#include "bmpext.h"
|
|
|
|
// CPaletteDialog dialog
|
|
|
|
IMPLEMENT_DYNAMIC(CPaletteDialog, CDialog)
|
|
|
|
CPaletteDialog::CPaletteDialog(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPaletteDialog::IDD, pParent)
|
|
{
|
|
}
|
|
|
|
CPaletteDialog::~CPaletteDialog()
|
|
{
|
|
}
|
|
|
|
void CPaletteDialog::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPaletteDialog, CDialog)
|
|
ON_WM_TIMER()
|
|
END_MESSAGE_MAP()
|
|
|
|
#define IDPaletteTIMER 2
|
|
|
|
// CPaletteDialog message handlers
|
|
|
|
CDib dib;
|
|
CWnd *myWin;
|
|
|
|
void CPaletteDialog::OnTimer(UINT_PTR nIDEvent)
|
|
{
|
|
DXWNDSTATUS DxWndStatus;
|
|
int DxStatus;
|
|
//extern PRIVATEMAP *pTitles;
|
|
extern TARGETMAP *pTargets;
|
|
RECT Rect;
|
|
int h, w;
|
|
static BOOL PaletteUpdated = FALSE;
|
|
|
|
DxStatus=GetHookStatus(&DxWndStatus);
|
|
myWin->GetClientRect(&Rect);
|
|
h=Rect.bottom - Rect.top;
|
|
w=Rect.right - Rect.left;
|
|
if((h==0) || (w==0)) return;
|
|
|
|
if(DxStatus==DXW_RUNNING){
|
|
for(int row=0; row<16; row++){
|
|
for(int col=0; col<16; col++){
|
|
PALETTEENTRY *pe = &DxWndStatus.Palette[16*row+col];
|
|
RGBQUAD rgbq;
|
|
rgbq.rgbBlue=pe->peBlue;
|
|
rgbq.rgbGreen=pe->peGreen;
|
|
rgbq.rgbRed=pe->peRed;
|
|
rgbq.rgbReserved=0;
|
|
dib.SetPixel(col, row, rgbq);
|
|
}
|
|
}
|
|
PaletteUpdated = TRUE;
|
|
}
|
|
else{
|
|
if (PaletteUpdated) dib.ReadFromResource(IDB_PALETTE);
|
|
PaletteUpdated = FALSE;
|
|
}
|
|
|
|
CDC *dc;
|
|
dc=this->GetDC();
|
|
if(dc) dib.Draw(dc, CRect(0, 0, w, h), CRect(0, 0, 16, 16));
|
|
this->ReleaseDC(dc);
|
|
}
|
|
|
|
BOOL CPaletteDialog::OnInitDialog()
|
|
{
|
|
CDC *myDC;
|
|
CDialog::OnInitDialog();
|
|
if((myDC=this->GetDC())==NULL) return FALSE;
|
|
if((myWin=myDC->GetWindow())==NULL) return FALSE;
|
|
dib.ReadFromResource(IDB_PALETTE);
|
|
SetTimer(IDPaletteTIMER, 200, NULL);
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CPaletteDialog::OnOK()
|
|
{
|
|
// TODO: Add your specialized code here and/or call the base class
|
|
// stop timer
|
|
KillTimer(IDPaletteTIMER);
|
|
// delete(dib);
|
|
CDialog::OnOK();
|
|
}
|