2017年5月22日星期一

lParam

# 使用lParam传递参数很可以的!!!

本质就是使用指针。
```c
POINT pt;
pt.x=123;
pt.y=456;
    GlobalUnlock(hgbl);
    ret = DialogBoxIndirectParam(hinst,
                           (LPDLGTEMPLATE)hgbl, //HGLOBAL
                           hwndOwner, //IN_0
                           (DLGPROC)DialogProc,(LPARAM)&pt);
```
传过去的是pt变元的地址。

使用的时候:
```c
BOOL CALLBACK DialogProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
POINT* pt=(POINT*)lParam;
TCHAR buf[256];
switch(message)
{
case WM_INITDIALOG:
        {
wsprintf(buf,"%d+%d=%d",pt->x,pt->y,123);
//wsprintf(buf,"%d+%d=%d",((POINT*)lParam)->x,((POINT*)lParam)->y,123);两个皆可
MessageBox(hDlg,TEXT("Created!"),0,0);
SetWindowText(hDlg,buf);
        }
```

没有评论:

发表评论