
关于API的问题...
我想让一个win32窗口程序输出HELLOWORLD,摁键盘上的上键一下,就让helloworld的位置向上(其他方向也是).这个程序该怎么写呢?最好有详细的讲解.谢谢了...
我想让一个win32窗口程序输出HELLOWORLD,摁键盘上的上键一下,就让helloworld的位置向上(其他方向也是).这个程序该怎么写呢?最好有详细的讲解.谢谢了o(︶︿︶)o 唉
对了,是C++的程序 展开
对了,是C++的程序 展开
展开全部
记得建windows程序,不是控制台程序了。以下代码在VC6.0下测试通过。
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int g_nYPos = 200; //文字的Y坐标
long WINAPI WndProc( HWND hWnd,UINT iMessage,UINT wParam,LONG lParam );
BOOL InitWindowsClass( HINSTANCE hInstance );
BOOL InitWindows( HINSTANCE hInstance, int nCmdShow );
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow)
{
MSG Message;
if(!InitWindowsClass(hInstance))
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
return FALSE;
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
HBRUSH hBrush;
HPEN hPen;
PAINTSTRUCT PtStr;
switch(iMessage)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&PtStr);
SetMapMode(hDC,MM_ANISOTROPIC);
TextOut(hDC,200,g_nYPos,"HELLO WORLD",11); //在窗口中输出文字
EndPaint(hWnd,&PtStr);
return 0;
case WM_KEYUP: //响应按键释放消息
switch(wParam)
{
case VK_UP: //响应向上按键
g_nYPos -= 10; //Y坐标减少
break;
case VK_DOWN:
g_nYPos += 10; //Y坐标增加
break;
}
InvalidateRect(hWnd, NULL, TRUE);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow(
"WinFill",
"tianchongshili",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL);
if(!hWnd)
return FALSE;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,"END");
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="WinFill";
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW|CS_VREDRAW;
return RegisterClass(&WndClass);
}
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int g_nYPos = 200; //文字的Y坐标
long WINAPI WndProc( HWND hWnd,UINT iMessage,UINT wParam,LONG lParam );
BOOL InitWindowsClass( HINSTANCE hInstance );
BOOL InitWindows( HINSTANCE hInstance, int nCmdShow );
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow)
{
MSG Message;
if(!InitWindowsClass(hInstance))
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
return FALSE;
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
HBRUSH hBrush;
HPEN hPen;
PAINTSTRUCT PtStr;
switch(iMessage)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&PtStr);
SetMapMode(hDC,MM_ANISOTROPIC);
TextOut(hDC,200,g_nYPos,"HELLO WORLD",11); //在窗口中输出文字
EndPaint(hWnd,&PtStr);
return 0;
case WM_KEYUP: //响应按键释放消息
switch(wParam)
{
case VK_UP: //响应向上按键
g_nYPos -= 10; //Y坐标减少
break;
case VK_DOWN:
g_nYPos += 10; //Y坐标增加
break;
}
InvalidateRect(hWnd, NULL, TRUE);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow(
"WinFill",
"tianchongshili",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL);
if(!hWnd)
return FALSE;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,"END");
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="WinFill";
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW|CS_VREDRAW;
return RegisterClass(&WndClass);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询