læsning af keyboard

Tags:    c++ php

Hej er der nogle som kan hjælpe mig med at læse fra keyboardet fra windows...

void __fastcall TForm1::OnKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)

{
Panel1->Caption = "Event!";
if (Key == VK_INSERT) Panel1->Caption = "INS";
if (Key == VK_RETURN) Panel1->Caption = "RET";
}

Skulle kunne gøre det men det virker ikke..... hvorfor???????

Der sker intet når jeg trykker på hendholdsvis enter og insert.....[Redigeret d. 18/11-02 13:01:51 af steen Jensen]



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hej er der nogle som kan hjælpe mig med at læse fra keyboardet fra windows...

void __fastcall TForm1::OnKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)

{
Panel1->Caption = "Event!";
if (Key == VK_INSERT) Panel1->Caption = "INS";
if (Key == VK_RETURN) Panel1->Caption = "RET";
}

Skulle kunne gøre det men det virker ikke..... hvorfor???????


Prøv at sætte formens KeyPreview til true og se om det ikke hjælper.




Bruger selv vis c++ microsoft og her er det noget med at insætte en resurce der håndtere genvejstaster, men kan ikke lige huske hvordan man går i borland c++.....

Det kan være det giver dig et hint... Syntes din metode så ok ud....

Janus



Hej

Jeg brugte denne kode i Vis c++ (miro)

void CMatildeView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CPoint ScrollPoint=GetScrollPosition();
CRect rect;
CString msg1;
msg1="";
GetWindowRect(rect);
rect=rect-ScrollPoint;

if(nChar==VK_SHIFT)
bShift=1;

if(bShift)
nRepCnt=nJumpCnt;
else
nRepCnt=1;


switch(nChar)
{
case VK_DIVIDE:
{
nJumpCnt=10+nJumpCnt;
msg1.Format("Snap : %d",nJumpCnt);
}
break;
case VK_MULTIPLY:
{
nJumpCnt=10;
msg1.Format(" Snap grip : %d",nJumpCnt);
}
break;
case VK_ADD:
{
nJumpCnt++;
msg1.Format(" Snap grip : %d",nJumpCnt);
}
break;
case VK_SUBTRACT:
{
nJumpCnt--;
msg1.Format(" Snap grip : %d",nJumpCnt);
}
break;
case VK_SHIFT:
{
msg1.Format(" Snap grip : %d",nRepCnt);
}
break;

case VK_NUMPAD0:;
case '0'://0 eller keypad 0
{
if(AntalPoints>0)
{
SetCursorPos(Points[1].x+rect.left,Points[1].y+rect.top);
nPunkt=1;
}
else msg1.Format("Placer min 1 punkt ellers har 0 ikke nogen funktion. (0 er start punkt)");
}
break;
case VK_NUMPAD1:
case '1'://1 eller keypad 1
{
if(AntalPoints>1)
{
SetCursorPos(Points[2].x+rect.left,Points[2].y+rect.top);
nPunkt=2;
}
else msg1.Format("Placer min 2 punkt ellers har 1 ikke nogen funktion. (0 er start punkt)");
}
break;
case VK_NUMPAD2:
case '2'://2 eller keypad 2
{
if(AntalPoints>2)
{
SetCursorPos(Points[3].x+rect.left,Points[3].y+rect.top);
nPunkt=3;
}
else msg1.Format("Placer min 3 punkt ellers har 2 ikke nogen funktion. (0 er start punkt)");
}
break;
case VK_NUMPAD3:
case '3'://3 eller keypad 3
{
if(AntalPoints>3)
{
SetCursorPos(Points[4].x+rect.left,Points[4].y+rect.top);
nPunkt=4;
}
else msg1.Format("Placer min 4 punkt ellers har 3 ikke nogen funktion. (0 er start punkt)");
}
break;
case VK_NUMPAD4:
case '4'://4 eller keypad 4
{
if(AntalPoints>4)
{
SetCursorPos(Points[5].x+rect.left,Points[5].y+rect.top);
nPunkt=5;
}
else msg1.Format("Placer min 5 punkt ellers har 4 ikke nogen funktion. (0 er start punkt)");
}
break;
case VK_NUMPAD5:
case '5'://5 eller keypad 5
{
if(AntalPoints>5)
{
SetCursorPos(Points[6].x+rect.left,Points[6].y+rect.top);
nPunkt=6;
}
else msg1.Format("Placer min 6 punkt ellers har 5 ikke nogen funktion. (0 er start punkt)");
}
break;
case VK_NUMPAD6:
case '6'://6 eller keypad 6
{
if(AntalPoints>6)
{
SetCursorPos(Points[7].x+rect.left,Points[7].y+rect.top);
nPunkt=7;
}
else msg1.Format("Placer min 7 punkt ellers har 6 ikke nogen funktion. (0 er start punkt)");
}
break;
case VK_NUMPAD7:
case '7'://7 eller keypad 7
{
if(AntalPoints>7)
{
SetCursorPos(Points[8].x+rect.left,Points[8].y+rect.top);
nPunkt=8;
}
else msg1.Format("Placer min 8 punkt ellers har 7 ikke nogen funktion. (0 er start punkt)");
}
break;
case VK_NUMPAD8:
case '8'://8 eller keypad 8
{
if(AntalPoints>8)
{
SetCursorPos(Points[9].x+rect.left,Points[9].y+rect.top);
nPunkt=9;
}
else msg1.Format("Placer min 9 punkt ellers har 8 ikke nogen funktion. (0 er start punkt)");

}
break;
case VK_NUMPAD9:
case '9'://9 eller keypad 9
{
if(AntalPoints>9)
{
SetCursorPos(Points[10].x+rect.left,Points[10].y+rect.top);
nPunkt=10;
}
else msg1.Format("Placer min 10 punkt ellers har 9 ikke nogen funktion. (0 er start punkt)");

}
break;

case VK_RIGHT://Pile tast mod højre
{
if(AntalPoints>0)
{
Points[nPunkt].x=Points[nPunkt].x+nRepCnt;
SetCursorPos(Points[nPunkt].x+rect.left,Points[nPunkt].y+rect.top);
Invalidate();
}
else msg1.Format("Tegn min 1 punkt ellers har pil mod højre ikke nogen funktion.");
}
break;
case VK_LEFT://Pile tast mod venstre
{
if(AntalPoints>0)
{
Points[nPunkt].x=Points[nPunkt].x-nRepCnt;
SetCursorPos(Points[nPunkt].x+rect.left,Points[nPunkt].y+rect.top);
Invalidate();
}
else msg1.Format("Placer min 1 punkt ellers har pil mod venstre ikke nogen funktion.");
}
break;
case VK_DOWN://Pile tast ned
{
if(AntalPoints>0)
{
Points[nPunkt].y=Points[nPunkt].y+nRepCnt;
SetCursorPos(Points[nPunkt].x+rect.left,Points[nPunkt].y+rect.top);
Invalidate();
}
else msg1.Format("Placer min 1 punkt ellers har pilned ikke nogen funktion.");
}
break;
case VK_UP://Pile tast op
{
if(AntalPoints>0)
{
Points[nPunkt].y=Points[nPunkt].y-nRepCnt;
SetCursorPos(Points[nPunkt].x+rect.left,Points[nPunkt].y+rect.top);
Invalidate();
}
else msg1.Format("Placer min 1 punkt ellers har pilop ikke nogen funktion.");

}
break;

case VK_NUMLOCK://
{
}
break;
case VK_CAPITAL://
{
}
break;
case VK_SCROLL://
{
}
break;

default :
msg1.Format("Den aktiveret tastekode var : %d. Denne tast har ikke nogen funktion",nChar);
}

((CMainFrame*)AfxGetMainWnd())->m_wndStatusBar.SetPaneText(0,msg1);

CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CMatildeView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if(nChar==VK_SHIFT)
bShift=0;
CScrollView::OnKeyUp(nChar, nRepCnt, nFlags);
}

Håber du kan bruges den til noget

Janus[Redigeret d. 18/11-02 19:23:39 af Janus S. Andersen]



Hej er der nogle som kan hjælpe mig med at læse fra keyboardet fra windows...

void __fastcall TForm1::OnKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)

{
Panel1->Caption = "Event!";
if (Key == VK_INSERT) Panel1->Caption = "INS";
if (Key == VK_RETURN) Panel1->Caption = "RET";
}

Skulle kunne gøre det men det virker ikke..... hvorfor???????

Der sker intet når jeg trykker på hendholdsvis enter og insert.....[Redigeret d. 18/11-02 13:01:51 af steen Jensen]


Hej Steen

Hvis du bruger Borland Builder

Kan du prøve at sætte KeyPreview til true.

Det skulle vist kunne klare det.

Med venlig hilsen
Thomas Vanting[Redigeret d. 21/11-02 13:51:11 af Thomas Vanting]



t