分享

鼠标-文本综合应用样例

 江南_yanyu 2011-10-31
#include <windows.h>
#include<stdlib.h>
#include <string.h>

BOOL InitWindowsClass(HINSTANCE hInstance);   //初始化窗口类声明
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);   //初始化窗口声明
HFONT CreateFont(HDC hDC,int nCharHeight,BOOL bItalic);
int i=0;
int x[11],y[11];
int color[11];
POINT pt;

int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
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;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;                                 //设备环境句柄
HFONT hF;                                //字体句柄
PAINTSTRUCT ps;                  //包含绘图信息的结构体变量
TEXTMETRIC tm;                     //包含字体信息的结构体变量
char str[]=" I Love You";            //输出的字符串
switch(iMessage)
{
case WM_CREATE:
SetTimer(hWnd,1,40,NULL);
GetCursorPos(&pt);
for (i=0;i<11;i++)
{
x[i]=pt.x;
y[i]=pt.y;
color[i]=25*(i-1);
}
break;
case WM_PAINT: //处理绘图信息
hDC=BeginPaint(hWnd,&ps); //获得设备环境指针
hF=CreateFont(hDC,40,0); //创建字体
SelectObject(hDC,hF); //选入字体
GetTextMetrics(hDC,&tm); //得到包含字体信息的结构体
for (i=10;i>1;i--)
{
x[i]=x[i-1]+50;
y[i]=y[i-1];
}
GetCursorPos(&pt);
x[1]=pt.x;
y[1]=pt.y;
for (i=1;i<11;i++)
{
SetTextColor(hDC,RGB(255-color[i],color[i],255));         //设置字体颜色
TextOut(hDC,x[i],y[i],&str[i],1);                       //输出从第1个到第nChar个字符
}
color[1]=color[10];
for (i=10;i>1;i--)
color[i]=color[i-1];
DeleteObject(hF);                                                //删除字体句柄
EndPaint(hWnd,&ps);                                         //删除设备用户指针
return 0;
case WM_TIMER:                                                      //处理由计时器发出的消息
InvalidateRect(hWnd,NULL,1);                          //刷新用户区
break;
case WM_DESTROY:
PostQuitMessage(0);
KillTimer(hWnd,1);                                          //删除计时器
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return 0;
}


BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow("键盘-鼠标综合应用示例",                      //窗口类名称
 "Mouse Text Application",  //标题栏名称
 WS_OVERLAPPEDWINDOW, //窗口样式
 0, //窗口左上角坐标
 0,
 800,                                          //窗口高度和宽度
 600,
 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,IDI_APPLICATION); //采用默认图标
WndClass.hInstance=hInstance; //当前实例
WndClass.lpfnWndProc=WndProc; //消息处理函数
WndClass.lpszClassName="键盘-鼠标综合应用示例"; //窗口类名称
WndClass.lpszMenuName=NULL; //无菜单
WndClass.style=0; //默认窗口风格
return RegisterClass(&WndClass); //返回窗口注册值
}

HFONT CreateFont(HDC hDC,int nCharHeight,BOOL bItalic)
{
HFONT hFont;
hFont=CreateFont( //定义字体句柄
nCharHeight, //字体高度
0, //系统根据高宽比选取字体最佳宽度值
0, //文本倾斜度,0表示水平
0, //字体倾斜度为0
400, //字体粗度,400为正常
bItalic, //是斜体字
0, //无下划线
0, //无删除线
ANSI_CHARSET, //ANSI_CHARSET字符集
OUT_DEFAULT_PRECIS, //删除精度为默认值
CLIP_DEFAULT_PRECIS, //裁剪精度为默认值
DEFAULT_QUALITY, //输出质量为默认值
DEFAULT_PITCH|FF_DONTCARE, //字间距
"Arial");
if(hFont==NULL)  
return NULL;
else
return hFont;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多