You don't need WM_INITDIALOG or LPARAM. Looks like you were headed in the right direction in your first post. You can create and set member variables in the dialog and set them after you instantiate but before you Create the dialog. Once you do that, you can access them at any time inside the dialog. You could create individual members and copy them from the struct, or just declare a pointer to your struct, and populate it.