Avatar billede horup Nybegynder
28. oktober 2000 - 19:36 Der er 4 kommentarer

WinEasy -> Piletaster..

Der er vel ikke en kvik hjerne der kan sige mig hvordan jeg kommunikerer med piletasterne i ANSI C, når det SKAL virke når jeg laver proigrammet som en WinEasy application??
Avatar billede jackonlinux Nybegynder
28. oktober 2000 - 19:46 #1
Jeg kan sagtens fortælle dig hvordan det laves i ANSI C, men hvad mener du med Win-easy. Hvad er det ?
Avatar billede horup Nybegynder
28. oktober 2000 - 20:20 #2
Højre klik i koden vælg target expert og WinEasy, så får du lavet et \"window\"  ala et Windows program.
Avatar billede borrisholt Novice
30. oktober 2000 - 08:31 #3
Hvad med et Keyboard Hook ?
Jeg har ingen erfaring med ANSI C .. men jeg vil da gerne være vært med et keyboard hook.

Jens B
Avatar billede borrisholt Novice
30. oktober 2000 - 14:57 #4
det her burde kunne virke ...

#include <windows.h>

#define WIN32_LEAN_AND_MEAN

WNDCLASS WinClass;

HINSTANCE Inst;
HRGN hRegion;
HWND Handle;
MSG  Msg;

HHOOK hookdata;


int i = 48;

LRESULT CALLBACK KeyboardProc ( int code, WPARAM w, LPARAM l )
{
    if ( code < 0 )
      return CallNextHookEx ( hookdata, code, w, l ) ;

  switch (w)
  {
  case 37 :
      SetWindowText(Handle, \"Arrow Left\");
      do {/*loop*/}while (PeekMessage(&Msg, 0, 0, 0, PM_REMOVE));
      break;
  case 38 :
      SetWindowText(Handle, \"Arrow Up\");
      do {/*loop*/}while (PeekMessage(&Msg, 0, 0, 0, PM_REMOVE));
      break;
  case 39 :
        SetWindowText(Handle, \"Arrow Right\");
      do {/*loop*/}while (PeekMessage(&Msg, 0, 0, 0, PM_REMOVE));
      break;
  case 40 :
      SetWindowText(Handle, \"Arrow Down\");
      do {/*loop*/}while (PeekMessage(&Msg, 0, 0, 0, PM_REMOVE));
      break;
  default:
      return CallNextHookEx ( hookdata, code, w, l ) ;
  }

  return 1;
}

       

LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_CREATE:
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
  }
  return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,  LPSTR lpCmdLine, int nCmdShow)
{
  Inst = hInstance;

  WinClass.style          = CS_CLASSDC | CS_PARENTDC;
  WinClass.lpfnWndProc        = &WndProc;
  WinClass.hInstance          = Inst;
  WinClass.hbrBackground      = CreateSolidBrush(0xFFFFFF);
  WinClass.lpszClassName      = \"JB_KEY_WINDOW\";
  WinClass.hCursor            = LoadCursor(0, IDC_ARROW);

  RegisterClass(&WinClass);

  Handle = CreateWindowEx(WS_EX_WINDOWEDGE, \"JB_KEY_WINDOW\", \"\",  WS_VISIBLE | WS_CAPTION|WS_SYSMENU, 363, 278, 350, 350, 0, 0, Inst, 0);

  UpdateWindow(Handle);
 
  hookdata = SetWindowsHookEx ( WH_KEYBOARD , &KeyboardProc, Inst, GetCurrentThreadId() ) ;


  while(GetMessage(&Msg, 0, 0, 0))
  {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
  }

  return Msg.wParam;
}

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester