WIN API VK_RETURN 换行 输入问题

来源:百度知道 编辑:UC知道 时间:2024/05/03 10:53:50
怎么实现?
搞了好久没明白
static int WNDX=0; //x point to TextOut
static int WNDY=0; //y point to TextOut
static char strtemp[2]; //
static char strDisplay[1024]={0};

char * pstrLine = strDisplay;
int iSize=20 ;

int isLen=0;

int iLen = strlen(strDisplay);
static int iPrintCount=(iLen / iSize);
static int iCount=0;
static int iYPlus=20;

switch(uMsg)
{
case WM_CHAR:

{
memset(strtemp, 0, sizeof(strtemp));
if ((TCHAR)wParam !=8)//&&((TCHAR)wParam !=13))

sprintf(strtemp,"%c",wParam);
strcat(strDisplay,strtemp);

InvalidateRect(hwnd,NULL,TRUE);
break;
}
case WM_KEYDOWN:
{ switch(wParam)
{
case VK_BACK:
strDisplay[iLen-1]=32;
break;

case VK_SPACE:
strDisplay[iLen]=32;
break;

哪里没明白?

没太改,发现里面有几个地方有问题。首先外边的int iLen = strlen(strDisplay);
static int iPrintCount=(iLen / iSize); 都应该放到字符串改动的时候计算(WM_CHAR),不应该给了一个初始数值就没了。

还有就是isize经常会出现是0的问题。

可以参考下WINDOWS程序设计这本书。

简单的改了下.
定义部分
static int WNDX=0; //x point to TextOut
static int WNDY=0; //y point to TextOut
static char strtemp[2]={0}; //
static char strDisplay[1024]={0};

char * pstrLine = strDisplay;
int iSize=20 ;

int isLen=0;

int iLen;
static int iPrintCount;
static int iYPlus;

回调函数
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
HWND hwnd = hWnd;
iLen = strlen(strDisplay);
iPrintCount=iLen;
pstrLine = strDisplay;
char * pch, *last_pch;
switch (message)
{

case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{<