是否可以避免对话框函数中的静态或全局变量

时间:2010-08-30 15:21:18

标签: windows winapi dialog

如果在对话框函数中需要某种状态,那么您似乎需要某种静态变量。例如,GetOpenFileName的钩子过程在其WM_INITDIALOG调用上提供了具有OPENFILENAME结构地址的对话框函数,但是没有在任何后续调用上提供,并且OPENFILENAME结构包含lCustData的位置,该位置可用于在对话过程和GetOpenFileName调用者。如果对话框函数需要这些状态中的任何一个,那么似乎唯一的选择是静态或全局变量。

1 个答案:

答案 0 :(得分:2)

如果您有自定义控件(模板),您可以在WM_INITDIALOG中使用SetProp,如this KB推荐,或使用SetWindowLongPtr(..,GWLP_USERDATA)