أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية كتابة تطبيقات Windows XP الذي يقوم بتخزين بيانات التطبيق والمستخدم في الموقع الصحيح باستخدام Visual c + +

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية310294
هام تحتوي هذه المقالة على معلومات حول كيفية تعديل التسجيل. تأكد من عمل نسخة احتياطية من السجل قبل تعديله. تأكد من أنك تعرف كيفية استعادته في حالة حدوث مشكلة. لمزيد من المعلومات حول كيفية إجراء النسخ الاحتياطي واستعادة وتعديل السجل، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
322756 كيفية عمل نسخة احتياطية من السجل واستعادته في نظام التشغيل Windows
ملاحظة تدعم Microsoft Visual c + +.NET 2002، Microsoft Visual c + +.NET 2003 و Microsoft Visual c + + 2005 و Microsoft Visual c + + 2008 كل من طراز التعليمات البرمجية المدارة التي تم توفيرها من قبل Microsoft.NET Framework وغير المدارة نموذج التعليمات البرمجية الأصلية في Microsoft Windows. تنطبق المعلومات الواردة في هذه المقالة فقط على التعليمات البرمجية غير المدارة Visual c + +
الموجز
التطبيقات التي تستخدم مع نوعين من الوثائق: تلك التي يقوم المستخدم بإنشاء وتلك التي يقوم التطبيق بإنشاء. التطبيقات الخاصة بك يجب استخدام الدالة shell SHGetFolderPath لاسترداد مواقع مجلد صالح لتخزين البيانات هذه خاصة بالمستخدم والتطبيق. وهذا ضروري لنظام التشغيل Windows تطبيقات نظام التشغيل XP لدعم العديد من المستخدمين الذين يستخدمون نفس جهاز الكمبيوتر و لتمكين المستخدمين من التبديل بسرعة.

توضح هذه المقالة كيفية تخزين بيانات المستخدم في المكان الصحيح في الخطوات التالية:
  • إنشاء تطبيق Win32.
  • إضافة حفظ باسم خيارملف القائمة.
  • استخدام مقياس حفظ ملف مربع الحوار إلى الافتراضي إلى الموقع الصحيح.
  • التحقق من صحة الملف موقع الحفظ.
  • تذكر التحديد السابق الخاص بالمستخدم.
  • تحقق من تحديد المستخدم السابقة.
في الخطوات التالية، كما توضح مكان لك يجب تخزين بيانات التطبيق وكيفية التأكد من أن يتم تخزينه في المواقع المناسبة:
  • تصنيف بيانات التطبيق.
  • تخزين بيانات التطبيق في الموقع الصحيح.
  • استخدام التسجيل حكمه.

متطلبات

توضح القائمة التالية الأجهزة الموصى بها، البرامج، شبكة البنية التحتية والمهارات والمعرفة، وخدمة حزم التي تحتاجها:
  • نظام التشغيل Windows XP Home Edition أو Windows XP Professional
  • Visual Studio 2008 Visual 2005 ساديو أو Visual Studio.NET.
  • المعرفة المسبقة بتطوير تطبيقات Win32

إنشاء تطبيق Win32

بدء تشغيل Visual Studio، وإنشاء تطبيق Win32 جديد يسمى سافينجداتا.
  • في Visual Studio.NET, انقر فوق Visual c + + المشاريع ضمن أنواع المشاريع، ثم انقر فوقمشروع Win32 ضمن قوالب. قبول إعدادات التطبيق الافتراضي معالج إعداد التطبيق يعرض.
  • في Visual Studio 2005 أو 2008، انقر فوق Visual c + +ضمن أنواع المشاريع، ثم انقر فوق Win32 المشروع ضمن قوالب. قبول الافتراضي إعدادات التطبيق.

إضافة حفظ كخيار إلى القائمة ملف

  1. انقر فوق عرض الموارد، ثم انقر نقراً مزدوجاً فوق IDC_SAVINGDATA.
  2. إضافة حفظ باسم خيار قائمةملف القائمة. استخدام IDM_FILE_SAVEAS كمعرّف عنصر القائمة.
  3. تحديد موقع الإجراء إطار WndProc للتطبيق داخل SavingData.cppm وإضافة بيان الحالة جديد داخل هذا القسم WM_COMMAND لمعالجة حفظ باسم خيار القائمة. المكالمة دالة أونفيليسافيس ، التي ستقوم بإنشائها في المقطع التالي. هذا دالة تأخذ أية معلمات.

    يجب أن تظهر التعليمات البرمجية الخاصة بك كما يلي:
    case WM_COMMAND:    wmId    = LOWORD(wParam);    wmEvent = HIWORD(wParam);    // Parse the menu selections:    switch (wmId)    {    case IDM_ABOUT:        DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);        break;    case IDM_EXIT:        DestroyWindow(hWnd);        break;    case IDM_FILE_SAVEAS:        OnFileSaveAs(hWnd);        break;    default:        return DefWindowProc(hWnd, message, wParam, lParam);    }    break;

استخدم القياسية "حفظ ملف" مربع الحوار بشكل افتراضي إلى الموقع الصحيح

عندما يقوم مستخدم بعرض التطبيق حفظ ملف(أو فتح ملف) مربع حوار للمرة الأولى، مربع الحوار يجب تعيين الافتراضي إلى مجلد "المستندات" الخاص بالمستخدم (أو تابع للخاصة بي المستندات، مثل الصور لبيانات الصور والموسيقى للصوت ملفات).

ملاحظة: يمكنك يجب عدم رمز القرص الثابت مسار داخل التطبيق الخاص بك لأن لا يمكن ضمان موقعة الفعلي. على سبيل المثال، مسؤول قد نقل مجلد المستندات إلى موقع على شبكة.
  1. في الجزء العلوي من SavingData.cpp، إضافة التضمين التالية عبارات:
    #include <commdlg.h>   // for GetSaveFileName#include <shlobj.h>    // for SHGetFolderPath					
  2. إضافة النموذج الأولى التالية للدالة أونفيليسافيس :
    void OnFileSaveAs( HWND hWnd );					
  3. إنشاء دالة OnFileSaveAs الجديدة. داخل هذه الدالة، استخدم الدالة SHGetFolderPath بالاقتران مع معرف كسيدلCSIDL_MYPICTURES لاسترداد موقع المجلد الصحيح لتخزين بيانات الصورة. تمرير موقع هذا المجلد إلى دالة جيتسافيفيلينامي لعرض المقياس حفظ ملفمربع الحوار.

    يجب أن تظهر التعليمات البرمجية الخاصة بك كما يلي:
    void OnFileSaveAs(HWND hWnd){   OPENFILENAME openFile;   TCHAR szPath[MAX_PATH];   TCHAR szFile[MAX_PATH];    // Initialize OPENFILENAME structure.    ZeroMemory( &openFile, sizeof(OPENFILENAME) );    openFile.lStructSize = sizeof(OPENFILENAME);    szFile[0] = '\0';    openFile.hwndOwner = hWnd;    openFile.lpstrFile = szFile;    openFile.nMaxFile = sizeof(szFile)/sizeof(*szFile);    // Default to My Pictures. First, get its path.    if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_MYPICTURES,                                           NULL, 0, szPath ) ) )    {       // Set lpstrInitialDir to the path that SHGetFolderPath obtains.        // This causes GetSaveFileName to point to the My Pictures folder.          openFile.lpstrInitialDir = szPath;    }    // Display the standard File Save dialog box, defaulting to My Pictures.    if ( GetSaveFileName( &openFile ) == TRUE )    {        // User clicks the Save button.        // Save the file    }    else    {       // User cancels the File Save dialog box.    }}

التحقق من صحة الملف موقع الحفظ

  1. اضغط المفتاح F5 لبناء المشروع.
  2. تشغيل التطبيق، ثم انقر فوق حفظ باسممن ملف القائمة.
  3. تحقق من أن المعيار حفظ ملف الحوار مربع الافتراضي مجلد My pictures، كما يحدد CSIDL_MYPICTURES .
  4. انقر فوق "إلغاء الأمر" لإغلاق مربع الحوار، و قم بإغلاق التطبيق.

تذكر التحديد السابق الخاص بالمستخدم

لاستخدام لاحق حفظ ملف (أو فتح ملف) مربع الحوار، فمن المستحسن أن مربع الحوار الافتراضي للمستخدم مسبقاً بتحديد موقع.

إذا لم تقم توفير موقع مجلد أولى ضمن بنية OPENFILENAME ، جيتسافيفيليناميGetOpenFileName) العرض القياسي حفظ ملف أو ملف فتح مربع الحوار الذي يشير إلى مجلد "المستندات". بالإضافة إلى ذلك، إذا كان المستخدم قد يستخدم واحد من مربعات الحوار هذه مسبقاً وقام باختيار مجلد غير افتراضي، هذه الدالات الافتراضية تلقائياً مسبقاً استخدام المجلد.

لدعم أفضل الممارسات المستحسنة لاستهداف موقع مجلد معين (مثل الصور) المرة الأولى التي يقوم مستخدم بحفظ أو يقوم بتحميل الملف، وبعد ذلك الافتراضي للمستخدم بتحديدها سابقا موقع، يجب عليك استخدام متغير Boolean لتعقب ما إذا كانت هذه هي أول الوقت المستخدم يؤديه حفظ أو عملية الفتح.
  1. إنشاء متغير BOOL ثابت يسمى بفيرستسافي في الدالة أونفيليسافيس وتهيئته إلى TRUE.
  2. تعديل التعليمات البرمجية داخل أونفيليسافيس لاستدعاء شجيتفولديرباث وتعيين العضو لبسترينيتيالدير بنية OPENFILENAME ، فقط في حالة تحققبفيرستسافي .
  3. المستخدم بالنقر فوق حفظ فيحفظ ملف مربع الحوار، مجموعة بفيرستسافي إلىخطأ.

    يجب أن تظهر التعليمات البرمجية الخاصة بك كما يلي:
    void OnFileSaveAs(HWND hWnd){    OPENFILENAME openFile;    TCHAR szPath[MAX_PATH];    TCHAR szFile[MAX_PATH];    static BOOL bFirstSave = TRUE;    // Initialize OPENFILENAME structure.    ZeroMemory( &openFile, sizeof(OPENFILENAME) );    openFile.lStructSize = sizeof(OPENFILENAME);    szFile[0] = '\0';    openFile.hwndOwner = hWnd;    openFile.lpstrFile = szFile;    openFile.nMaxFile = sizeof(szFile)/sizeof(*szFile);    // The first time the user saves a document, default to My Pictures.    if ( TRUE == bFirstSave )    {        if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_MYPICTURES,             NULL, 0, szPath ) ) )        {            // Set lpstrInitialDir to the path that SHGetFolderPath obtains.            // This causes GetSaveFileName to point to the My Pictures folder.            openFile.lpstrInitialDir = szPath;        }    }    // Display standard File Save dialog box, defaulting to My Pictures    // or the user's previously selected location.    if ( GetSaveFileName( &openFile ) == TRUE )    {        // User clicks Save.        // Save the file.        bFirstSave = FALSE;    }    else    {        // User cancels the File Save dialog box.    }}

تحقق من تحديد المستخدم السابق

  1. بناء المشروع، وتشغيل التطبيق.
  2. من ملف القائمة، انقر فوق حفظ مثل.
  3. الاستعراض من مجلد الصور إلى "مجلد المستندات" المجلد، حدد ملف ثم انقر فوق حفظ.
  4. من ملف القائمة، انقر فوق حفظ مثل مرة أخرى.
  5. تحقق من أن مربع الحوار الافتراضي إلى السابق التحديد (في هذه الحالة، "المستندات").
  6. انقر فوق "إلغاء الأمر" لإغلاق مربع الحوار، وقم بإغلاق التطبيق.
  7. تشغيل التطبيق، ثم انقر فوق حفظ باسممن ملف القائمة.
  8. تحقق من أن مربع الحوار الافتراضي مرة أخرى إلى "مجلد الصور" مجلد.
  9. إغلاق مربع الحوار، ثم إنهاء التطبيق.

تصنيف بيانات التطبيق

لا يجب تخزين البيانات الخاصة بالتطبيق (مثل المؤقتة ملفات وتفضيلات المستخدم ملفات تكوين التطبيق وهكذا) في الخاصة بي مجلد "المستندات". بدلاً من ذلك، استخدم موقعا مناسباً في Windows التسجيل (للبيانات التي لا يتجاوز 64 كيلو بايت) أو الملفات الخاصة بالتطبيق الموجود في "بيانات التطبيق" صالح مجلد.

من المهم لتخزين بيانات التطبيق في الصحيح الموقع للسماح لعدة أشخاص باستخدام نفس جهاز الكمبيوتر دون إفساد أو الكتابة فوق البيانات وإعدادات كل منهما.

لتحديد أكثر مناسبة الموقع لبيانات التطبيق الخاص بك، استخدم الفئات التالية تصنيف البيانات الخاصة بك:
  • لكل مستخدم (المتجولة): يصف هذه الفئة بيانات التطبيق الخاصة مستخدم معين ويجب أن يكون للمستخدم كما يمكنه الانتقال بين أجهزة الكمبيوتر ضمن مجال (على سبيل المثال، قاموس مخصص). ملاحظة أن هذا لا ينطبق الإعداد على التطبيقات غير المصممة للتشغيل في مجال بيئة.
  • لكل مستخدم (غير المتجولة): يصف هذه الفئة بيانات التطبيق الخاصة مستخدم معين لكن يطبق فقط على جهاز كمبيوتر واحد (على سبيل المثال، دقة وضوح الشاشة المحددة من قبل المستخدم).
  • لكل كمبيوتر (غير مستخدم معينة وغير المتجولة): يصف هذه الفئة بيانات التطبيق التي تنطبق على الكل المستخدمين وعلى كمبيوتر معين (على سبيل المثال، وضع قاموس تطبيق، سجل ملف، أو ملف مؤقت).

تخزين بيانات التطبيق في الموقع الصحيح

يمكنك استخدام الدالة شجيتفولديرباث لاسترداد المجلد "بيانات التطبيق" الصحيح. لم تقم بذلك تخزين بيانات التطبيق مباشرة في هذا المجلد. بدلاً من ذلك، استخدم الدالة باثابيند لإلحاق مجلد فرعي للمسار الذي تقوم بإرجاع شجيتفولديرباث . تأكد من أنه يمكنك استخدام الاصطلاح التالي:
الإصدار Name\Product Name\Product الشركة
على سبيل المثال، قد يظهر المسار الكامل الناتجة كما يلي:
\Documents والإعدادات جميع المستخدمين بيانات التطبيق Data\My Company\My Product\1.0
لتحديد موقع المجلد "بيانات التطبيق" الصحيح، تمرير قيمة CSIDL المناسبة، استناداً إلى فئة بيانات التطبيق الخاص بك.
  • لكل مستخدم البيانات (المتجول)، استخدم القيمة CSIDL_APPDATA . الافتراضي هو المسار التالي:
    \Documents and Settings\اسم المستخدم> \Application البيانات
  • لكل مستخدم البيانات (الغير خاصة بالتجوال)، استخدم القيمة CSIDL_LOCAL_APPDATA . الافتراضي هو المسار التالي:
    \Documents and Settings\اسم المستخدم> البيانات \Local Settings\Application
  • لكل بيانات الكمبيوتر (غير مستخدم معينة والغير خاصة بالتجوال)، استخدم القيمة CSIDL_COMMON_APPDATA . الافتراضي هو المسار التالي:
    \Documents والإعدادات جميع المستخدمين بيانات التطبيق
جزء التعليمات البرمجية التالي يوضح كيفية فتح سجل الملف المؤقت، الذي يقع أسفل CSIDL_COMMON_APPDATA:
include <shlwapi.h>#pragma comment(lib,"shlwapi.lib")void CreateTemporaryFile(){   TCHAR szPath[MAX_PATH];   // Get path for each computer, non-user specific and non-roaming data.   if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA,                                     NULL, 0, szPath ) ) )   {      TCHAR szTempFileName[MAX_PATH];      // Append product-specific path - this path needs to already exist      // for GetTempFileName to succeed.      PathAppend( szPath, _T("\\My Company\\My Product\\1.0\\") );      // Generate a temporary file name within this folder.      if (GetTempFileName( szPath,                            _T("PRE"),                           0,                           szTempFileName ) != 0 )      {         HANDLE hFile = NULL;         // Open the file.         if (( hFile = CreateFile( szTempFileName,                                    GENERIC_WRITE,                                    0,                                    NULL,                                    CREATE_ALWAYS,                                    FILE_ATTRIBUTE_NORMAL,                                    NULL )) != INVALID_HANDLE_VALUE )         {            // Write temporary data (code omitted).            CloseHandle( hFile );         }      }      else          DWORD err = GetLastError();   }}

استخدام التسجيل حكمه

هام هذا المقطع أو أسلوب أو مهمة تحتوي على الخطوات التي توضح كيفية تعديل التسجيل. ومع ذلك، قد تحدث مشكلات خطيرة إذا قمت بتعديل السجل بشكل غير صحيح. لذلك، تأكد من اتباع هذه الخطوات بعناية. للحماية الإضافية، قم بعمل نسخة احتياطية من السجل قبل تعديله. بعد ذلك، يمكنك استعادة السجل في حالة حدوث مشكلة. لمزيد من المعلومات حول كيفية عمل نسخة احتياطية من السجل واستعادته، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
322756 كيفية عمل نسخة احتياطية من السجل واستعادته في نظام التشغيل Windows

يمكنك أيضا استخدام التسجيل لتخزين صغيرة مقدار بيانات التطبيق. للبيانات التي يتجاوز 64 كيلو بايت (KB)، يجب عليك استخدام مجلد "بيانات التطبيق". ملاحظة الإرشادات التالية عند استخدام التسجيل لتخزين بيانات التطبيق:
  • للحصول على كميات صغيرة من بيانات المستخدم، استخدم مفتاح التسجيل HKEY_CURRENT_USER (HKCU).
  • للحصول على كميات صغيرة من البيانات على الكمبيوتر، استخدم مفتاح التسجيل HKEY_LOCAL_MACHINE (HKLM). التطبيق الخاص بك يجب أن يكتب إلى HKLM في وقت التشغيل ل، بشكل افتراضي، المستخدمين غير المسؤولين فقط يكون لديك وصول للقراءة فقط إلى شجرة HKLM .
  • في وقت التثبيت، التطبيق الخاص بك يجب عدم تخزين أكثر من إجمالي 128 كيلو بايت عبر HKCU و HKLM.
  • يتم تسجيل مكونات طراز كائن (COM) مكون تحت مفتاح التسجيل HKEY_CLASSES_ROOT (HKCR). لا يتضمن الحد الأقصى 128 كيلو بايت HKCR.
  • عند الكتابة إلى HKLM أو HKCU, يجب عليك إنشاء مفاتيح لاسم الشركة، اسم المنتج، و رقم إصدار المنتج، كما يلي:
    الإصدار Name\Product Name\Product HKLM\Software\Company
    الإصدار Name\Product Name\Product HKCU\Software\Company
  • استخدم الدالتين التسجيل (مثل RegCreateKeyExوريجسيتفالويكس) لقراءة وكتابة إدخالات التسجيل.

استكشاف الأخطاء وإصلاحها

  • للمساعدة في ضمان أن التطبيقات تعمل على إصدارات سابقة من ترتبط windows بالإضافة إلى نظام التشغيل Windows XP، دوماً تنفيذ شجيتفولديرباث في Shfolder.dll. على الرغم من أنه يتضمن نظام التشغيل Windows XP شجيتفولديرباث في Shell32.dll، قد لا تدعم الإصدارات السابقة من Windows الدالة في مكتبة الارتباط الحيوي (DLL).
  • Shfolder.dll مكون القابلة لإعادة التوزيع وربما يكون توزيعها مع التطبيقات الخاصة بك.
  • لا تقم بتخزين المسارات مؤهل بشكل كامل "مجلد المستندات" المجلد (أو مجلدات النظام الأخرى) داخل تطبيقات خاصة بوضع مثل قائمة الملفات لمعظم الملفات الأخيرة لأن المستخدم أو المسؤول قد نقل هذه المجلدات بين الاستخدامات المتتابعة للتطبيق الخاص بك.
مراجع
لأخرى أعلى ضربها Visual c + +.NET قاعدة المعارف ل Microsoft مقالات، قم بزيارة مركز دعم.NET Visual c + + في Microsoft التالية موقع ويب: لمزيد من المعلومات حول مجموعة كاملة من المجلدات التي يمكن التعرف على شجيتفولديرباث ، راجع برامج Microsoft التالية على النظام الأساسي وثائق تطوير Kit (SDK): للحصول على مزيد من المعلومات حول برمجة shell بشكل عام، راجع موقع ويب شبكة مطوري Microsoft (MSDN) التالي:

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 310294 - آخر مراجعة: 07/20/2013 06:33:00 - المراجعة: 4.0

Microsoft Visual C++ 2008 Express Edition, Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbhowtomaster kbnewsgrouplink kbmt KB310294 KbMtar
تعليقات
&t=">cript> d=1&t=">eens track by $index -->
Paraguay - Español
Venezuela - Español
p;did=1&t=">