WinAPI в C++

(1/12) > >>

Артем:
Предлагаю в этой теме задавать вопросы по сабжу. Но для начала скажу несколько слов тем, кто только планирует изучать WinAPI.

Пересмотрев около десятка книг для начинающих, я выделил для себя только 3, действительно написанные на "русском" языке :)

П.Румянцев - Азбука программирования в Win32 APIЧ.Петзолд - Программирования для Win95К.Финогенов - Win32. Основы программирования (2006)
Книга Румянцева по большей степени дублирует главы и примеры из книги Петзолда, но только более подробно и "разжевано". Требуется предварительное знание языка С, и основ ООП. Поэтому если Вы до этого писали лишь консольные приложения на С/С++ и хотите начать писать под Windows, то книга Румянцева или Петзолда безусловно для Вас.

К.Финогенов основательно подошел к написанию книги, и начал с архитектуры процессоров и довольно подробным описанием используемых IDE. Также имеется целая глава, посвященная синтаксису стандартного языка С++. И только с 4-ой главы начинается изучение WinAPI. Поэтому, если с языком С/С++ Вы знакомы поверхностно, эта книга станет для Вас хорошим учителем.


Полезные ссылки:

Введение в WinAPI и несколько простых примеровСсылки на справочные материалы и литературуТипы данных в WindowsБольшой справочник по WinAPI

Магнетон Бора:
Доброе время суток, уважаемые форумчане )))

Есть такое дело... Делаю программу с помощью WinApi и у меня есть елемент управления ComboBox, а точнее их 2. Я их использую в диалоговом окне и прописываю в файле ресурсов. У меня в них хранятся ЧИСЛА вот вопрос как бы мне число оттуда вытащить и запомнить как ЧИСЛО, а не строку. Пробовал делать так:

Вот небольшой фрагмент диалоговой функции, но тут какой-то баг и я никак не пойму в чем дело (((

Код:

case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDOK:
nItem = SendMessage(hCombo1,CB_GETCURSEL,0,0);
wx = atoi(SendMessage(hCombo1,CB_GETITEMDATA,nItem,0));
nItem = SendMessage(hCombo2,CB_GETCURSEL,0,0);
wy = atoi(SendMessage(hCombo2,CB_GETITEMDATA,nItem,0));

case IDCANCEL: break;
};
}
break;

Кто-нибудь может предложить вариант получения информации из этого элемента управления?  8)  :)

З. Ы. Заранее благодарен  :)

ZaQ:
А конвертнуть строку в число религия не позволяет???
Чето я невнимательно читаю, пора спать :). Ищи ошибку, читай МСДН.

TARAKAN:
В программе создается поток, приостановка и продолжение работает.
НО если попытаться завершить его, то заново запустить не получается ...
На завершение выполняю
Цитировать

potok1.stop=1;
TerminateThread(potok1.hpotok,potok1.exitcode);
На запуск пробовал делать
Цитировать

potok1.hpotok=CreateThread(NULL,0,ThreadFunc_1,(PVOID)(&potok1),CREATE_SUSPENDED,&potok1.per_potok);
potok1.hWndPot=hWndChild;
potok1.stop=0;
ResumeThread(potok1.hpotok);
Не получается ... все равно не запускает поток ... точнее оно вроде как запускает его тк ошибок не выдает, но тот прямоугольник что должен двигаться вообще не появляется ... т е не прорисовывается ...

AlexXxandr:
Нужно сделать так чтобы по WaitableTimer'у звучал сигнал Beep
Вот как я делаю:
Код:

VOID CALLBACK TimerAPCProc(LPVOID, DWORD, DWORD);
HANDLE hWTimer;
SYSTEMTIME st;
FILETIME ftLocal, ftUTC;
LARGE_INTEGER liUTC;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,int nCmdShow){
//--------------------ТАЙМЕР--------------------------------------------------------------
// создаем таймер с автосбросом
hWTimer = CreateWaitableTimer(NULL, FALSE, NULL);
// узнаем текущую дату/время
GetLocalTime(&st);
st.wHour = 19;
st.wMinute = 34;
st.wSecond = 0;
// преобразуем время из SYSTEMTIME в FILETIME
SystemTimeToFileTime(&st, &ftLocal);
// преобразуем местное время в UTC-время
LocalFileTimeToFileTime(&ftLocal, &ftUTC);
// преобразуем FILETIME в LARGE_INTEGER из-за
// различий в выравнивании данных
liUTC.LowPart = ftUTC.dwLowDateTime;
liUTC.HighPart = ftUTC.dwHighDateTime;
// устанавливаем таймер
SetWaitableTimer(hWTimer, &liUTC, 24*60*60*1000, TimerAPCProc, NULL, FALSE);
//---------------------------------------------------------------------------------------
}
VOID CALLBACK TimerAPCProc(LPVOID, DWORD, DWORD){
Beep(1000,500); // выдается звуковой сигнал
};

В StdAfx.h я прописал #define _WIN32_WINNT 0x0400 иначе не компилировалось.
Проблема в том что если указать текущее время, то при запуске звуковой сигнал издается, а если указать только будущее время, то он не срабатывает, как мне кажется таймер просто не считает время. Помогите, что делать?

Навигация

[0] Главная страница сообщений

[#] Следующая страница