我目前正在检查Windows应用程序中字符的适当间距。 但是我想测试一下,所以我制作了这段代码片段,但它引发了一个例外,它只会在我增加r [0]时抛出它。
但是从我的理解r商店" A \ 0" .r [0]将取消引用' r [0]'这会增加对吗?我错了,如果有的话帮助我。
我使用了静态,因为r在WM_PAINT消息中。
//function starts
.
.
.
static LPTSTR r = TEXT("A");
TextOut(hdc, x, y + cy + cy + cspace + cspace, r, sizeof(r));
TextOut(hdc, x+tm.tmAveCharWidth*1.5, y + cy + cy + cspace + cspace, r, sizeof(r));
if (r[0]<93)
r[0]++;
.
.
.
答案 0 :(得分:1)
确定了以下几点:
TCHAR
:请避免使用它们,它们仅用于移植古老的Windows应用程序。你不是那样做的,对吗?sizeof(r)
是sizeof(LPTSTR)
,而不是您要传递的字符串的长度。使用strlen
或广泛的变体。答案 1 :(得分:1)
更改
static LPTSTR r = TEXT("A");
到
static TCHAR r[2] = _T("A");
你拥有的是一个指向常量字符串的指针。你不能改变常数。你需要做的是分配你可以实际修改的内存。