Программа для USB HID
Мои изучения С++ пока не дают ясности как например переделать алгоритм работы кнопки, чтобы работала не как триггер а пока держишь её мышью, то сигнал есть, а отпустил или увёл мышь, сигнал изчез.
На плате штатный светодиод горит от кнопки 3, её пока разбираю, добрался до кода:
void CUsbHidDemoCodeDlg::OnLed3()
{
if(Led3 == false) {
Led3 = true;
m_Led3.SetWindowText(_T("LED 3 ON"));
DYNCALL(writeData)((UCHAR *)"13");
}
else {
Led3 = false;
m_Led3.SetWindowText(_T("LED 3 OFF"));
DYNCALL(writeData)((UCHAR *)"03");
}
}
в приложении исходник примера который разбираю
Код:
BEGIN_MESSAGE_MAP(CUsbHidDemoCodeDlg, CDialog)
//{{AFX_MSG_MAP(CUsbHidDemoCodeDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_LED1, OnLed1)
ON_BN_CLICKED(IDC_LED2, OnLed2)
ON_BN_CLICKED(IDC_LED3, OnLed3)
ON_BN_CLICKED(IDC_LED4, OnLed4)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_PW_UPGRADE, OnFwUpgrade)
ON_BN_CLICKED(IDC_BUTTON_VID_PID, OnButtonVidPid)
//}}AFX_MSG_MAP
ON_WM_DEVICECHANGE()
END_MESSAGE_MAP()
//{{AFX_MSG_MAP(CUsbHidDemoCodeDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_LED1, OnLed1)
ON_BN_CLICKED(IDC_LED2, OnLed2)
ON_BN_CLICKED(IDC_LED3, OnLed3)
ON_BN_CLICKED(IDC_LED4, OnLed4)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_PW_UPGRADE, OnFwUpgrade)
ON_BN_CLICKED(IDC_BUTTON_VID_PID, OnButtonVidPid)
//}}AFX_MSG_MAP
ON_WM_DEVICECHANGE()
END_MESSAGE_MAP()
Цитата: CassandraDied
Тут:
Надо заменить ON_BN_CLICKED на что-то похожее на ON_BN_KEYDOWN и такаю же штуку добавить для ON_BN_KEYUP. Я не знаю, что это за странная функция и разбираться мне сейчас некогда, погугли на этот счёт. В общем, тебе надо обработчик сообщений поменять.
Код:
BEGIN_MESSAGE_MAP(CUsbHidDemoCodeDlg, CDialog)
//{{AFX_MSG_MAP(CUsbHidDemoCodeDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_LED1, OnLed1)
ON_BN_CLICKED(IDC_LED2, OnLed2)
ON_BN_CLICKED(IDC_LED3, OnLed3)
ON_BN_CLICKED(IDC_LED4, OnLed4)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_PW_UPGRADE, OnFwUpgrade)
ON_BN_CLICKED(IDC_BUTTON_VID_PID, OnButtonVidPid)
//}}AFX_MSG_MAP
ON_WM_DEVICECHANGE()
END_MESSAGE_MAP()
//{{AFX_MSG_MAP(CUsbHidDemoCodeDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_LED1, OnLed1)
ON_BN_CLICKED(IDC_LED2, OnLed2)
ON_BN_CLICKED(IDC_LED3, OnLed3)
ON_BN_CLICKED(IDC_LED4, OnLed4)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_PW_UPGRADE, OnFwUpgrade)
ON_BN_CLICKED(IDC_BUTTON_VID_PID, OnButtonVidPid)
//}}AFX_MSG_MAP
ON_WM_DEVICECHANGE()
END_MESSAGE_MAP()
благодарю. конечно гуглю постоянно, перечитываю и пробую некоторые моменты, на кейдаун и многие прочие команды компилятор ругается, видимо я не сделал чего то более важного, мож не проиницализировал или не обьявил чего то.
Цитата: ellor!
Great thanks! i will try it soon
//{
//
// if(Led3 == false) {
// Led3 = true;
// m_Led3.SetWindowText(_T("LED 3 ON"));
// DYNCALL(writeData)((UCHAR *)"13");
// }
// else {
// Led3 = false;
// m_Led3.SetWindowText(_T("LED 3 OFF"));
// DYNCALL(writeData)((UCHAR *)"03");
// }
//
//}
и добавил в самом конце
void CUsbHidDemoCodeDlg::OnDropdownLed3(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMBCDROPDOWN pDropDown = reinterpret_cast<LPNMBCDROPDOWN>(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = 0;
}
я туда пробовал добавить свои коды, но ничего пока не получается, но и ошибки к счастью не появляются тоже))) пошла крупная рябь)))
void CUsbHidDemoCodeDlg::OnDropdownLed3(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMBCDROPDOWN pDropDown = reinterpret_cast<LPNMBCDROPDOWN>(pNMHDR);
// TODO: Add your control notification handler code here
if(Led3 == false) {
Led3 = true;
m_Led3.SetWindowText(_T("LED 3 ON"));
DYNCALL(writeData)((UCHAR *)"13");
}
else {
Led3 = false;
m_Led3.SetWindowText(_T("LED 3 OFF"));
DYNCALL(writeData)((UCHAR *)"03");
}
*pResult = 0;
}
Klewer, используй для форматирования тег [сode]. C BCN_DROPDOWN может незаработать, так как это сообщение приходит, когда кликается стрелка на кнопке, которая может выпадать в список. Что-то мне подсказывает, что у тебя обычная кнопка без списков. BN_PUSHED & BN_HILITE могут несработать. Что-то я не нашёл подхоящих сообщений. Вообще, это, по идее, обработчики формы. Если сможешь, поставь обработчик на кнопку, на сообщения WM_LBUTTONUP, WM_LBUTTONDOWN.
Цитата: CassandraDied
Klewer, используй для форматирования тег [сode]. C BCN_DROPDOWN может незаработать, так как это сообщение приходит, когда кликается стрелка на кнопке, которая может выпадать в список. Что-то мне подсказывает, что у тебя обычная кнопка без списков. BN_PUSHED & BN_HILITE могут несработать. Что-то я не нашёл подхоящих сообщений. Вообще, это, по идее, обработчики формы. Если сможешь, поставь обработчик на кнопку, на сообщения WM_LBUTTONUP, WM_LBUTTONDOWN.
чтож, читаю про WM_LBUTTONDOWN, мож додумаюсь как его правильно в код вписать чтоб компилятор не матерился