الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال C و ++C

مغلق
بدأه سيف الدين 2 في 7 فبراير 2005 · 5 رد · 508 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل يممكن ان لغة C و++ C ان ترسم فورم في وقت التشغيل,,,

وكيف ذلك,,,,,,,

وشكراً

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#3

بطبيعة الحال تستطيع عمل كل تطبيقات ِسي و سي++ بالإعتماد فقط على دوال و كذلك بافي لغات البرمجة كالباسكال مثلا( برمجة فورم في ديلفي بدون VCL B) ) ..

هذا كود بلغة سي فقط, يقوم بإظهار فورم فارغة :unsure: بدون أية مركبات مرئية WinControls

#include <windows.h>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
return 0;

وهذا الكود لمبرمجي ديلفي :D :

program Project1;

uses
  Windows, Messages;
  {the Messages unit contains the windows
  Message constants like WM_COMMAND}

{$R *.RES}

var
  wClass: TWndClass;
  Msg: TMsg;

function WindowProc(hWnd,Msg,wParam,lParam:Integer):Integer; stdcall;
begin
 if Msg = WM_DESTROY then PostQuitMessage(0);
 Result := DefWindowProc(hWnd,Msg,wParam,lParam);
end;

begin
 wClass.lpszClassName:= 'CN';
 wClass.lpfnWndProc :=  @WindowProc;
 {CreateWindow( ) will not work without setting the
 2 wClass parameters above}

 wClass.hInstance := hInstance;
 wClass.hbrBackground:= 1;
 {CreateWindow( ) will still create a window without the
 2 wClass parameters above, but they shoud be included}

// wClass.hIcon := LoadIcon(hInstance,'MAINICON');
// wClass.hCursor := LoadCursor(0,IDC_ARROW);

 RegisterClass(wClass);

 CreateWindow(wClass.lpszClassName,'Title Bar',
              WS_OVERLAPPEDWINDOW or WS_VISIBLE,
              10,10,340,220,0,0,hInstance,nil);

 while GetMessage(Msg,0,0,0) do
   DispatchMessage(Msg);

end. //program end

(h)

تم تعديل هذه المشاركة بواسطة ikossan في 7 فبراير 2005 في 18:10

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#4

السلام عليكم,

وإذا كانت عندك الفورم مخزنة في الرسورس فستكون عملية إظهار النافذة أسهل بكثير وذلك باستعمال دالة أبي التالية :

int DialogBoxParam(
  HINSTANCE hInstance,  // handle to application instance
  LPCTSTR lpTemplateName,  // identifies dialog box template
  HWND hWndParent,      // handle to owner window
  DLGPROC lpDialogFunc, // pointer to dialog box procedure
  LPARAM dwInitParam    // initialization value
);

والبارامترات هي كما يلي :

1 : يدل على Instance للبرنامج الذي يحتوي على الرسورس وفي غالب الأحيان يكون الرسورس في نفس البرنامج لذى سنعطيه الإنستنس الحالي.

2 : اسم الرسورس الذي أعطيناه للفورم وهنا للسهولة حين نصنع الرسورس نعطيها اسما عوض رقما إذا كنا لا نريد استعمال ماكرويات إضافية.

3 : رقم نافذة أب الفورم هذا أو نعطي NULL إذا اعتبرنا أن هذا الفورم يعتبر أبا.

4 : عنوان الدالة التي ستتكلف بمعالجة الرسائل الموجهة إلى الفورم.

5 : بارامتر إضافي نرسله إلى الفورم في البداية إذا كنا نريد منها أشياءا أولية وفي غالب الأحيان نعطي هذا البارامتر قيمة NULL .

إلى اللقاء.

#5

شكراً لكم وبارك الله فيكوم................ :rolleyes:

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

هذا الموضوع مغلق.

مواضيع مشابهة