Contact Delphi has also been a long time. It is very convenient to develop using Delphi, fast, Delphi itself provides a lot of components (more components on the Internet), which greatly reduces the workload of programmers. But the more convenient and more, the more works of Delphi itself do, and many people have not considered these, but also fully enjoying the shortcut and convenience of it. I am also a fan of C, I have a long time for learning and using C. After learning C / C , it is necessary to perform Windows programming, and there are two ways to use the SDK development package, and MFC There are also BCBs, and more, many people use SDK as a foundation, no matter how much or less, then gradually go to MFC, although it is not difficult to find the latter method. It is an improvement in the former method, with a gradual improving feeling, MFC is a package of API, which has brought huge convenience to procedural development.
There is a book "Windows programming" can be said to be a classic, I think many people have this book, the first complete example in the book is Hello, World, a simple form, with a Windows Form General feature, but wrote a lot of code. However, after learning the PASCAL syntax, using Delphi for Windows programming, it seems to be a bit jump to the use of VCL. For what news loop, message processing, but not involved, many reference books have not mentioned these, for me, I feel like it is C / C is born to develop Windows programs, seamless connection, PASCAL syntax is a slightest, it seems to be unsuitable (I can't feel at the beginning, I can't be able to use the SDK for Windows program development, then I checked it. A little matter, gradually explore, I found a little eyebrow, I hope to make progress with you. This example can be said to be a clone of the charles example, just the syntax is changed to Pascal, and there is also a message loop, message processing, and more here. There is also a detailed note to give the specific code of this program. I am divided into several processing functions for reading the relationship.
In the first time, it is also a new application and turn off the default window. There is also a code window. When the display prompt wants to save, select whether or not, then select the View source option in Project, skip to the code window, modify the code.
Program Project2;
Uses
Windows,
Messages;
VAR
MSG: TMSG;
WC: TwndClass; // registerclass () required by parameters
HWND: THANDLE; / / Handle of the main form
Const
Classname = 'mainwclass';
OutText = 'Hello';
Function mainwndproc (Handle: Thandle; Msgid: uint; wparam, lparam: integer): LRESULT; stdcall;
VAR
PDC: HDC;
LPRECT: TRECT;
Begin
RESULT: = 1;
Case msgid of
WM_CLOSE:
Begin // Close the message generated by the form
If MessageBox (Handle, 'Is it going to close this program?'
Else
Result: = 0;
EXIT;
END;
WM_DESTROY: // DestroyWindow () message generated
Begin
PostquitMessage (0);
END;
WM_PAINT:
Begin
PDC: = Getdc (hwnd);
GetClientRect (hwnd, lprect);
DrawText (PDC, OutText, 5, LPRECT, DT_SIINGLINE OR DT_CENTER OR DT_VCENTER);
// textout (PDC, 10, 10, OutText, 5);
ReleaseDC (HWND, PDC);
END;
END;
// The remaining message is handed over to the Windows preset handler, such as the WM_NCPAINT message of the form, etc.
Result: = DEFWINDOWPROC (Handle, Msgid, WPARAM, LPARAM);
END;
// Initialization, registration window class
Function INITAPPLICATION (Hinstance: Thandle): Boolean
Begin
// First use the registerclass () registration form, this is not the class in the Delphi data type.
Wc.style :=cs_hredraw or cs_vredraw;
Wc.lpfnwndproc: = @ mainwndproc; // message processing function
Wc.hinstance: = hinstance; // The handle of the program is also the base address
Wc.hicon: = loading (0, pchar (idi_application));
wc.hcursor: = loadingcursor (0, IDC_ARROW); // icon
wc.hbrbackground: = getStockObject (White_brush); // Background Paintbrush
wc.lpszclassname: = classname; // The context defined earlier
Result: = Boolean (RegisterClass (WC)); // Register this window class
END;
// InitInstance generated window
Function InitInstance (Hinstance: Thandle; NCMDSHOW: Integer): Boolean;
Begin
HWnd: = CREATEWINDOWEX (0,
Classname, // The name of the class that is just registered
'Example', // Form Title
WS_OVERLAPPEDWINDOW, // Form type, with title bar, system menu, maximization, minimize menu, and stretch border
Integer (CW_USEDEFAULT),
Integer (CW_USEDEFAULT),
Integer (CW_USEDEFAULT),
Integer (CW_USEDEFAULT),
0,
0,
Hinstance,
NIL
);
IF hWnd = 0 THEN
Begin
Result: = FALSE;
EXIT;
END;
ShowWindow (HWND, CMDSHOW);
UpdateWindow (HWND);
RESULT: = true;
END;
// Main program start
Begin
If not initApplication (hinstance) THEN HALT (0); // Initialization Registration window class
IF not initInstance (hinstance, cmdshow) Then Halt (0); // Generate Window While GetMessage (MSG, 0, 0) DO
Begin
TranslateMessage (MSG);
DispatchMessage (MSG); // This API assists a message to the corresponding form message processing function
END;
EXITCODE: = msg.wparam;
End.
The detailed code is given, which is drawn on the article, which is the most basic framework. If you use C to develop Windows program development, it is very familiar with the above code, it is true that it is really similar, and it is only a lot of variables. Writing is a bit different, and there are some attention to the function call.
I prefer to discuss with everyone, I like to investigate, I hope that you can discuss with me and make progress together.