سؤال

حتى أنا مبتدئة في أي نوع من Windows البرمجة ذات الصلة.لقد لعب مع حولها Windows API وجاء عبر بضعة أمثلة على كيفية تهيئة إنشاء النوافذ مثل هذه.

مثال واحد يخلق نافذة عادية (لا يختصر بعض من القانون):

int WINAPI WinMain( [...] )
{

    [...]

    // Windows Class setup
    wndClass.cbSize = sizeof( wndClass );
    wndClass.style  = CS_HREDRAW | CS_VREDRAW;
    [...]    

    // Register class
    RegisterClassEx( &wndClass );

    // Create window
    hWnd = CreateWindow( szAppName, "Win32 App",
                         WS_OVERLAPPEDWINDOW,
                         0, 0, 512, 384,
                         NULL, NULL, hInstance, NULL );
    [...]
}

المثال الثاني يخلق مربع الحوار (لا الاختصارات ماعدا WinMain الحجج):

int WINAPI WinMain( [...] )
{
    // Create dialog box
    DialogBox(hInstance, 
              MAKEINTRESOURCE(IDD_MAIN_DLG), 
              NULL, 
              (DLGPROC)DialogProc);
}

المثال الثاني لا يحتوي على أي دعوة إلى السجل وظيفة.فإنه يخلق فقط DialogBox مع DialogProc عملية المرفقة.

هذا يعمل بشكل جيد, ولكن أنا أتساءل عما اذا كان هناك فائدة من تسجيل فئة الإطار ثم خلق مربع الحوار (إذا كان هذا ممكنا على الإطلاق).

هل كانت مفيدة؟

المحلول

لم يكن لديك لتسجيل مربع الحوار.

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

نصائح أخرى

انها كانت فترة من الوقت منذ أن كنت قد فعلت هذا ، ولكن IIRC, الحالة الأولى هي خلق حوار حيوي ، من الذاكرة القالب.المثال الثاني هو أكثر شيوعا في حالة إنشاء مربع حوار استخدام الموارد.ديناميكية الحوار الاشياء في Win32 كانت معقدة إلى حد ما ، ولكنه يسمح لك لخلق صورة حقيقية تعتمد على البيانات واجهة, و تجنب مشاكل مع تجميع الموارد مع DLLs.

أما لماذا استخدام Win32 - إذا كنت في حاجة الى التطبيق ويندوز و أنت لا تريد أن تعتمد على MFC أو .وقت تشغيل NET, ثم وهذا هو ما كنت تستخدم.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top