А правда, что программа, написаная на чистом 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);
}
|