如何让客户区中的字符移动,例如有字符‘A’在客户区中间,怎么样让它上下左右移动?
博诺那 2013-05-08 12:24:56 下面是我写的代码
#include<Windows.h>
#include "resource.h"
LRESULT CALLBACK MyWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpCmdLine,int nCmdShow)
{
WNDCLASS wc;//定义窗口类
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = HBRUSH (COLOR_WINDOW+1);
wc.hCursor = NULL;
wc.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1));
wc.hInstance = hInstance;
wc.lpfnWndProc = MyWndProc;
wc.lpszClassName = TEXT("MyWin");
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
wc.style = CS_HREDRAW|CS_VREDRAW;
if(!RegisterClass(&wc))
{
return -1;
}
HWND hMainWnd = CreateWindow(TEXT("MyWin"),TEXT("sample"),WS_OVERLAPPEDWINDOW,0,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);//创建主窗口
if(NULL != hMainWnd)
{
ShowWindow(hMainWnd,nCmdShow);
}
MSG Msg;
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage (&Msg);
DispatchMessage(&Msg);
}
return 0;
}
HWND g_hBtton;
HINSTANCE g_hInst;
LRESULT CALLBACK MyWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
RECT rect;
PAINTSTRUCT ps;
int n = 5;
switch(uMsg)
{
case WM_CREATE:
g_hBtton = CreateWindow(TEXT("BUTTON"), TEXT("确定"), WS_CHILD | BS_DEFPUSHBUTTON | WS_VISIBLE,
20, 20,50,50, hWnd, (HMENU)123, g_hInst,NULL);
break;
case WM_COMMAND:
switch( HIWORD(wParam))
{
case BN_CLICKED:
MessageBox(NULL,TEXT("yes"),TEXT("GQ"),MB_YESNO);
break;
}
break;
case WM_KEYDOWN://此处不知道该怎么移动
switch(wParam)
{
case VK_LEFT:
n+=1;
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
GetClientRect(hWnd,&rect);
TextOut(hdc,rect.right/2,rect.bottom/2,TEXT("A"),1);
//DrawText(hdc,TEXT("hello"),-1,&rect,DT_SINGLELINE| DT_CENTER|DT_VCENTER);
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default :
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
//InvalidateRect(hWnd,NULL,TRUE);
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}