Установить таймер (например, на 1 секунду) и по сообщению WM_TIMER получать время с помощью GetLocalTime и отображать его.
Имхо это не универсально) хотя хз. вообщемто без разницы.. просто не долюблюваю эти таймеры почемуто хз)
> Shnurovka, KEZ, inv, Alexsize - выяснения отношений в ПМ. В следующий раз модераторы, которые оффтопят, получат минус - в основном это касается Alexsize. о, грит типа понтанулся как следует так чего ты сегодня мне говорил около супермаркета, обдолбавшись растворителем? : D
Ну понтанулся, кез, молодец, молодец )) Типа видел крутого кодера под растворителем :d А говорил я тебе про Pe формат Ладно, заканчиваем оффтопить)
напиши с использованием системного таймера в плоть до учета микросекунд, добавь будильник при помощи системного динамика, длина волны и период выщитываются в 2 цикла
ипусь, ипусь.. Мля... я уже сколько долблюсь.. наверное мало знаю.. Вот код выкладываю. сильно не ржать, он очень и очень кривой... Посмотрите. Кому не лень может кто подскажет и доработает сам.. Если уж у меня не выйдет... Code: .TITLE 4ase (.ASM) .386 .model flat, stdcall includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib includelib c:\masm32\lib\gdi32.lib include c:\masm32\include\windows.inc include c:\masm32\include\user32.inc include c:\masm32\include\kernel32.inc WinMain proto :DWORD,:DWORD,:DWORD,:DWORD .data ClassName db "SimpleWinClass",0 ; Имя нашего класса окна AppName db "Our First Window",0 ; Имя нашего окна hInstance HINSTANCE ? ;получае хэндл программы CommandLine LPSTR ? SetWindowPos PROTO GetActiveWindow PROTO SetWindowPos PROTO .code start: mov eax, 0 ;забываю помещать в регистр исходные значения. мля.. =\\ GetModuleHandle PROTO GetLocalTime PROTO hmodule==hinstance mov hInstance,eax ;берем хэндл программы invoke GetCommandLine ;берем командную строку. ноги в руки. и вперед.. mov CommandLine,eax ;тут все ясно.. invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ;вызов основных ф-ций invoke ExitProcess, eax ;корректное завершение программы WinMain PROC ;мы взяли отсюда возвращаемое значение для eax Inst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc:WNDCLASSEX ;создаем в стеке локальные переменные LOCAL msg:MSG LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW ;заполнение структуры mov wc.lpfnWndProc, OFFSET WndProc ;вообще это станжартная процедура. поэтому потом запихну в библиотеку mov wc.cbClsExtra,NULL mov wc.cbWndExtra,NULL push hInstance pop wc.hInstance mov wc.hbrBackground,COLOR_WINDOW+1 mov wc.lpszMenuName,NULL mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax invoke RegisterClassEx, addr wc invoke GetModuleHandle, 0 invoke CreateWindowEx, 0 ;регистрация классов окна.. hWnd dd ? ;хэндл окна szWindowName db 'Часики',0 ;имя окна ADDR ClassName,\ ADDR AppName,\ WS_OVERLAPPEDWINDOW,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ CW_USEDEFAULT,\ 0,\ 0,\ hInst,\ 0 mov hwnd,eax msg_loop: invoke GetMessage, offset msg, 0, 0, 0 cmp eax, 0 jz loop_end invoke DispatchMessage, offset msg jmp msg_loop loop_end: invoke ShowWindow, hwnd,CmdShow ; отобpажение окна на десктопе invoke UpdateWindow, hwnd ; обновить клиентскую область ;---------------------------------------------------------------------------------------------- .elseif uMsg==WM_NCHITTEST invoke DefWindowProc,hWnd,uMsg,wParam,lParam .if eax==HTCLIENT mov eax,HTCAPTION .endif ret ;перемещение окна.. надо обрисовать само окно ;---------------------------------------------------------------------------------------------- INVOKE GetLocalTime .data SYSTEMTIME STRUCT wYear WORD ? wMonth WORD ? wDayOfWeek WORD ? wDay WORD ? wHour WORD ? wMinute WORD ? wSecond WORD ? SYSTEMTIME ENDS time SYSTEMTIME <0,0,0,0,0,0,0> end start Вот.. стоило пытаться блин.. =\ ПС: синтаксис масма
Для переносимсоти пишут так includelib \masm32\lib\gdi32.lib SYSTEMTIME Ксати эта структура уже определена хутчем,так что заново описывать думаю не стоит в своих прогах... И еще я чет не понял,че делает .data в сегменте кода? О_о Качни себе Chrome IDE на васме есть и создай window program (assembler) и посмотри как оформлен проект Для данных, значения которых не определы изначально,а определяются воремя исполнения программы используй сегмент .data? Code: .data? hInstance HINSTANCE ? CommandLine LPSTR ? Вот так будет GetLocalTime PROTO Эт зачем Функция стандартная для винда и прототип не нужен... Code: invoke RegisterClassEx, addr wc invoke GetModuleHandle, 0 GetModuleHandle здесь лишниё http://wasm.ru/article.php?article=1001003 почитай...урок как раз на твою тему
GoreMaster, о, спасибо. ЧЕт я невнимательная какая-то... Так... окно дописано полностью.. осталось часы отобразить там... не думала, что это будет так для меня сложно..
А ты создай в окне editbox и там часы отображай и для смены времени используй тамеры,как сказал NetMan. Just 4 help: вот пример программы: _http://rapidshare.com/files/51191471/clock.exe и её исходник: _http://rapidshare.com/files/51191428/clock.asm
Ro$k-0, НЕЕТ!!! хыы... я столько писала эту муть.. и уже осталось часики отобразить, что идея с эдитбоксом мне кажется не очень хорошей.. )))
Пиши аналоговые часы со сменой скинов, а-то ежесекундный вывод текста на пустое окно ИМХО слишком просто( сплошные АПИ и никакого Ассемблерного кода ), заодно математический сопроцессор освоишь))) Система не сложная, всего 5 слоёв и 3 буфера. Каждый час выводишь на буфер1 подложку и часовою стрелку под определённым углом(с использованием GDI+ или своим алгоритмом), каждую минуту выводишь на буфер2 буфер1 и минутную стрелку под соответствующим углом, а каждую секунду выводишь на буфер3 буфер2, секундную стрелку и верхнее стекло и выводишь его на окно через UpdateLayeredWindow Я как-то делал такое, если использовать картинки PNG( с Alpha-каналом ) получается очень даже неплохо правда GDI+ отедает 10% процессорного времени, а сторонние алгоритмы вставлять не хотелось, как вариант, для стрелок можно использовать векторную графику, тогда будет работать намного быстрее. Просто в твоём варианте, разницы почти нет на каком языке пишешь, всё-равно просто передаёшь аргументы из одной АПИ в другую :/
ну всё,C кодеры отпадают я просто написал прогу на си и перевел на асм (сплошные АПИ и никакого Ассемблерного кода)-ты прав 2hidden,ты предложил что-то по типу: http://www.wasm.ru/src/3/Aclock.zip
мля... я с теми трахаться даже особо не стала.. у меня почему-то компилятор даже инклюдить ничего не хочет... =\ что очень и очень странно.. Мде.. просто пишет что-то типа: Code: \masm32\include\windows.inc(115) : error A2004: symbol type conflict : bool \masm32\include\windows.inc(8052) : error A2179: structure improperly initialized \masm32\include\windows.inc(8052) : error A2008: syntax error : in structure \masm32\include\windows.inc(8064) : error A2179: structure improperly initialized \masm32\include\windows.inc(8064) : error A2008: syntax error : in structure \masm32\include\windows.inc(8082) : error A2005: symbol redefinition : hinst \masm32\include\windows.inc(8772) : error A2179: structure improperly initialized \masm32\include\windows.inc(8772) : error A2008: syntax error : in structure \masm32\include\windows.inc(8779) : error A2179: structure improperly initialized \masm32\include\windows.inc(8779) : error A2008: syntax error : in structure \masm32\include\windows.inc(8784) : error A2179: structure improperly initialized \masm32\include\windows.inc(8784) : error A2008: syntax error : in structure \masm32\include\windows.inc(8790) : error A2179: structure improperly initialized \masm32\include\windows.inc(8790) : error A2008: syntax error : in structure \masm32\include\windows.inc(8797) : error A2179: structure improperly initialized \masm32\include\windows.inc(8797) : error A2008: syntax error : in structure \masm32\include\windows.inc(8807) : error A2179: structure improperly initialized \masm32\include\windows.inc(8807) : error A2008: syntax error : in structure \masm32\include\windows.inc(8813) : error A2179: structure improperly initialized \masm32\include\windows.inc(8813) : error A2008: syntax error : in structure и так еще дофига раз.. а если добавлять option casemap :none, то половину переделывть придется... кароч я нуб =( Походу я взяла просто достаточно шаблонную ф-цию с диалоговыми окнами.. и переписала.. просто под себя.. выложила все тут ПС: я писала все это не сама, а просто ПЕРЕПИСАЛА код немного и все.. адаптировала под данный процессор... а те.. я уже хз блин... псц заебалась.. В общем, ловите трояшку.. ) /me пошла кушать мороженое.. Добавлено: Говорили же мне не с этого начинать) а фига ли я кого послушала)) мде.. зря..