Gå til innhold

Sjekke keyboard input


Anbefalte innlegg

Videoannonse
Annonse

Det kommer helt an på hvilket API du programmerer i. I Win32 kan du sjekke etter WM_KEYDOWN og WM_KEYUP meldinger.

 

LRESULT CALLBACK SomeWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_KEYDOWN:
	MessageBox(
		NULL,
		"You pressed a key!",
		"Key Down",
		MB_OK | MB_ICONINFO);
	break;
case WM_KEYUP:
	MessageBox(
		NULL,
		"You released a key!",
		"Key Up",
		MB_OK | MB_ICONINFO);
	switch (wParam)
	{
	case VK_ESCAPE:
		DestroyWindow(hWnd);
		break;
	case 'A':
		MessageBox(
			NULL,
			"You released the A button!",
			"Key A",
			MB_OK | MB_ICONINFO);
		break;
	case VK_PRIOR:
		MessageBox(
			NULL,
			"You released the PAGE UP button!",
			"Key PgUp",
			MB_OK | MB_ICONINFO);
		break;
	}
	break;
default:
	break;
}

return DefWindowProc(hWnd, message, wParam, lParam);
}

Lenke til kommentar

En DLL-fil er en vanlig .exe fil med en export table og ingen entry-point.

For å lage en native .DLL fil i Visual C++ velger du New Win32 Application og huk av for .dll istedet for .exe fil.

 

For å eksportere funksjoner, burde de være StdCall (__stdcall i VC++) og du bruker __declspec(dllexport) for å eksportere funksjoner dersom du ikke bruker en egen EXP fil for det.

Oftest pleier jeg selv å definere __declspec(dllexport) slik at den er enkel å fjerne dersom du skal bruke en annen compiler en VC++

 

Det finnes dog hovedsaklig to andre .dll typer i Windows

COM DLL-er (det gamle objektorienterte systemet, som er temmelig vanlig i Windows C++ utvikling) og managed Dll-er. For å skrive managed DLL-er må du lære C++/CLI som er et litt annet språk, som C++ med en del nye elementer for å kunne danne CIL kode. Oftest brukes dette språket bare for å skrive wrapper biblioteker for C# (og andre .NET språk)

Lenke til kommentar

Jeg bruker Code::Blocks, har VC++, men liker Code::Blocks bedre.

Når jeg starter ett DLL prosjekt får jeg mye som jeg ikke trenger, blandt annet import og noe thread og process greier.

Men jeg vet ikke helt hva jeg kan fjerne for at det kan bli en helt simpel export DLL.

Lenke til kommentar

Du trenger bare en .cpp fil, og en export table fil.

Jeg er ikke sikker på om du kan få code::blocks til å lage en slik til deg. Jeg mener å huske at disse slutter med .EXP.

Jeg har ikke code::blocks lenger siden jeg formaterte laptopen min og la inn Visual Studio på den istedet.

 

Husk calling convention, jeg tror at thiscall er standard i C++, cdecl standard i C, og stdcall standard i Windows API-et.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...