本质就是使用指针。
```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);
}
```
没有评论:
发表评论