////////////////////////////////////////////////////////////////////////////////////////
///
/// SDK版恶作剧程序 作者:KA 时间:2005年5月31日早
///
/// 因为一夜没有睡还不困,一下想到大家要我用c++来改一下那个恶作剧程序,
/// 所以就试着改了一下,OK了!对了,一个人住你要我用VB写这个,我真的是好久不用了///VB了
/// 等过一段时间的吧,现在学习太忙,咱俩你就不要怪我了,呵呵!
///
/// 测试平台 visual c++ 6.0 windows2003英文版
///
/// 说明:运行vc++,点击新建点projects点Win32 Application,输入工程名,先择一个///空的工程
/// 进入后点新建,点新建一个原文件,然后把这些代码拷到源文件中,点运行,就可以看///到效果了
/// 在debug文件下就可以看到成后后的程序了,这个就可以运行了!
///
/// 其实这个真的很简单,大家只要了解API就可以做出来
/// 这在这里就显丑了,由于时间关系,我的语法可能不是很规范,大家就努力的看吧,
/// 如果有不明白的地方再找我,先声明一下,我的SDK不强的,只看了半个多月!
///
////////////////////////////////////////////////////////////////////////////////////////
#include
#include
#include
#include
#include "KALoop.h"
//-------------------------------------------------------------------------------------
#define SUNTIMER 2000//计时器标识号
////////////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//回调函数
BOOL initWindowClass(HINSTANCE);//注册窗口类函数
BOOL initWindow(HINSTANCE,int);//创建窗口函数
HWND hWndMain;//窗口句柄
HDC hdc;//设备环境句顶
void
///////////////////////////主函数/////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevIns,LPSTR lpCmdLine,int nShowCmd){
MSG msg;//
if(!initWindowClass(hInstance)){
MessageBeep(0);
return FALSE;
}
if(!initWindow(hInstance,SW_HIDE))//SW_HIDE是为了隐藏窗体如果是SW_SHOW就是显示窗体
return TRUE;
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
////////////////////////回调函数////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam){
int x,y,R,G,B;
char *str ="欢迎加入FJ联盟!";
char *str1=" 作者:KA";
static num;
switch (message) {
case WM_CREATE:
SetTimer(hwnd, SUNTIMER, 1000, (TIMERPROC)NULL);
//这里是调用timer,我没有用线程,因为这个好理解一些
return 0;
case WM_TIMER:
if (num>30)
{
num=0;
ShellExecute(hwnd,"open","http://www.fjleague.com",NULL,NULL,SW_SHOW);
//这个也是个API函数,可以用它来完成很多事的,你可以查一下MSDN
}
/*
由于时间关系,再加上我对SDK程序设计不强,所以就简单的写了一下
在这里我说明一下,x与y是屏幕的宽与高,可以用函数获得,好象是GetWindowRect吧
还有就是下面的TextOut函数,也可以通过函数来获得字体的高,我忘了那个是什么函了
所以就直接加上20,呵呵,大概的思想就是这样的了,你可以自已加上你的想法,改一下
这个代码,GetDC(0)是获得桌面的设备环境句柄,这样就可以在桌面上画上字和图片了
*/
x=rand()%800;//这几个就是得到随机数,屏幕的宽
y=rand()%600;//屏幕的高
R=rand()%255;//红色
G=rand()%255;//绿色
B=rand()%255;//蓝色
hdc=GetDC(0);//得到桌面设备环境句柄
SetTextColor(hdc,RGB(R,G,B));//设置字体颜色
SetBkMode(hdc,TRANSPARENT);//设置字体背影为透明
TextOut(hdc,x,y,str,strlen(str));//输出字体
TextOut(hdc,x+20,y+20,str1,strlen(str1));//输出字体
ReleaseDC(0,hdc);//这个是和GetDC函数对应的,记住在这个清除,要不然内存会出错的
num++;//记数变量,为了定时打开咱们的网站
//在这里图片我就不加,也忘了在sdk中怎么加了,因为在SDK下调用API真的挺麻烦的,
//如果你们感兴趣就自已动手吧!我还是喜欢用BCB来写程序!但现在正在学汇编,
//如果那位是汇编高手,请与我联系呀,教教我,呵呵!
return 0;
case WM_DESTROY:
KillTimer(hwnd,SUNTIMER);//关闭timer
PostQuitMessage(0);//发送消息
return 0;
}
return DefWindowProc(hwnd,message,wparam,lparam);
}
/////////////////////////注册窗口类/////////////////////////////////////////////////////
BOOL initWindowClass(HINSTANCE hInstance){
//这里我就不加注释了,因为这些是你一定要会的
WNDCLASS wc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor=NULL;
wc.hIcon=NULL;
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;
wc.lpszClassName="KA";
wc.lpszMenuName=NULL;
wc.style=0;
return RegisterClass(&wc);
}
/////////////////////////创建窗口////////////////////////////////////////////////////////
BOOL initWindow(HINSTANCE hInstance,int nShowCmd){
//这里我就不加注释了,因为这些是你一定要会的
HWND hwnd;
hwnd=CreateWindow("KA",NULL,NULL,50,50,50,50,NULL,NULL,hInstance,NULL);
hWndMain=hwnd;
if(!hwnd)
return FALSE;
ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);
return TRUE;
}
////////////////////////////////////////////////////////////////////////////////////////////