Hej. Jag har ett program skrivet med MFC och vill gärna kunna läsa av tangenttryckningar. Tyvärr får jag inte kbhit att fungera. Har inkluderat <conio.h> och LIBC.LIB. Finns det någon annan funktion att använda eller går det kanske att fixa problemet. Får den att fungera i en konsolapp. Ska jag inkludera något mer eller är det något annat jag glömmer? I MFC mapper du istället et keydown windows meddelande til en MFC Windows handler: HEj och tack för svaret. Tyvärr så fungerar det inte som jag hade tänkt mig. Jag har en lop i en funktion i MainFrame. Ibland vill jag kunna bryta lopen med en tryckning på t.ex. escape. Därför hade jag tänkt lägga in kbhit i funktionen. Ok, i det scenarioet funker ikke kbhit. Då e det multithreading som e tingen.MFC och kbhit
/ JürgenSv: MFC och kbhit
1. i Class View fönsteret i (VS C++ 6.0) så högerklicker du på View klassen din og velger Add Windows Message Handler
2. Välj WM_KEYDOWN og click "Add and Edit"
3. Du kommer da till handlern för windows eventet
<code>
void CTestKeyboardView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
MessageBox("Stop hitting me!"); //Legg till denne raden her
CView::OnKeyDown(nChar, nRepCnt, nFlags); //lämna kvar
}
</code>
Hoppas det var den her typen av tangentbords trykninger du ville ha. Du kan även fange opp keydown events i CMainFrame klassen. I en MDI applikasjon, så fanger du då opp even tryckninger utanför et CView fönster.Sv: MFC och kbhit
Frågan är då? Ska KeyDown kunna bryta lopen. Jag får inte det att fungera. Har provat med KeyDown både i MainFrame och CView.
/JürgenSv: MFC och kbhit
Gjör din loop i en worker thread. Da vil GUI'et/hele MFC applikasjonen fortsetta svara på alla knapp- och mustryckningar
En GUI thread = en thread som tar i mot och handterar windows medelanden i en while loop. (Dold inne i MFC koden).
En WorkerThread = Handterar inga windows medelanden.
Kom ihåg at multithreaded programmering krever mycket omtanke så inte den en tråden endrar på saker som den andre e beroende av.
msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_core_multithreading.3a_.programming_tips.asp
msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample98/html/_core_multithreading_samples.asp