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)
{<