פתיחת קובץ

נושא זה מתאר דוגמה של קוד מציג תיבת דו-שיח של לפתוח כך שהמשתמש יכול לציין את הכונן, הספריה ואת השם של הקובץ כדי לפתוח. הקוד לדוגמה תחילה אתחול מבנה הפרמטר OPENFILENAME , ולאחר מכן קורא את הפונקציה GetOpenFileName כדי להציג את תיבת הדו-שיח.

בדוגמה זו, חבר lpstrFilter מצביע למאגר המציין שני מסננים שם קובץ המשתמש יכול לבחור להגביל את שמות הקבצים מוצגים. המאגר מכיל מגוון הסתיים null כפול של מחרוזות שבו כל זוג של מחרוזות ציון מסנן. חבר nFilterIndex מציין התבנית הראשונה משמשת בעת יצירת תיבת הדו-שיח.

דוגמה זו מגדירה את הדגלים OFN_PATHMUSTEXIST ו- OFN_FILEMUSTEXIST חבר דגלים . דגלים אלה לגרום את תיבת הדו-שיח כדי לוודא, לפני החזרה, קיים למעשה הנתיב ושם הקובץ שצוין על-ידי המשתמש.

הפונקציה GetOpenFileName מחזירה TRUE אם המשתמש לוחץ על לחצן אישור , שם הקובץ והנתיב שצוינו קיימים. במקרה זה, מאגר הצביע על-ידי חבר lpstrFile מכיל את הנתיב ושם הקובץ. הקוד לדוגמה משתמשת במידע זה בשיחה CreateFile פונקציה לפתיחת הקובץ.

למרות דוגמה זו אינו קובע את הדגל OFN_EXPLORER, הוא עדיין מציג ברירת המחדל בסגנון Explorer פתוח בתיבת הדו-שיח. עם זאת, אם ברצונך לספק שגרה hook או תבנית מותאמת אישית, וברצונך את ממשק המשתמש של Explorer, עליך להגדיר את הדגל OFN_EXPLORER.

הפרמטר OPENFILENAME ofn;       / / מבנה תיבת דו-שיח נפוצות
תו szFile [260];       / / מאגר עבור שם קובץ
HWND hwnd;              / / חלון בעלים
לטפל תדר גבוה;              / / קובץ נקודת אחיזה

/ / לאתחל את הפרמטר OPENFILENAME
ZeroMemory (כח; ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0 ";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.דגלים = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

/ / להציג את תיבת הדו-שיח פתיחה. 

אם (GetOpenFileName(&ofn) = = TRUE) hf = CreateFile (ofn.lpstrFile, GENERIC_READ,
        0, NULL (LPSECURITY_ATTRIBUTES),
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
        (נקודת האחיזה) NULL) 

Index