1) برای دریافت کلید ها یا زیرکلید ها باید از EnumKey استفاده کنید (MyKey یک کلید هست)، مواردی که نام آن ها را که key1 , key2 , key3 نام گذاشته اید کلید نیستند ، نام مقدار یا نام value هستند نه کلید و داده های جلوی آن ها همان data هست.
پس برای گرفتن و شمارش مقادیر باید از RegEnumValue استفاده کنید نه EnumKey
(تابع فوق نیز در پست دوم معرفی شد)
2) وقتی کلید را می سازید یا باز می کنید در آرگومان اول باید یکی از هندل ها باشد نه اسم خوودش مانند HKEY_LOCAL_MACHINE و سایر کلید های اصلی پیش فرض.
3) برای مقایسه هر دو تابع شمارشی RegEnumValue و EnumKey باید از ERROR_SUCCESS استفاده کنید نه ERROR_NO_MORE_ITEMS
4) تابع RegEnumValue در یکی از پارامتر هایش (با متغیر dwType استفاده کرده ام) نوع داده ای value را برمی گرداند که با یک If ساده می توانید فقط رشته ها را در خروجی بریزید.
(لینک انواع نیز در پست دوم معرفی شد)
5) همیشه قبل از هر کاری کلید را با open باز کنید، چون استفاده create در سازنده کلاس درست هست که آن را باز می کند اما اشتباه هست و هر وقت برنامه اجرا می شود کلید ها دوباره ساخته می شوند که برای دفعات بعد لزومی ندارد.
6) از TCHAR برای QueryStringValue استفاده کنید تا اندازه رشته مشخص باشد و سپس در لیست باکس بریزید.
7) برنامه را به طور کامل در OnBnClickedOk و سازنده کلاس ویرایش کردم که می توانید مطالعه کنید.
8 ) پایان !
آخرین ویرایش به وسیله Nima_NF : سه شنبه 27 فروردین 1387 در 09:08 صبح