Дело вот в чём..... я заинтересовался написанием программ, создающие окна и т.п. средствами API функций. Набрал листинг в C++Builder, а он не работает может требуются предварительные настройки среды (билдера) ? Мои действия : открыл новое приложение, Project -> View Source, стираю строки работающие с Application. Пишет ошибки : [Linker Error] Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6 \LIB\CP32MTI.LIB|crtlvcl [Linker Error] Unresolved external '__ExitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl [Linker Error] Unresolved external '__stdcall HelloWorldWndProc(void *, unsigned int, unsigned int, long)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ
Сам Код :
| Код | #include <windows.h>
LRESULT CALLBACK HelloWorldWndProc(HWND, UINT, UINT, LONG);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { HWND hWnd; WNDCLASS WndClass; MSG Msg; char szClassName[] = "Hello World";
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 No 1", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 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 HelloWordWndProc(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); }
|
Подскажите, ПОЖАЛУЙСТА, что я делаю неправильно ??? |