15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту

Borland C++ Builder FAQ
Составлен по материалам форума на Исходниках.Ru
Содержание Последнее обновление: 14.02.2004

А правда, что программа, написаная на чистом API имеет очень маленький размер? Можно пример?

Автор: kenai
Исходная ссылка: - - -

Правда, но вряд ли имеет смысл использовать для этих целей именно C++Builder.

Пример программы на Win32 API:
#include <windows.h>

LRESULT CALLBACK HelloWorldWndProc (HWND,UINT,UINT,LONG); 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int 
nCmdShow) 
{ 
HWND hWnd; 
WNDCLASS WndClass; 
MSG Msg; 
char szClassName[]="HelloWorld"; 
WndClass.style=CS_HREDRAW | CS_VREDRAW; 
WndClass.lpfnWndProc=HelloWorldWndProc; 
WndClass.cbClsExtra=0; 
WndClass.cbWndExtra=0; 
WndClass.hInstance=hInstance; 
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); 
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); 
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); 
WndClass.lpszMenuName=NULL; 
WndClass.lpszClassName=szClassName; 

if(!RegisterClass(&WndClass)) 
{ 
MessageBox(NULL,"Cannot register class","Error",MB_OK); 
return 0; 
} 

hWnd=CreateWindow(szClassName,"Program №1",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,NULL,NULL,NULL,hInstance,NULL);

if(!hWnd) 
{ 
MessageBox(NULL,"Cannot create window","Error",MB_OK); 
return 0; 
} 

ShowWindow(hWnd,nCmdShow); 
UpdateWindow(hWnd); 

while(GetMessage(&Msg,NULL,0,0)) 
{ 
TranslateMessage(&Msg); 
DispatchMessage(&Msg); 
} 
return Msg.wParam; 
} 

LRESULT CALLBACK HelloWorldWndProc(HWND hWnd,UINT Message,UINT wParam,LONG lParam) 
{ 
HDC hDC; 
PAINTSTRUCT PaintStruct; 
RECT Rect; 
switch(Message) 
{ 
case WM_PAINT: 
hDC=BeginPaint(hWnd,&PaintStruct); 
GetClientRect(hWnd,&Rect); 
DrawText(hDC,"Hello World!",-1,&Rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER); 
EndPaint(hWnd,&PaintStruct); 
return 0; 
case WM_DESTROY: 
PostQuitMessage(0); 
return 0; 
} 
return DefWindowProc(hWnd,Message,wParam,lParam); 
}