如何将Win32 lParam转换为C结构?

sco*_*ttm 0 c winapi

说我有一些Windows方法和结构:

struct SomeStruct{
int foo;
int bar;
int baz;
int bat;
}

SomeMethod(int a,int wParam, int lParam)
{
   SomeStruct s;

   // get lParam into SomeStruct
}
Run Code Online (Sandbox Code Playgroud)

如何将lParam变为SomeStruct变量?我想我需要这样的东西(但是可以随意指出我的无知):

SomeMethod(int a, int wParam, int lParam)
{
  SomeStruct *s; //declare struct variable
  s = lParam;    //assign integer value as pointer to struct
  printf("the value of s.foo is %d", s.foo);  //print result
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*isW 7

是的,假设lParam'确实'包含指向结构的指针,那么你通过'cast'得到它:

  SomeStruct* s; //declare pointer-to-struct variable
  s = (SomeStruct*) lParam;    //assign integer value as pointer to struct
  printf("the value of s->foo is %d", s->foo);  //print result
Run Code Online (Sandbox Code Playgroud)