Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VisualC++ & WinApi] часы, есть готовые часы,надо кое что изменить 
V
    Опции темы
Torrero
Дата 28.5.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Итак изначально имеем вот это :
Код
#include "windows.h"
#include "math.h"
#include <time.h>
#include <conio.h>
#define TIMER_SEC 1


static COLORREF arrowColors[3] = {RGB(0,255,0), RGB(0, 0, 255), RGB(255, 0, 0)};
static char* MONTH[12] ={" January", " February", " March", " April", " May", " June", " July", " August", " September", " October", " November", " December"};
int xCen;
int yCen;
POINT point;
int angle[3];
BOOL flag = true;

POINT RotatePoint(POINT point, int angle)
{
    POINT tempPoint;
    tempPoint.x = (point.x - xCen)*cos(2*3.14159 * angle / 360) - (point.y - yCen)*sin(2*3.14159 * angle / 360) + xCen;
    tempPoint.y = (point.x  - xCen)*sin(2*3.14159 * angle / 360) + (point.y - yCen)*cos(2*3.14159 * angle / 360) + yCen;
    return tempPoint;
}

void DrawArrows(HDC hdc, int angle[]);

void DrawClock(HDC hdc)
{
    HBRUSH hBrush;
    LOGBRUSH lBrush;
    char digit[4];

    SetBkMode(hdc, TRANSPARENT);

    lBrush.lbStyle = BS_SOLID;
    lBrush.lbColor = RGB(255, 100, 55);
    hBrush = CreateBrushIndirect(&lBrush);
    SelectObject(hdc, hBrush);
    Ellipse(hdc, xCen-150, yCen-150, xCen+150, yCen+150);
    SelectObject(hdc, (HBRUSH)GetStockObject(LTGRAY_BRUSH));
    Ellipse(hdc, xCen-140, yCen-140, xCen+140, yCen+140);

    for(int i = 0; i < 360; i += 6)
    {
        point.x = xCen;
        point.y = yCen - 130;
        point = RotatePoint(point, i);
        if(i % 5 && i!=0)
        {
            lBrush.lbColor = RGB(255, 255, 100);
            hBrush = CreateBrushIndirect(&lBrush);
            SelectObject(hdc, hBrush);
            Ellipse(hdc, point.x-3, point.y-3, point.x+3, point.y+3);
        }
        else
            if(i%90 == 0)
            {

                SetTextColor(hdc, RGB(0,0,0));//RGB(255, 200, 0));
                if(i == 0)
                    TextOut(hdc, point.x-9, point.y-8, digit, wsprintf(digit, "%d", 12));
                else
                     TextOut(hdc, point.x-6, point.y-6, digit, wsprintf(digit, "%d", i/30));
                SetTextColor(hdc, RGB(0, 0, 0));
            }
            else
            {
                lBrush.lbColor = RGB(0, 255, 200);
                hBrush = CreateBrushIndirect(&lBrush);
                SelectObject(hdc, hBrush);
                Ellipse(hdc, point.x-5, point.y-5, point.x+5, point.y+5);
            }
    }

    DeleteObject(hBrush);
}

void DrawArrows(HDC hdc, int angle[])
{
    HPEN hPen;
    HBRUSH hBrush;
    point.x = xCen;

    for(int i = 0 ; i < 3; i++)
    {
        point.y = yCen - (90+i*20);
        if (i == 1) {
              /*hBrush=CreateSolidBrush(RGB(0,255,255));
              SelectObject(hdc,hBrush);
              Ellipse(hdc,0,0,50,50);
              DeleteObject(hBrush);*/
        }
        hPen = CreatePen(PS_SOLID, 10/pow(2.5,(double) i), arrowColors[i]);
        SelectObject(hdc, hPen);
        MoveToEx(hdc, xCen, yCen, NULL);
        LineTo(hdc, RotatePoint(point, angle[i]).x, RotatePoint(point, angle[i]).y);

        SelectObject(hdc, (HPEN)GetStockObject(BLACK_PEN));
        SelectObject(hdc, (HBRUSH)GetStockObject(GRAY_BRUSH));
        Ellipse(hdc, xCen-15, yCen-15, xCen+15, yCen+15);
    }
    DeleteObject(hPen);
}


LRESULT CALLBACK windowProc(HWND hWin, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
    HDC hDevCon;
    HBRUSH hBrush;
    LOGBRUSH myBrush;
    SYSTEMTIME sysTime;
    PAINTSTRUCT paintStruct;
    RECT rect;
    int i;
    time_t t;
    char Day[80];
    char digit[10];
    char *WeekDay[] =
    {
        "Duminica", "Luni", "Marti", "Miercuri","Joi" ,"Vineri", "Sambata"
    };
    tm *dt;
    time(&t);
    dt = localtime(&t);
    GetSystemTime(&sysTime);
    GetClientRect(hWin, &rect);
    myBrush.lbStyle = BS_PATTERN ;
    //myBrush.lbHatch = HS_VERTICAL;
    myBrush.lbColor = BLACK_BRUSH;

    hBrush = CreateBrushIndirect(&myBrush);

    switch (uMessage)
    {
        case WM_CREATE:
            angle[0] = (sysTime.wHour*30) % 360;
            angle[1] = sysTime.wMinute*6;
            angle[2] = sysTime.wSecond*6;
            return 0;

        case WM_SIZE:
            xCen = LOWORD(lParam)/2;
            yCen = HIWORD(lParam)/2;
            return 0;

        case WM_PAINT:
            hDevCon = BeginPaint(hWin, &paintStruct);
            //--------------------BACKGROUND--------------------------------------
            SelectObject(hDevCon, hBrush);
            Rectangle(hDevCon, rect.left, rect.top, rect.right, rect.bottom);
            DrawClock(hDevCon);

            //--------------------DATE--------------------------------------------
            myBrush.lbStyle = BS_SOLID;
            myBrush.lbColor = RGB(250, 250, 0);
            hBrush = CreateBrushIndirect(&myBrush);
            SelectObject(hDevCon, hBrush);
            Rectangle(hDevCon, xCen-45, yCen-70, xCen+45, yCen-50);
            //TextOut(hDevCon, xCen-50, yCen-47, MONTH[sysTime.wMonth-1], strlen(MONTH[sysTime.wMonth-1]));
            TextOut(hDevCon, xCen-35, yCen-68, digit, wsprintf(digit, "%02d.", sysTime.wDay));
            TextOut(hDevCon, xCen-15, yCen-68, digit, wsprintf(digit, "%02d.", sysTime.wMonth));
            TextOut(hDevCon, xCen+5, yCen-68, digit, wsprintf(digit, "%02d", sysTime.wYear));
            i = wsprintf(Day,"%s", WeekDay[dt->tm_wday]);
            TextOut(hDevCon, xCen+55, yCen-7, Day, i);
            //TextOut(hDevCon, xCen+5, yCen-68, digit, wsprintf(Day,"%s", WeekDay[dt->tm_wday]));

            //-------------------Digital clock-----------------------------------
            Rectangle(hDevCon, xCen-35, yCen+65, xCen+35, yCen+85);
            TextOut(hDevCon, xCen-30, yCen+68, digit, wsprintf(digit, "%02d:%02d:%02d", sysTime.wHour, sysTime.wMinute, sysTime.wSecond));

            SelectObject(hDevCon, (HBRUSH)GetStockObject(WHITE_BRUSH));
            DrawArrows(hDevCon, angle);

            EndPaint(hWin, &paintStruct);
            return 0;

        case WM_TIMER:
                angle[0]= (sysTime.wHour*30)%360;
                angle[1]= sysTime.wMinute*6;
                angle[2]= sysTime.wSecond*6;
                InvalidateRect(hWin, &rect, TRUE);
            return 0;

        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;

     default:
         return DefWindowProc(hWin, uMessage, wParam, lParam);
    }
    DeleteObject(hBrush);
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
    WNDCLASSEX windowClass;
    HWND hWin;
    char applicationName[] = "Work with the system timer";
    char caption[] = "Laboratory work №6";
    MSG message;

    windowClass.cbClsExtra = 0;
    windowClass.cbSize = sizeof(windowClass);
    windowClass.cbWndExtra = 0;
    windowClass.hbrBackground = (HBRUSH)COLOR_WINDOW;
    windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowClass.hIcon = LoadIcon(NULL, IDI_INFORMATION);
    windowClass.hIconSm = LoadIcon(NULL, IDI_INFORMATION);
    windowClass.hInstance = hInstance;
    windowClass.lpfnWndProc = windowProc;
    windowClass.lpszClassName = applicationName;
    windowClass.lpszMenuName = 0;
    windowClass.style = CS_HREDRAW | CS_VREDRAW;

    RegisterClassEx(&windowClass);
    hWin = CreateWindow(applicationName, caption, WS_TILEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
    ShowWindow(hWin, SW_SHOWNORMAL);
    UpdateWindow(hWin);

    SetTimer(hWin, TIMER_SEC, 1000, NULL);
    while(GetMessage(&message, NULL, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    KillTimer(hWin, TIMER_SEC);
    return message.wParam;
}

user posted image
Все работает прекрасно но надо сделать так чтобы когда секундная стрелка перескакивала на следующий кружок чтобы он загорался(красился в черный цвет),а когда она переключается на следующий то предыдущий изменяет цвет обратно какой был изначально и так далее...надеюсь понятно объяснил...Помогите пожалуйста,а то я понятия не имею как это сделать...

И еще одна задачка посложнее: короче имеем вот это:


Код

#include "windows.h"
#include "math.h"

const int step=5;
BOOL fOpenMouth = true;
BOOL fRMove;
BOOL fStart = false;
BOOL fRotate = false;
COLORREF myColor = RGB(255, 255, 255);
int xCen;
int yCen;
struct
{
    long buttonStyle;
    char* buttonCaption;
} myButton[11] =
{
    BS_GROUPBOX, "Orientation",
    BS_AUTORADIOBUTTON, "Left",
    BS_AUTORADIOBUTTON, "Center",
    BS_AUTORADIOBUTTON, "Right",
    BS_GROUPBOX, "Color",
    BS_AUTOCHECKBOX, "Red",
    BS_AUTOCHECKBOX, "Yellow",
    BS_AUTOCHECKBOX, "Blue",
    BS_GROUPBOX, "Movement",
    BS_DEFPUSHBUTTON, "Go Around",
    BS_DEFPUSHBUTTON, "Stop"
};

void ClearScreen(HDC hdc, RECT rect)
{
    SelectObject(hdc, (HBRUSH)GetStockObject(WHITE_BRUSH));
    SelectObject(hdc, (HPEN)GetStockObject(WHITE_PEN));
    Rectangle(hdc, 150, 10, rect.right-10, rect.bottom-10);
    SelectObject(hdc, (HPEN)GetStockObject(BLACK_PEN));
}
POINT RotatePoint(POINT point, int angle)
{
    POINT tempPoint;
    tempPoint.x = (point.x - xCen)*cos(2*3.14159 * angle / 360) - (point.y - yCen)*sin(2*3.14159 * angle / 360) + xCen;
    tempPoint.y = (point.x  - xCen)*sin(2*3.14159 * angle / 360) + (point.y - yCen)*cos(2*3.14159 * angle / 360) + yCen;
    return tempPoint;
}
class bigHead
{
   public:
    POINT centerPoint;

     bigHead()
     {
         centerPoint.x = 220;
         centerPoint.y = 240;
     }
     //----------------------------------------------------------------------
     void DrawBigHead(HDC hdc, COLORREF color)
     {
         HBRUSH hBrush;
         LOGBRUSH lBrush;

         lBrush.lbStyle = BS_SOLID;
         lBrush.lbColor = color;
         hBrush = CreateBrushIndirect(&lBrush);
         SelectObject(hdc, hBrush);

         if (fOpenMouth)
         {
             if (fRMove)
                 rDrawWithOpenMouth(hdc);
             else
                 lDrawWithOpenMouth(hdc);
         }
         else
         {
             if (fRMove)
                 rDrawWithoutOpenMouth(hdc);
             else
                 lDrawWithoutOpenMouth(hdc);
         }
         SelectObject(hdc, (HBRUSH)GetStockObject(WHITE_BRUSH));
     }
     //----------------------------------------------------------------------
     void rDrawWithoutOpenMouth(HDC hdc)
     {
         Ellipse(hdc, centerPoint.x-25, centerPoint.y-25, centerPoint.x+25, centerPoint.y+25);   //Draw BigHead
         //Draw BigHead's Smile
         MoveToEx(hdc, centerPoint.x+25, centerPoint.y, NULL);
         LineTo(hdc, centerPoint.x, centerPoint.y);
         SelectObject(hdc, (HBRUSH)GetStockObject(BLACK_BRUSH));
         Ellipse(hdc, centerPoint.x-2, centerPoint.y-20, centerPoint.x+10, centerPoint.y-10);  //Draw BigHead's eye
     }
                   //----------------------------------------------------------------------
     void rDrawWithOpenMouth(HDC hdc)
     {
         Pie(hdc, centerPoint.x-25, centerPoint.y-25, centerPoint.x+25, centerPoint.y+25, centerPoint.x+50, centerPoint.y-25, centerPoint.x+50, centerPoint.y+25); //Draw BigHead Open Mouth
                                    SelectObject(hdc, (HBRUSH)GetStockObject(BLACK_BRUSH));
         Ellipse(hdc, centerPoint.x-2, centerPoint.y-20, centerPoint.x+10, centerPoint.y-10);  //Draw BigHead's eye
         Arc(hdc, centerPoint.x-10, centerPoint.y-10, centerPoint.x+5, centerPoint.y+5, centerPoint.x-15, centerPoint.y-25, centerPoint.x-15, centerPoint.y+25);
     }
     //----------------------------------------------------------------------
     void lDrawWithoutOpenMouth(HDC hdc)
     {
         Ellipse(hdc, centerPoint.x-25, centerPoint.y-25, centerPoint.x+25, centerPoint.y+25);   //Draw BigHead
         SelectObject(hdc, (HBRUSH)GetStockObject(BLACK_BRUSH));
         Ellipse(hdc, centerPoint.x-7, centerPoint.y-20, centerPoint.x+5, centerPoint.y-10);  //Draw BigHead's eye
         //Draw BigHead's Smile
         MoveToEx(hdc, centerPoint.x-25, centerPoint.y, NULL);
         LineTo(hdc, centerPoint.x, centerPoint.y);
     }
     //----------------------------------------------------------------------
     void lDrawWithOpenMouth(HDC hdc)
     {
         Pie(hdc, centerPoint.x-25, centerPoint.y-25, centerPoint.x+25, centerPoint.y+25, centerPoint.x-40, centerPoint.y+25, centerPoint.x-40, centerPoint.y-25); //Draw BigHead Open Mouth
         SelectObject(hdc, (HBRUSH)GetStockObject(BLACK_BRUSH));
         Ellipse(hdc, centerPoint.x-7, centerPoint.y-20, centerPoint.x+5, centerPoint.y-10);  //Draw BigHead's eye
         Arc(hdc, centerPoint.x-2, centerPoint.y-10, centerPoint.x+13, centerPoint.y+5, centerPoint.x+15, centerPoint.y+25, centerPoint.x+15, centerPoint.y-25);
     }
     //----------------------------------------------------------------------
     void DrawPhotoBigHead(HDC hdc, COLORREF color)
     {
         HBRUSH hBrush;
         LOGBRUSH lBrush;

         lBrush.lbStyle = BS_SOLID;
         lBrush.lbColor = color;
         hBrush = CreateBrushIndirect(&lBrush);
         SelectObject(hdc, hBrush);

         Ellipse(hdc, centerPoint.x-25, centerPoint.y-25, centerPoint.x+25, centerPoint.y+25);   //Draw BigHead
                                     SelectObject(hdc, (HBRUSH)GetStockObject(BLACK_BRUSH));
         Ellipse(hdc, centerPoint.x-15, centerPoint.y-20, centerPoint.x-3, centerPoint.y-10);  //Draw BigHead's Left eye
         Ellipse(hdc, centerPoint.x, centerPoint.y-20, centerPoint.x+12, centerPoint.y-10);  //Draw BigHead's Right eye
         //Draw BigHead's Smile
         Arc(hdc, centerPoint.x-15, centerPoint.y-15, centerPoint.x+15, centerPoint.y+15, centerPoint.x-25, centerPoint.y+5, centerPoint.x+25, centerPoint.y+5);
         SelectObject(hdc, (HBRUSH)GetStockObject(WHITE_BRUSH));
     }
};
int xChar;
int yChar;
bigHead BigHead;
LRESULT CALLBACK windowProc(HWND hWin, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT paintStruct;
    RECT rectangle;
    static HWND hButton[11];
    TEXTMETRIC txtMetric;
    int displacement = 0;
    GetClientRect(hWin, &rectangle);
    switch (uMessage)
    {
    case WM_CREATE:
        SetTimer(hWin, 1, 100, NULL);
        hdc = GetDC(hWin);

        SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT));
        GetTextMetrics(hdc, &txtMetric);
        xChar = txtMetric.tmAveCharWidth;
        yChar = txtMetric.tmHeight;
        ReleaseDC(hWin, hdc);
        for(int i = 0; i < 11; i++)
        {
            if(i%4 != 0)
            {
                hButton[i] = CreateWindow("button", myButton[i].buttonCaption, WS_CHILD | WS_VISIBLE | myButton[i].buttonStyle,
                                                                                                 2*xChar, yChar*(1+2*i)+displacement, 10*xChar, yChar*7/4,
                                          hWin, (HMENU)i, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
            }
            else
            {
                if(i) displacement += 2*xChar;
                             hButton[i] = CreateWindow("button", myButton[i].buttonCaption, WS_CHILD | WS_VISIBLE |
                                                                                                 myButton[i].buttonStyle, xChar, yChar*(1+2*i)+displacement, 15*xChar, yChar*35/4,
                                          hWin, (HMENU)i, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
            }
        }
        return 0;
    case WM_SIZE:
                                   xCen = 140 + (LOWORD(lParam)-150)/2;
        yCen = 20 + (HIWORD(lParam)-10)/2;
        return 0;
    case WM_PAINT:
        hdc = BeginPaint(hWin, &paintStruct);
        SetBkMode(hdc, TRANSPARENT);
        SetBkColor(hdc, GetSysColor(COLOR_BTNFACE));
        SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
        ClearScreen(hdc, rectangle);
        EndPaint(hWin, &paintStruct);
        return 0;
    case WM_COMMAND:
        fStart = true;
        hdc = GetDC(hWin);
        switch(LOWORD(wParam))
        {
                         case 1:
                ClearScreen(hdc, rectangle);
                fRMove = true;
                BigHead.DrawBigHead(hdc, myColor);
                break;
            case 2:
                ClearScreen(hdc, rectangle);
                BigHead.DrawPhotoBigHead(hdc, myColor);
                break;
            case 3:
                ClearScreen(hdc, rectangle);
                fRMove = false;
                BigHead.DrawBigHead(hdc, myColor);
                break;
                           case 5:
                if(SendMessage(hButton[5], BM_GETCHECK, 0, 0))
                {
                    EnableWindow(hButton[6], false);
                                                                           EnableWindow(hButton[7], false);
                    myColor = RGB(255, 0, 0);
                }
                else
                {
                    EnableWindow(hButton[6], true);
                                                                           EnableWindow(hButton[7], true);
                     myColor = RGB(255, 255, 255);
                }
                break;
            case 6:
                if(SendMessage(hButton[6], BM_GETCHECK, 0, 0))
                {
                    EnableWindow(hButton[5], false);
                                                                           EnableWindow(hButton[7], false);
                     myColor = RGB(255, 255, 0);
                }
                else
                {
                    EnableWindow(hButton[5], true);
                                                                           EnableWindow(hButton[7], true);
                                                                           myColor = RGB(255, 255, 255);
                }
                break;
            case 7:
                if(SendMessage(hButton[7], BM_GETCHECK, 0, 0))
                {
                    EnableWindow(hButton[5], false);
                                                                           EnableWindow(hButton[6], false);
                    myColor = RGB(0, 168, 255);
                }
                else
                {
                    EnableWindow(hButton[5], true);
                                                                           EnableWindow(hButton[6], true);
                     myColor = RGB(255, 255, 255);
                }
                break;
            case 9:
                fRotate = true;
                break;
                                                     case 10:
                fRotate = false;
                break;
        }
        ReleaseDC(hWin, hdc);
        return 0;
    case WM_TIMER:
        if(fStart)
        {
            hdc = GetDC(hWin);
            if(fRotate)
                BigHead.centerPoint = RotatePoint(BigHead.centerPoint, 3);
             ClearScreen(hdc, rectangle);
            if(fOpenMouth)
             fOpenMouth = false;
            else
             fOpenMouth = true;

            if(!SendMessage(hButton[2], BM_GETCHECK, 0, 0))
                                           BigHead.DrawBigHead(hdc, myColor);
            else
                BigHead.DrawPhotoBigHead(hdc, myColor);
            ReleaseDC(hWin, hdc);
        }
        return 0;
    case WM_DESTROY:
        KillTimer(hWin, 1);
        PostQuitMessage(0);
        return 0;
    default:
        return DefWindowProc(hWin, uMessage, wParam, lParam);
    }
    return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
    WNDCLASSEX windowClass;
    HWND hWin;
    char applicationName[] = "Buttons, boxes, etc.";
    char caption[] = "Laboratory work №7";
    MSG message;
    windowClass.cbClsExtra = 0;
    windowClass.cbSize = sizeof(windowClass);
    windowClass.cbWndExtra = 0;
    windowClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
    windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowClass.hIcon = LoadIcon(NULL, IDI_INFORMATION);
    windowClass.hIconSm = LoadIcon(NULL, IDI_INFORMATION);
    windowClass.hInstance = hInstance;
    windowClass.lpfnWndProc = windowProc;
    windowClass.lpszClassName = applicationName;
    windowClass.lpszMenuName = 0;
    windowClass.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClassEx(&windowClass);
    hWin = CreateWindow(applicationName, caption, WS_TILEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 630, 480, NULL, NULL, hInstance, NULL);
    ShowWindow(hWin, SW_SHOWNORMAL);
    UpdateWindow(hWin);
    while(GetMessage(&message, NULL, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    return message.wParam;
}


user posted image
Нужно соединить часы и то что чуть выше и в результате должно получится чтото вроде этого: возможность выбирать какие стрелки отображаются(например только часы и секунды без минут,или все 3,или вообще ни одной) то есть чтобы галочкой выбрать можно было(на месте выбора цвета во 2-ой проге)...А на месте выбора направления(где можно только одну из трех выбрать) нужно тоже сделать возможность выбора стрелок,но на этот раз только одной из трех.ПРИМЕЧАНИЕ: в любом случае,отображается или нет секундная стрелка, кружочки должны загоратся как при норм. циркуляции стрелки, то есть стрелка типа ходит как всегда но при этом на экране она не отображается... 

БУДУ БЛАГОДАРЕН ЗА ЛЮБУЮ ПОМОЩЬ!!!


PM MAIL   Вверх
ama_kid
Дата 28.5.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 16
Всего: 95



Цитата(Torrero @  28.5.2008,  21:30 Найти цитируемый пост)
надо сделать так чтобы когда секундная стрелка перескакивала на следующий кружок чтобы он загорался(красился в черный цвет),а когда она переключается на следующий то предыдущий изменяет цвет обратно какой был изначально и так далее...
Первую часть - сделал
Код
#include "windows.h"
#include "math.h"
#include <time.h>
#include <conio.h>
#define TIMER_SEC 1
static COLORREF arrowColors[3] = {RGB(0,255,0), RGB(0, 0, 255), RGB(255, 0, 0)};
static char* MONTH[12] ={" January", " February", " March", " April", " May", " June", " July", " August", " September", " October", " November", " December"};
int xCen;
int yCen;
POINT point;
int angle[3];
BOOL flag = true;
POINT RotatePoint(POINT point, int angle)
{
    POINT tempPoint;
    tempPoint.x = (point.x - xCen)*cos(2*3.14159 * angle / 360) - (point.y - yCen)*sin(2*3.14159 * angle / 360) + xCen;
    tempPoint.y = (point.x  - xCen)*sin(2*3.14159 * angle / 360) + (point.y - yCen)*cos(2*3.14159 * angle / 360) + yCen;
    return tempPoint;
}
void DrawArrows(HDC hdc, int angle[]);

void DrawClock(HDC hdc, int angle[])
{
    HBRUSH hBrush;
    LOGBRUSH lBrush;
    char digit[4];
    SetBkMode(hdc, TRANSPARENT);
    lBrush.lbStyle = BS_SOLID;
    lBrush.lbColor = RGB(255, 100, 55);
    hBrush = CreateBrushIndirect(&lBrush);
    SelectObject(hdc, hBrush);
    Ellipse(hdc, xCen-150, yCen-150, xCen+150, yCen+150);
    SelectObject(hdc, (HBRUSH)GetStockObject(LTGRAY_BRUSH));
    Ellipse(hdc, xCen-140, yCen-140, xCen+140, yCen+140);
    DeleteObject(hBrush);
    for(int i = 0; i < 360; i += 6)
    {
        point.x = xCen;
        point.y = yCen - 130;
        point = RotatePoint(point, i);
        if(i % 5 && i!=0)
        {
            if(i!=angle[2]) lBrush.lbColor = RGB(255, 255, 100);
                            else lBrush.lbColor = RGB(0, 0, 0);
            hBrush = CreateBrushIndirect(&lBrush);
            SelectObject(hdc, hBrush);
            Ellipse(hdc, point.x-3, point.y-3, point.x+3, point.y+3);
            DeleteObject(hBrush);
       }
        else
            if(i%90 == 0)
            {
                SetTextColor(hdc, RGB(0,0,0));//RGB(255, 200, 0));
                if(i == 0)
                    TextOut(hdc, point.x-9, point.y-8, digit, wsprintf(digit, "%d", 12));
                else
                     TextOut(hdc, point.x-6, point.y-6, digit, wsprintf(digit, "%d", i/30));
                SetTextColor(hdc, RGB(0, 0, 0));
            }
            else
            {
                if(i!=angle[2]) lBrush.lbColor = RGB(0, 255, 200);
                                else lBrush.lbColor = RGB(0, 0, 0);
                hBrush = CreateBrushIndirect(&lBrush);
                SelectObject(hdc, hBrush);
                Ellipse(hdc, point.x-5, point.y-5, point.x+5, point.y+5);
                DeleteObject(hBrush);
            }
    }
//    DeleteObject(hBrush);
}
void DrawArrows(HDC hdc, int angle[])
{
    HPEN hPen;
    HBRUSH hBrush;
    point.x = xCen;
    for(int i = 0 ; i < 3; i++)
    {
        point.y = yCen - (90+i*20);
        if (i == 1) {
              /*hBrush=CreateSolidBrush(RGB(0,255,255));
              SelectObject(hdc,hBrush);
              Ellipse(hdc,0,0,50,50);
              DeleteObject(hBrush);*/
        }
        hPen = CreatePen(PS_SOLID, 10/pow(2.5,(double) i), arrowColors[i]);
        SelectObject(hdc, hPen);
        MoveToEx(hdc, xCen, yCen, NULL);
        LineTo(hdc, RotatePoint(point, angle[i]).x, RotatePoint(point, angle[i]).y);
        SelectObject(hdc, (HPEN)GetStockObject(BLACK_PEN));
        SelectObject(hdc, (HBRUSH)GetStockObject(GRAY_BRUSH));
        Ellipse(hdc, xCen-15, yCen-15, xCen+15, yCen+15);
        DeleteObject(hPen);
    }
}
LRESULT CALLBACK windowProc(HWND hWin, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
    HDC hDevCon;
    HBRUSH hBrush;
    LOGBRUSH myBrush;
    SYSTEMTIME sysTime;
    PAINTSTRUCT paintStruct;
    RECT rect;
    int i;
    time_t t;
    char Day[80];
    char digit[10];
    char *WeekDay[] =
    {
        "Duminica", "Luni", "Marti", "Miercuri","Joi" ,"Vineri", "Sambata"
    };
    tm *dt;
    myBrush.lbStyle = BS_PATTERN ;
    //myBrush.lbHatch = HS_VERTICAL;
    myBrush.lbColor = BLACK_BRUSH;
    //hBrush = CreateBrushIndirect(&myBrush);
    switch (uMessage)
    {
        case WM_CREATE:
            return 0;
        case WM_SIZE:
            xCen = LOWORD(lParam)/2;
            yCen = HIWORD(lParam)/2;
            return 0;
        case WM_PAINT:
            time(&t);
            dt = localtime(&t);
            GetSystemTime(&sysTime);
            angle[0]= (sysTime.wHour*30)%360 + (30*sysTime.wMinute)/60;
            angle[1]= sysTime.wMinute*6;
            angle[2]= sysTime.wSecond*6;

            hDevCon = BeginPaint(hWin, &paintStruct);
            GetClientRect(hWin, &rect);
            //--------------------BACKGROUND--------------------------------------
            SelectObject(hDevCon, hBrush);
            Rectangle(hDevCon, rect.left, rect.top, rect.right, rect.bottom);
            DrawClock(hDevCon, angle);
            //--------------------DATE--------------------------------------------
            myBrush.lbStyle = BS_SOLID;
            myBrush.lbColor = RGB(250, 250, 0);
            hBrush = CreateBrushIndirect(&myBrush);
            SelectObject(hDevCon, hBrush);
            Rectangle(hDevCon, xCen-45, yCen-70, xCen+45, yCen-50);
            //TextOut(hDevCon, xCen-50, yCen-47, MONTH[sysTime.wMonth-1], strlen(MONTH[sysTime.wMonth-1]));
            TextOut(hDevCon, xCen-35, yCen-68, digit, wsprintf(digit, "%02d.", sysTime.wDay));
            TextOut(hDevCon, xCen-15, yCen-68, digit, wsprintf(digit, "%02d.", sysTime.wMonth));
            TextOut(hDevCon, xCen+5, yCen-68, digit, wsprintf(digit, "%02d", sysTime.wYear));
            i = wsprintf(Day,"%s", WeekDay[dt->tm_wday]);
            TextOut(hDevCon, xCen+55, yCen-7, Day, i);
            //TextOut(hDevCon, xCen+5, yCen-68, digit, wsprintf(Day,"%s", WeekDay[dt->tm_wday]));
            //-------------------Digital clock-----------------------------------
            Rectangle(hDevCon, xCen-35, yCen+65, xCen+35, yCen+85);
            TextOut(hDevCon, xCen-30, yCen+68, digit, wsprintf(digit, "%02d:%02d:%02d", sysTime.wHour, sysTime.wMinute, sysTime.wSecond));
            SelectObject(hDevCon, (HBRUSH)GetStockObject(WHITE_BRUSH));
            DrawArrows(hDevCon, angle);
            DeleteObject(hBrush);
            EndPaint(hWin, &paintStruct);
            return 0;
        case WM_ERASEBKGND: return 1; break;
        case WM_TIMER:
                GetClientRect(hWin, &rect);
                InvalidateRect(hWin, &rect, TRUE);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
     default:
         return DefWindowProc(hWin, uMessage, wParam, lParam);
    }
    //DeleteObject(hBrush);
    return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
    WNDCLASSEX windowClass;
    HWND hWin;
    char applicationName[] = "Work with the system timer";
    char caption[] = "Laboratory work ¹6";
    MSG message;
    windowClass.cbClsExtra = 0;
    windowClass.cbSize = sizeof(windowClass);
    windowClass.cbWndExtra = 0;
    windowClass.hbrBackground = (HBRUSH)COLOR_WINDOW;
    windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowClass.hIcon = LoadIcon(NULL, IDI_INFORMATION);
    windowClass.hIconSm = LoadIcon(NULL, IDI_INFORMATION);
    windowClass.hInstance = hInstance;
    windowClass.lpfnWndProc = windowProc;
    windowClass.lpszClassName = applicationName;
    windowClass.lpszMenuName = 0;
    windowClass.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClassEx(&windowClass);
    hWin = CreateWindow(applicationName, caption, WS_TILEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
    ShowWindow(hWin, SW_SHOWNORMAL);
    UpdateWindow(hWin);
    SetTimer(hWin, TIMER_SEC, 1000, NULL);
    while(GetMessage(&message, NULL, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    KillTimer(hWin, TIMER_SEC);
    return message.wParam;
}
Рекомендую следить за утечками памяти - в твоем варианте они были чудовищными, я вроде все почистил. Ну и немного оптимизировал код в паре мест... 
Второй уже времени нет делать, может завтра посмотрю...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Torrero
Дата 29.5.2008, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Спасибо тебе огромное!!! smile 
насчет утечек память тоже спасибо!пойду проанализируюsmile

Блин возник другой вопрос по теме:
Насчет флажков...Допустим имеем 3 флажка,когда активируем один из них то делаем проверку:
Код
if (SendMessage(hButton[1], BM_GETCHECK, 0, 0)) {
//блаблабла
}
 
но как сделать чтобы когда активируешь один чтобы он проверял активированы ли остальные 2?
Т.е. пример:имеем аналоговые часы и сбоку 3 флажка, когда активируешь один то исчезает сек. стрелка,когда 2 то исчезает сек. и минутная стрелка и т.д.
у меня пока не получается сделать,они исчезают по очереди...

Подскажите плиз...
з.ы. надеюсь я понятно выразился...

Это сообщение отредактировал(а) Torrero - 29.5.2008, 10:40
PM MAIL   Вверх
ama_kid
Дата 29.5.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 16
Всего: 95



Цитата(Torrero @  29.5.2008,  07:04 Найти цитируемый пост)
у меня пока не получается сделать,они исчезают по очереди...
если честно - не совсем понял, что у тебя не получается. Посмотри как я сделал, может устроит...
Код

#include "windows.h"
#include "math.h"
#include <time.h>
#include <conio.h>
#define TIMER_SEC 1
#define RECT_LEFT_BORDER 150
#define BUTTONS_COUNT 8
struct
{
    long buttonStyle;
    char* buttonCaption;
} myButton[BUTTONS_COUNT] =
{
    BS_GROUPBOX, "Orientation",
    BS_AUTORADIOBUTTON, "Only Sec",
    BS_AUTORADIOBUTTON, "Only Min",
    BS_AUTORADIOBUTTON, "Only Hour",
    BS_GROUPBOX, "Color",
    BS_AUTOCHECKBOX, "Show Sec",
    BS_AUTOCHECKBOX, "Show Min",
    BS_AUTOCHECKBOX, "Show Hour"
};
int xChar;
int yChar;
bool flShowSec = true;
bool flShowMin = true;
bool flShowHour = true;

static COLORREF arrowColors[3] = {RGB(0,255,0), RGB(0, 0, 255), RGB(255, 0, 0)};
static char* MONTH[12] ={" January", " February", " March", " April", " May", " June", " July", " August", " September", " October", " November", " December"};
int xCen;
int yCen;
POINT point;
int angle[3];
BOOL flag = true;
POINT RotatePoint(POINT point, int angle)
{
    POINT tempPoint;
    tempPoint.x = (point.x - xCen)*cos(2*3.14159 * angle / 360) - (point.y - yCen)*sin(2*3.14159 * angle / 360) + xCen;
    tempPoint.y = (point.x  - xCen)*sin(2*3.14159 * angle / 360) + (point.y - yCen)*cos(2*3.14159 * angle / 360) + yCen;
    return tempPoint;
}
void DrawArrows(HDC hdc, int angle[]);
void DrawClock(HDC hdc, int angle[])
{
    HBRUSH hBrush;
    LOGBRUSH lBrush;
    char digit[4];
    SetBkMode(hdc, TRANSPARENT);
    lBrush.lbStyle = BS_SOLID;
    lBrush.lbColor = RGB(255, 100, 55);
    hBrush = CreateBrushIndirect(&lBrush);
    SelectObject(hdc, hBrush);
    Ellipse(hdc, xCen-150, yCen-150, xCen+150, yCen+150);
    SelectObject(hdc, (HBRUSH)GetStockObject(LTGRAY_BRUSH));
    Ellipse(hdc, xCen-140, yCen-140, xCen+140, yCen+140);
    DeleteObject(hBrush);
    for(int i = 0; i < 360; i += 6)
    {
        point.x = xCen;
        point.y = yCen - 130;
        point = RotatePoint(point, i);
        if(i % 5 && i!=0)
        {
            if(i!=angle[2]) lBrush.lbColor = RGB(255, 255, 100);
                            else lBrush.lbColor = RGB(0, 0, 0);
            hBrush = CreateBrushIndirect(&lBrush);
            SelectObject(hdc, hBrush);
            Ellipse(hdc, point.x-3, point.y-3, point.x+3, point.y+3);
            DeleteObject(hBrush);
       }
        else
            if(i%90 == 0)
            {
                SetTextColor(hdc, RGB(0,0,0));//RGB(255, 200, 0));
                if(i == 0)
                    TextOut(hdc, point.x-9, point.y-8, digit, wsprintf(digit, "%d", 12));
                else
                     TextOut(hdc, point.x-6, point.y-6, digit, wsprintf(digit, "%d", i/30));
                SetTextColor(hdc, RGB(0, 0, 0));
            }
            else
            {
                if(i!=angle[2]) lBrush.lbColor = RGB(0, 255, 200);
                                else lBrush.lbColor = RGB(0, 0, 0);
                hBrush = CreateBrushIndirect(&lBrush);
                SelectObject(hdc, hBrush);
                Ellipse(hdc, point.x-5, point.y-5, point.x+5, point.y+5);
                DeleteObject(hBrush);
            }
    }
//    DeleteObject(hBrush);
}
void DrawArrows(HDC hdc, int angle[])
{
    HPEN hPen;
    HBRUSH hBrush;
    point.x = xCen;
    for(int i = 0 ; i < 3; i++)
    {
        point.y = yCen - (90+i*20);
        if (i == 1) {
              /*hBrush=CreateSolidBrush(RGB(0,255,255));
              SelectObject(hdc,hBrush);
              Ellipse(hdc,0,0,50,50);
              DeleteObject(hBrush);*/
        }
        hPen = CreatePen(PS_SOLID, 10/pow(2.5,(double) i), arrowColors[i]);
        SelectObject(hdc, hPen);
        MoveToEx(hdc, xCen, yCen, NULL);
        if (
           (flShowSec&&(i==2))||
           (flShowMin&&(i==1))||
           (flShowHour&&(i==0))
           ) LineTo(hdc, RotatePoint(point, angle[i]).x, RotatePoint(point, angle[i]).y);
        SelectObject(hdc, (HPEN)GetStockObject(BLACK_PEN));
        SelectObject(hdc, (HBRUSH)GetStockObject(GRAY_BRUSH));
        Ellipse(hdc, xCen-15, yCen-15, xCen+15, yCen+15);
        DeleteObject(hPen);
    }
}

LRESULT CALLBACK windowProc(HWND hWin, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
    static HWND hButton[11];
    int displacement = 0;
    TEXTMETRIC txtMetric;

    HDC hDevCon;
    HBRUSH hBrush;
    LOGBRUSH myBrush;
    SYSTEMTIME sysTime;
    PAINTSTRUCT paintStruct;
    RECT rect;
    int i;
    time_t t;
    char Day[80];
    char digit[10];
    char *WeekDay[] =
    {
        "Duminica", "Luni", "Marti", "Miercuri","Joi" ,"Vineri", "Sambata"
    };
    tm *dt;
    myBrush.lbStyle = BS_PATTERN ;
    //myBrush.lbHatch = HS_VERTICAL;
    myBrush.lbColor = BLACK_BRUSH;
    //hBrush = CreateBrushIndirect(&myBrush);
    switch (uMessage)
    {
        case WM_CREATE:
          GetTextMetrics(GetDC(hWin), &txtMetric);
          xChar = txtMetric.tmAveCharWidth;
          yChar = txtMetric.tmHeight;
          for(int i = 0; i < BUTTONS_COUNT; i++)
          {
                if(i%4 != 0)
             {
                 hButton[i] = CreateWindow("button", myButton[i].buttonCaption, WS_CHILD | WS_VISIBLE | myButton[i].buttonStyle,
                                          2*xChar, yChar*(1+2*i)+displacement, RECT_LEFT_BORDER - 30, yChar*7/4,
                                          hWin, (HMENU)i, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
                 } else
              {
                 if(i) displacement += 2*xChar;
                 hButton[i] = CreateWindow("button", myButton[i].buttonCaption, WS_CHILD | WS_VISIBLE |
                                           myButton[i].buttonStyle, xChar, yChar*(1+2*i)+displacement, RECT_LEFT_BORDER - 20, yChar*35/4,
                                           hWin, (HMENU)i, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
                 }
            }
            SendMessage(hButton[5], BM_SETCHECK, 1, 0);
            SendMessage(hButton[6], BM_SETCHECK, 1, 0);
            SendMessage(hButton[7], BM_SETCHECK, 1, 0);
            return 0;            
        case WM_SIZE:
            xCen = (LOWORD(lParam)+ RECT_LEFT_BORDER)/2 ;
            yCen = HIWORD(lParam)/2;
            return 0;
        case WM_PAINT:
            time(&t);
            dt = localtime(&t);
            GetLocalTime(&sysTime);
            angle[0]= (sysTime.wHour*30)%360 + (30*sysTime.wMinute)/60;
            angle[1]= sysTime.wMinute*6;
            angle[2]= sysTime.wSecond*6;
            hDevCon = BeginPaint(hWin, &paintStruct);
            GetClientRect(hWin, &rect);
            //--------------------BACKGROUND--------------------------------------
            SelectObject(hDevCon, hBrush);
            Rectangle(hDevCon, rect.left+RECT_LEFT_BORDER, rect.top, rect.right, rect.bottom);
            DrawClock(hDevCon, angle);
            //--------------------DATE--------------------------------------------
            myBrush.lbStyle = BS_SOLID;
            myBrush.lbColor = RGB(250, 250, 0);
            hBrush = CreateBrushIndirect(&myBrush);
            SelectObject(hDevCon, hBrush);
            Rectangle(hDevCon, xCen-45, yCen-70, xCen+45, yCen-50);
            //TextOut(hDevCon, xCen-50, yCen-47, MONTH[sysTime.wMonth-1], strlen(MONTH[sysTime.wMonth-1]));
            TextOut(hDevCon, xCen-35, yCen-68, digit, wsprintf(digit, "%02d.", sysTime.wDay));
            TextOut(hDevCon, xCen-15, yCen-68, digit, wsprintf(digit, "%02d.", sysTime.wMonth));
            TextOut(hDevCon, xCen+5, yCen-68, digit, wsprintf(digit, "%02d", sysTime.wYear));
            i = wsprintf(Day,"%s", WeekDay[dt->tm_wday]);
            TextOut(hDevCon, xCen+55, yCen-7, Day, i);
            //TextOut(hDevCon, xCen+5, yCen-68, digit, wsprintf(Day,"%s", WeekDay[dt->tm_wday]));
            //-------------------Digital clock-----------------------------------
            Rectangle(hDevCon, xCen-35, yCen+65, xCen+35, yCen+85);
            TextOut(hDevCon, xCen-30, yCen+68, digit, wsprintf(digit, "%02d:%02d:%02d", sysTime.wHour, sysTime.wMinute, sysTime.wSecond));
            SelectObject(hDevCon, (HBRUSH)GetStockObject(WHITE_BRUSH));
            DrawArrows(hDevCon, angle);
            DeleteObject(hBrush);
            EndPaint(hWin, &paintStruct);
            return 0;
     case WM_COMMAND:
         switch(LOWORD(wParam))
         {
                case 1:
             case 2:
             case 3:
                       flShowSec = SendMessage(hButton[1], BM_GETCHECK, 0, 0)==BST_CHECKED;
                       flShowMin = SendMessage(hButton[2], BM_GETCHECK, 0, 0)==BST_CHECKED;
                       flShowHour = SendMessage(hButton[3], BM_GETCHECK, 0, 0)==BST_CHECKED;
                       SendMessage(hButton[5],BM_SETCHECK,0,0);
                       SendMessage(hButton[6],BM_SETCHECK,0,0);
                       SendMessage(hButton[7],BM_SETCHECK,0,0);
                    break;
                case 5:
                case 6:
                case 7:
                       flShowSec = SendMessage(hButton[5], BM_GETCHECK, 0, 0)==BST_CHECKED;
                       flShowMin = SendMessage(hButton[6], BM_GETCHECK, 0, 0)==BST_CHECKED;
                       flShowHour = SendMessage(hButton[7], BM_GETCHECK, 0, 0)==BST_CHECKED;
                       SendMessage(hButton[1],BM_SETCHECK,0,0);
                       SendMessage(hButton[2],BM_SETCHECK,0,0);
                       SendMessage(hButton[3],BM_SETCHECK,0,0);
                    break;
           }
           GetClientRect(hWin, &rect);
           InvalidateRect(hWin, &rect, TRUE);        
           return 0;
        case WM_TIMER:
            GetClientRect(hWin, &rect);
            InvalidateRect(hWin, &rect, TRUE);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
     default:
            return DefWindowProc(hWin, uMessage, wParam, lParam);
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
    WNDCLASSEX windowClass;
    HWND hWin;
    char applicationName[] = "Work with the system timer";
    char caption[] = "Laboratory work ¹6";
    MSG message;
    windowClass.cbClsExtra = 0;
    windowClass.cbSize = sizeof(windowClass);
    windowClass.cbWndExtra = 0;
    windowClass.hbrBackground = (HBRUSH)COLOR_WINDOW;
    windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowClass.hIcon = LoadIcon(NULL, IDI_INFORMATION);
    windowClass.hIconSm = LoadIcon(NULL, IDI_INFORMATION);
    windowClass.hInstance = hInstance;
    windowClass.lpfnWndProc = windowProc;
    windowClass.lpszClassName = applicationName;
    windowClass.lpszMenuName = 0;
    windowClass.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClassEx(&windowClass);
    hWin = CreateWindow(applicationName, caption, WS_TILEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 480, 350, NULL, NULL, hInstance, NULL);
    ShowWindow(hWin, SW_SHOWNORMAL);
    UpdateWindow(hWin);
    SetTimer(hWin, TIMER_SEC, 1000, NULL);
    while(GetMessage(&message, NULL, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    KillTimer(hWin, TIMER_SEC);
    return message.wParam;
}



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Torrero
Дата 29.5.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Цитата(ama_kid @ 29.5.2008,  16:01)
Цитата(Torrero @  29.5.2008,  07:04 Найти цитируемый пост)
у меня пока не получается сделать,они исчезают по очереди...
если честно - не совсем понял, что у тебя не получается. Посмотри как я сделал, может устроит...

Спасибо тебе огромное,я даже не знаю как тебя отблагодарить!!!ну точнее знаю тока на вебмани 3 вмз осталось...
А насчет того что ты не понял я не удивляюсь... я спал ночью 20 минут поэтому не совсем адекватен smile 

а вообще я тоже чтото сделал и не получалось только с check box -ом (флажками)...поэтому и спросил... ну по крайней мере попытался...

Еще раз спасибо тебе огромное!!! smile спас мою шкуру
PM MAIL   Вверх
fatedj
Дата 24.11.2009, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.11.2009

Репутация: нет
Всего: нет



Будьте добры виложите готовий проект...очень нужно...тем более реальзовано все очень классно (:
PM MAIL   Вверх
Torrero
Дата 24.11.2009, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Цитата(fatedj @ 24.11.2009,  00:53)
Будьте добры виложите готовий проект...очень нужно...тем более реальзовано все очень классно (:

Вот, держите, повезло что не удаляю лабы за предыдущие курсы.
http://ifolder.ru/15131441
Проект визуал 2005, вроде должен работать
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.