我定义了这样的一个结构:
static Struct{int iColor,int iFocus;}DlgData;
然后我在MainWndProc中定义了一个变量:
DlgData dd={IDC_BLACK,IDC_RECT};
当我把DD做为Dialog函数的lParam参数时:
DialogBoxParam(hInstance,TEXT("ColorDialog"),hwnd,DlgProc,&dd)
VC++6中调试时,提示一个ERROR:说在第五个参数时错误,一个提示是:DlgData *,一个提示是:long ..我现在不明白到底哪错了。不是说常将32位的指针做为DialogBoxParam的第五个参数传递数把给对话框的吗?大哥,你能不能帮小弟我解释一下,为何用在这会报这种错啊。

解决方案 »

  1.   

    是不是static Struct{int iColor;int iFocus;}DlgData; 
      

  2.   

    static Struct DlgData{int iColor;int iFocus;}; 
      

  3.   

    强制类型转换(LPARAM),即使指针也要转换。另外楼上的也要注意。
      

  4.   

    谢谢,结构体中那是我刚写错了,是;而不是,。。
    嗯。。我去试试用LPARAM强转换。。
      

  5.   

    我试过了,我在&dd前加上了(LPARAM),在编译时没有报错了。但程序在运行时,主窗口没有问题,当我在菜单中选择想弹出DIALOG的时候报错。。
      

  6.   

    强制类型转换后可以把参数传过去
    如果要从对话框中获得传入的参数的话,需要在WM_INITDIALOG的处理语句中获得
    当然也要进行强制类型转换不妨把你的错误贴出来看一下
      

  7.   

    借此贴问一个我碰到的问题
    谢谢楼主先我在WM_INITDIALOG中将传入的参数保存在了一个局部变量里
    在其他消息(WM_SHOWWINDOW)的处理语句中使用的时候,却发现保存的变量值是空的
    不知道为什么