利用HDC随机在工作区随机颜色产生文字
2007-11-23 11:08
351 查看
// DEMO3_5.CPP - text printing demo
// INCLUDES ///////////////////////////////////////////////
#define WIN32_LEAN_AND_MEAN // just say no to MFC
#include <windows.h> // include all the windows headers
#include <windowsx.h> // include useful macros
#include <mmsystem.h> // very important and include WINMM.LIB too!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// DEFINES ////////////////////////////////////////////////
// defines for windows
#define WINDOW_CLASS_NAME "WINCLASS1"
// GLOBALS ////////////////////////////////////////////////
HWND main_window_handle = NULL; // globally track main window
HINSTANCE hinstance_app = NULL; // globally track hinstance
// FUNCTIONS //////////////////////////////////////////////
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT ps; // used in WM_PAINT
HDC hdc; // handle to a device context
// what is the message
switch(msg)
{
case WM_CREATE:
{
// do initialization stuff here
// return success
return(0);
} break;
case WM_PAINT:
{
// simply validate the window
hdc = BeginPaint(hwnd,&ps);
// you would do all your painting here
EndPaint(hwnd,&ps);
// return success
return(0);
} break;
case WM_DESTROY:
{
// kill the application, this sends a WM_QUIT message
PostQuitMessage(0);
// return success
return(0);
} break;
default:break;
} // end switch
// process any messages that we didn't take care of
return (DefWindowProc(hwnd, msg, wparam, lparam));
} // end WinProc
// WINMAIN ////////////////////////////////////////////////
int WINAPI WinMain( HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASSEX winclass; // this will hold the class we create
HWND hwnd; // generic window handle
MSG msg; // generic message
// first fill in the window class stucture
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS | CS_OWNDC |
CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME;
winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// save hinstance in global
hinstance_app = hinstance;
// register the window class
if (!RegisterClassEx(&winclass))
return(0);
// create the window
if (!(hwnd = CreateWindowEx(NULL, // extended style
WINDOW_CLASS_NAME, // class
"GDI Text Printing Demo", // title
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0,0, // initial x,y
400,400, // initial width, height
NULL, // handle to parent
NULL, // handle to menu
hinstance,// instance of this application
NULL))) // extra creation parms
return(0);
// save main window handle
main_window_handle = hwnd;
// get the dc and hold it
HDC hdc = GetDC(hwnd); //获取一个hdc句柄
// enter main event loop, but this time we use PeekMessage()
// instead of GetMessage() to retrieve messages
while(TRUE)
{
// test if there is a message in queue, if so get it
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
// test if this is a quit
if (msg.message == WM_QUIT)
break;
// translate any accelerator keys
TranslateMessage(&msg);
// send the message to the window proc
DispatchMessage(&msg);
} // end if
//在未有消息的情况下执行这些工作
// main game processing goes here
// set the foreground color to random 随机产生RGB色
SetTextColor(hdc, RGB(rand()%256,rand()%256,rand()%256)); //The SetTextColor function sets the text color for the specified device context to the specified color
//其中两个参数,一个是HDC,一个是COLORREF参数 The COLORREF value is used to specify an RGB color. 用来指明RGB颜色
// set the background color to black //设置HDC的背景色
SetBkColor(hdc, RGB(0,0,0)); //The SetBkColor function sets the current background color to the specified color value, or to the nearest physical color if the device cannot represent the specified color value
// finally set the transparency mode to transparent 将HDC背景为透明
SetBkMode(hdc, TRANSPARENT); //The SetBkMode function sets the background mix mode of the specified device context. The background mix mode is used with text, hatched brushes, and pen styles that are not solid lines
// draw some text at a random location //向工作区用HDC画出随机的X,Y处写出"GDI Text Demo!",长度
TextOut(hdc,rand()%400,rand()%400, "GDI Text Demo!", strlen("GDI Text Demo!"));
Sleep(20); //让线程休眠10毫秒
} // end while
// release the dc
ReleaseDC(hwnd,hdc);
// return to Windows like this
return(msg.wParam);
} // end WinMain
///////////////////////////////////////////////////////////
// INCLUDES ///////////////////////////////////////////////
#define WIN32_LEAN_AND_MEAN // just say no to MFC
#include <windows.h> // include all the windows headers
#include <windowsx.h> // include useful macros
#include <mmsystem.h> // very important and include WINMM.LIB too!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// DEFINES ////////////////////////////////////////////////
// defines for windows
#define WINDOW_CLASS_NAME "WINCLASS1"
// GLOBALS ////////////////////////////////////////////////
HWND main_window_handle = NULL; // globally track main window
HINSTANCE hinstance_app = NULL; // globally track hinstance
// FUNCTIONS //////////////////////////////////////////////
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT ps; // used in WM_PAINT
HDC hdc; // handle to a device context
// what is the message
switch(msg)
{
case WM_CREATE:
{
// do initialization stuff here
// return success
return(0);
} break;
case WM_PAINT:
{
// simply validate the window
hdc = BeginPaint(hwnd,&ps);
// you would do all your painting here
EndPaint(hwnd,&ps);
// return success
return(0);
} break;
case WM_DESTROY:
{
// kill the application, this sends a WM_QUIT message
PostQuitMessage(0);
// return success
return(0);
} break;
default:break;
} // end switch
// process any messages that we didn't take care of
return (DefWindowProc(hwnd, msg, wparam, lparam));
} // end WinProc
// WINMAIN ////////////////////////////////////////////////
int WINAPI WinMain( HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASSEX winclass; // this will hold the class we create
HWND hwnd; // generic window handle
MSG msg; // generic message
// first fill in the window class stucture
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_DBLCLKS | CS_OWNDC |
CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME;
winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// save hinstance in global
hinstance_app = hinstance;
// register the window class
if (!RegisterClassEx(&winclass))
return(0);
// create the window
if (!(hwnd = CreateWindowEx(NULL, // extended style
WINDOW_CLASS_NAME, // class
"GDI Text Printing Demo", // title
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0,0, // initial x,y
400,400, // initial width, height
NULL, // handle to parent
NULL, // handle to menu
hinstance,// instance of this application
NULL))) // extra creation parms
return(0);
// save main window handle
main_window_handle = hwnd;
// get the dc and hold it
HDC hdc = GetDC(hwnd); //获取一个hdc句柄
// enter main event loop, but this time we use PeekMessage()
// instead of GetMessage() to retrieve messages
while(TRUE)
{
// test if there is a message in queue, if so get it
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
// test if this is a quit
if (msg.message == WM_QUIT)
break;
// translate any accelerator keys
TranslateMessage(&msg);
// send the message to the window proc
DispatchMessage(&msg);
} // end if
//在未有消息的情况下执行这些工作
// main game processing goes here
// set the foreground color to random 随机产生RGB色
SetTextColor(hdc, RGB(rand()%256,rand()%256,rand()%256)); //The SetTextColor function sets the text color for the specified device context to the specified color
//其中两个参数,一个是HDC,一个是COLORREF参数 The COLORREF value is used to specify an RGB color. 用来指明RGB颜色
// set the background color to black //设置HDC的背景色
SetBkColor(hdc, RGB(0,0,0)); //The SetBkColor function sets the current background color to the specified color value, or to the nearest physical color if the device cannot represent the specified color value
// finally set the transparency mode to transparent 将HDC背景为透明
SetBkMode(hdc, TRANSPARENT); //The SetBkMode function sets the background mix mode of the specified device context. The background mix mode is used with text, hatched brushes, and pen styles that are not solid lines
// draw some text at a random location //向工作区用HDC画出随机的X,Y处写出"GDI Text Demo!",长度
TextOut(hdc,rand()%400,rand()%400, "GDI Text Demo!", strlen("GDI Text Demo!"));
Sleep(20); //让线程休眠10毫秒
} // end while
// release the dc
ReleaseDC(hwnd,hdc);
// return to Windows like this
return(msg.wParam);
} // end WinMain
///////////////////////////////////////////////////////////
相关文章推荐
- 利用线程休眠和Graphics 对象在窗体中画线段,颜色随机产生
- 利用javascript随机改变文字,页面和行的颜色
- 利用SpannableStringBuilder设置TextView中部分文字的颜色
- 文字颜色随机变换
- JS支持负数的进制转换和产生随机颜色
- 利用PHP产生随机验证码
- 利用Random类产生5 个1-30之间(包括1和20)的随机整数。
- 利用Random类产生5 个1-30之间(包括1和20)的随机整数。
- 利用反射来更改Android原生DatePicker文字与分割线颜色
- c#产生随机颜色
- C++中的srand(time(null))利用时间设置随机种子产生随机数
- Flex 产生随机数、随机颜色
- iOS利用storyboard修改UITextField的placeholder文字颜色
- 产生随机图片,并返回图片内的文字
- 利用舍取法在多边基底内产生若干个随机点
- 高效工作之Outlook变更文字颜色
- 利用Random类产生5 个1-30之间(包括1和20)的随机整数。
- Android利用SpannableStringBuilder设置TextView中部分文字的颜色...
- js产生随机颜色
- 怎么利用runtime来改变文本框占位文字的颜色?