спасибо посмотрим
Добавлено через 55 секунд я вообще вот как делаю
| Код | MainDlg.h
class CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>, public CMessageFilter, public CIdleHandler { protected: vector<CCircle> m_BuffCircle; int m_countr;
public: enum { IDD = IDD_MAINDLG }; CMainDlg(); ~CMainDlg();
virtual BOOL PreTranslateMessage(MSG* pMsg); virtual BOOL OnIdle();
BEGIN_UPDATE_UI_MAP(CMainDlg) END_UPDATE_UI_MAP()
BEGIN_MSG_MAP(CMainDlg) //MESSAGE_HANDLER(WM_PAINT, OnPaint) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) MESSAGE_HANDLER(WM_DESTROY, OnDestroy) COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout) COMMAND_ID_HANDLER(IDOK, OnOK) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) COMMAND_ID_HANDLER(ID_PUSIRK, OnPusireck) COMMAND_ID_HANDLER(ID_COUNTER, OnCounter) COMMAND_ID_HANDLER(ID_EXIT, OnExit) END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); //LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnPusireck(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnCounter(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnExit(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
private: void CloseDialog(int nVal); int Randomize(); BOOL FindNumber(int inum); void CirclePushBack(); void OnPaint();
MainDlg.cpp ..... void CMainDlg::CirclePushBack() { m_BuffCircle.clear();
for (int i = 0; i<m_countr; i++) { CCircle objCircle; objCircle.SetNumber(Randomize()); objCircle.SetCoordCCircle(i*30 + 20 + 20*(i-1), -30); m_BuffCircle.push_back(objCircle); } }
void CMainDlg::OnPaint() { HDC hDC; hDC = GetDC();
SetGraphicsMode(hDC, GM_ADVANCED); SetMapMode(hDC, MM_LOENGLISH);
// GetClientRect( (LPRECT) &rect); // DPtoLP(hDC, (LPPOINT) &rect, 2);
SelectObject(hDC, GetStockObject(HOLLOW_BRUSH));
CBrush m_myBrush; CBrush *m_myOldBrush; m_myBrush.CreateSolidBrush(RGB(147, 240, 220)); ::SelectObject(hDC, m_myBrush);
if (m_BuffCircle.size() != NULL) { vector<CCircle>::iterator iterCircl; for (iterCircl = m_BuffCircle.begin(); iterCircl < m_BuffCircle.end(); iterCircl++) { RECT rect; int iX, iY, iR;
if((*iterCircl).GetCoordCCircle(iX, iY, iR)) { rect.left = iX - iR; rect.top = iY + iR; rect.right = iX + iR; rect.bottom = iY - iR; Ellipse(hDC, rect.left, rect.top, rect.right, rect.bottom); PTSTR pBuf = (PTSTR)_alloca(4*sizeof(TCHAR)); ATLASSERT(pBuf); // sprintf_s(pBuf, 4,"%d", (*iterCircl).GetNumber()); // DrawText(hDC, pBuf, -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}
} }
UpdateWindow(); return ; }
|
|