RSSole
May 25th, 2006, 09:46 AM
I've just started reading Win Graphics Programming by Feng Yuan book. Unfortunately, problem have arisen with one of first sample programs, here is source:
#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#include <assert.h>
void CenterText(HDC hDC, int x, int y, LPCTSTR szFace,
LPCTSTR szMessage, int point)
{
HFONT hFont = CreateFont(- point * GetDeviceCaps(hDC, LOGPIXELSY) / 72,
0, 0, 0, FW_BOLD, TRUE, FALSE, FALSE,
ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS,
PROOF_QUALITY, VARIABLE_PITCH, szFace);
// assert(hFont);
HGDIOBJ hOld = SelectObject(hDC, hFont);
SetTextAlign(hDC, TA_CENTER | TA_BASELINE);
SetBkMode(hDC, TRANSPARENT);
SetTextColor(hDC, RGB(0, 0, 0xFF));
TextOut(hDC, x, y, szMessage, _tcslen(szMessage));
SelectObject(hDC, hOld);
DeleteObject(hFont);
}
const TCHAR szMessage[] = _T("Hello, World");
const TCHAR szFace[] = _T("Times New Roman");
#pragma comment(linker, "-merge:.rdata=.text")
#pragma comment(linker, "-align:512")
extern "C" void WinMainCRTStartup()
{
HDC hDC = GetDC(NULL);
// assert(hDC);
CenterText(hDC, GetSystemMetrics(SM_CXSCREEN) / 2,
GetSystemMetrics(SM_CYSCREEN) / 2,
szFace, szMessage, 72);
ReleaseDC(NULL, hDC);
ExitProcess(0);
}
When I' ve tried to build application, linker reported error that there is unresolved external reference (if I understood well - external reference on WinMainCRTStartup). I know that sample is created with VC++ 6 (I am using VC++ 2005) and that is probably cause of problem but I've not been able to solve it yet. Even replaced WinMainCRT with main() and WinMain(...) but that didn't solve problem or did cause unexpected behavior of program. Any suggestion/advice on this problem would be appreciated. Thanks in advance.
#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#include <assert.h>
void CenterText(HDC hDC, int x, int y, LPCTSTR szFace,
LPCTSTR szMessage, int point)
{
HFONT hFont = CreateFont(- point * GetDeviceCaps(hDC, LOGPIXELSY) / 72,
0, 0, 0, FW_BOLD, TRUE, FALSE, FALSE,
ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS,
PROOF_QUALITY, VARIABLE_PITCH, szFace);
// assert(hFont);
HGDIOBJ hOld = SelectObject(hDC, hFont);
SetTextAlign(hDC, TA_CENTER | TA_BASELINE);
SetBkMode(hDC, TRANSPARENT);
SetTextColor(hDC, RGB(0, 0, 0xFF));
TextOut(hDC, x, y, szMessage, _tcslen(szMessage));
SelectObject(hDC, hOld);
DeleteObject(hFont);
}
const TCHAR szMessage[] = _T("Hello, World");
const TCHAR szFace[] = _T("Times New Roman");
#pragma comment(linker, "-merge:.rdata=.text")
#pragma comment(linker, "-align:512")
extern "C" void WinMainCRTStartup()
{
HDC hDC = GetDC(NULL);
// assert(hDC);
CenterText(hDC, GetSystemMetrics(SM_CXSCREEN) / 2,
GetSystemMetrics(SM_CYSCREEN) / 2,
szFace, szMessage, 72);
ReleaseDC(NULL, hDC);
ExitProcess(0);
}
When I' ve tried to build application, linker reported error that there is unresolved external reference (if I understood well - external reference on WinMainCRTStartup). I know that sample is created with VC++ 6 (I am using VC++ 2005) and that is probably cause of problem but I've not been able to solve it yet. Even replaced WinMainCRT with main() and WinMain(...) but that didn't solve problem or did cause unexpected behavior of program. Any suggestion/advice on this problem would be appreciated. Thanks in advance.