Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Окно с выводом часов 
:(
    Опции темы
endrogen
Дата 17.5.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!

Помогите, пожалуйста, сделать окно в Visual C++ 6.0 с выводом даты и времени в середине окна...

Никак не могу найти API этих функций...

И никак не получается, сделать их обновляемыми,а то они просто отображаются в виде картинки и не меняются...??????????????????????? smile 
PM MAIL   Вверх
almagnit
Дата 17.5.2008, 10:37 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Приведите пример своей работы для дальнейшего корректирования.

ЗЫ:

Не вы, не участники форума не заинтересованы в написании примера программы "с нуля".
PM MAIL ICQ   Вверх
Andrey44
Дата 17.5.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Код

void WINAPI GetLocalTime(
  __out         LPSYSTEMTIME lpSystemTime
);




Чтоб обновлялось в WM_TIMER делаем InvalidateRect(................) 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
endrogen
Дата 17.5.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как код будет выглядеть в каркасе окна...???
 smile 
Код

#include <Windows.h>

LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, 

                                            LPARAM); 

char szWinName[]="МоеОкно";         // Имя класса окна

 

int  WINAPI WinMain(HINSTANCE hThisInst, 

                    HINSTANCE hPrevInst, 

                    LPSTR lpszArgs, 

                    int nWinMode)

  {

  HWND hwnd; 

  MSG msg; 

  WNDCLASS wcl;               // Определить класс окна

  wcl.hInstance=hThisInst;    // Дескриптор приложения

  wcl.lpszClassName=szWinName;// Имя класса окна

  wcl.lpfnWndProc=WindowFunc; // Функция окна

  wcl.style=0;                // Стиль по умолчанию

  wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION);// Иконка 

  wcl.hCursor=LoadCursor(NULL,IDC_ARROW);  // Курсор 

  wcl.lpszMenuName=NULL;                   // Без меню

  wcl.cbClsExtra=0;   // Без дополнительной информации

  wcl.cbWndExtra=0;                        

  wcl.hbrBackground=

      (HBRUSH)GetStockObject(WHITE_BRUSH); //Белый фон

  if(!RegisterClass(&wcl))  // Регистрируем класс окна

     return 0;

  hwnd=CreateWindow(szWinName,         // Создать окно

                    "Каркас программы для Windows",

                    WS_OVERLAPPEDWINDOW, // Стиль окна

                    CW_USEDEFAULT,     // x-координата

                    CW_USEDEFAULT,     // y-координата

                    CW_USEDEFAULT,     // Ширина

                    CW_USEDEFAULT,     // Высота

                    HWND_DESKTOP, // Нет родител. окна

                    NULL,              // Нет меню

                    hThisInst,// Дескриптор приложения

                    NULL); // Нет дополнит. аргументов

  ShowWindow (hwnd, nWinMode);       //  Показать окно   

  UpdateWindow (hwnd);               // и перерисовать 

 

  while(GetMessage(&msg,NULL,0,0))   // Запустить цикл

    {                           // обработки сообщений 

    TranslateMessage(&msg); // Разреш. исп. клавиатуры 

    DispatchMessage (&msg); // Вернуть управл. Windows

    }

  return msg.wParam;

  }

 ! 
archimed7592
Не забываем пользоваться кнопкой "Код" или тэгами [code=xxx][/code]


Это сообщение отредактировал(а) archimed7592 - 17.5.2008, 20:06
PM MAIL   Вверх
Andrey44
Дата 17.5.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Ну для начала, используй тэг КОД

А потом, где твоя функция WindowFunc? Почему её не видно в коде? smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
endrogen
Дата 17.5.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Andrey44, твой вариант очень интересный,если тебе не трудно,кинь весь код окна...

У меня получилось сделать так:
Код

#include <Windows.h>

#include <String.h>

#include <Stdio.h>

#include <Time.h>

 

LRESULT CALLBACK WindowFunc(HWND, UINT, 

                            WPARAM, LPARAM); 

char szWinName[]="МоеОкно";   

char str[80]="";         

int X=1, Y=1;          

 

int  WINAPI WinMain(HINSTANCE hThisInst, 

                    HINSTANCE hPrevInst, 

                    LPSTR lpszArgs, 

                    int nWinMode)

  {

  HWND hwnd; 

  MSG msg; 

  WNDCLASS wcl;              
    wcl.hInstance=hThisInst;  

    wcl.lpszClassName=szWinName; 

    wcl.lpfnWndProc=WindowFunc;  
    wcl.style=0;                

    wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION);

    wcl.hCursor=LoadCursor(NULL,IDC_ARROW);  

    wcl.lpszMenuName=NULL;                 
    wcl.cbClsExtra=0; 

    wcl.cbWndExtra=0;                        

    wcl.hbrBackground=

      (HBRUSH)GetStockObject(WHITE_BRUSH); 

  if(!RegisterClass(&wcl))  

     return 0;

  hwnd=CreateWindow(szWinName,         // Создать окно

                    "Программа-часы",

                    WS_OVERLAPPEDWINDOW, 

                    CW_USEDEFAULT,     

                    CW_USEDEFAULT,     

                    CW_USEDEFAULT,    
                    CW_USEDEFAULT,     
                    HWND_DESKTOP, 

                    NULL,              

                    hThisInst,/

                    NULL); 

  ShowWindow (hwnd, nWinMode);   

  SetTimer(hwnd,1,1000,NULL);  // Устан. таймер 1 сек. 

  UpdateWindow(hwnd);       // Перерисовать содержимое 

  while(GetMessage(&msg,NULL,0,0))   // Запустить цикл

    {                          

    TranslateMessage(&msg); 

    DispatchMessage (&msg);

    }

  KillTimer(hwnd,1);              // Освободить таймер

  return msg.wParam;

  }

 

// Следующая функция вызывается операционной 

// системой Windows и получает в качестве 

// параметров сообщения из очереди сообщений 

// данного приложения

LRESULT CALLBACK WindowFunc(HWND hwnd,

                            UINT message,

                            WPARAM wParam, 

                            LPARAM lParam)

  {

  HDC hdc;

  PAINTSTRUCT paintstruct;

  struct tm *newtime;

  time_t t;

  switch(message)

    {

    case WM_PAINT:      // Перерисовка рабочей области         

      hdc=BeginPaint(hwnd,&paintstruct);// Получить DC 

      TextOut(hdc,X,Y,str,strlen(str));//Вывести буфер

      EndPaint(hwnd, &paintstruct);   // Освободить DC 

      break;

    case WM_TIMER:     // Очередной временной интервал   

      t = time(NULL);         // Получить новое время 

      newtime=localtime(&t);  // Новое время - в буфер

      strcpy(str,asctime(newtime));

      str[strlen(str)-1] = '\0';       // Удалить \r\n  

      InvalidateRect(hwnd,NULL,1); // Перерисов. экран

      break; 

    case WM_DESTROY:           // Завершение программы 

   PostQuitMessage(0); 

   break; 

    default:

      // Все сообщения, не обрабатываемые в         

      // данной функции, направляются на обработку 

      // по умолчанию 

   return DefWindowProc(hwnd,message, 

                           wParam,lParam);

    }

  return 0;

  }

 ! 
archimed7592
Не забываем пользоваться кнопкой "Код" или тэгами [code=xxx][/code]


Это сообщение отредактировал(а) archimed7592 - 17.5.2008, 20:06
PM MAIL   Вверх
Andrey44
Дата 19.5.2008, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Код

LRESULT CALLBACK WindowFunc(HWND hwnd,
                            UINT message,
                            WPARAM wParam, 
                            LPARAM lParam)
  {
  HDC hdc;
  PAINTSTRUCT paintstruct;
  
  switch(message)
    {
    case WM_CREATE:
        SetTimer(hWnd, 0, 1000, 0);
        break;
    case WM_PAINT:      // Перерисовка рабочей области         
      hdc=BeginPaint(hwnd,&paintstruct);// Получить DC 
      
      TCHAR szTime[1024];

      GetTimeFormat ( LOCALE_USER_DEFAULT, 0, NULL, NULL, szTime, _countof(szTime) );
      TextOut(hdc,X,Y,szTime,strlen(szTime));//Вывести буфер
      
      EndPaint(hwnd, &paintstruct);   // Освободить DC 
      break;
    case WM_TIMER:     // Очередной временной интервал   
     
      InvalidateRect(hwnd,NULL,1); // Перерисов. экран
      break; 
    case WM_DESTROY:           // Завершение программы 
   PostQuitMessage(0); 
   break; 
    default:
      // Все сообщения, не обрабатываемые в         
      // данной функции, направляются на обработку 
      // по умолчанию 
   return DefWindowProc(hwnd,message, 
                           wParam,lParam);
    }
  return 0;
  }

Вот еще способ



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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