想做一个C++语言方面的实践,有趣的目标,但不知如何下手
申明不是无聊灌水
我想打印出象和多论坛里灌水的这种帖子
------------------------------分割线在此-----------------------------------
水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水
水水水水水水水水水水水水水水水水水水水水水水水水灌灌灌灌灌灌灌灌灌水水水水
水水水水水水水水水水水水水水水水水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水水水
水水水水水水水水水水水水水水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水水水
水水水水水水水水水水水灌灌灌灌水灌灌灌灌灌灌灌灌灌灌灌水水水水水水水水水水
水水水水水水水水灌灌灌灌灌灌灌水灌灌灌水水灌灌灌灌灌水水水水水水水水水水水
水水水灌灌灌灌灌灌灌灌灌灌灌灌水水水水水水灌灌灌灌水水水水水水水水水水水水
水灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水水水水水灌灌灌灌水水水水水水水水水水水水
水灌灌灌灌灌灌灌灌灌灌灌灌水水水水水水水灌灌灌灌灌灌灌灌灌灌灌水水水水水水
水灌灌灌灌灌灌灌灌灌灌灌灌水水水水水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水水水
水水灌灌灌灌灌灌灌灌灌灌水水水水水灌灌灌灌灌灌水水水灌灌灌灌灌灌灌水水水水
水水水水水水水水灌灌灌灌水水水水水灌灌灌灌水水水水水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水水灌灌水水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水水灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水水灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水灌灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水灌灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水灌灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水灌灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌水水灌灌灌灌水水灌灌灌灌灌水水水水水
水水灌灌水水水灌灌灌灌灌水水水水灌灌灌水水灌灌灌水水水灌灌灌灌灌水水水水水
水水灌灌灌灌灌灌灌灌灌灌水水水水水灌灌水水灌灌水水水水灌灌灌灌灌水水水水水
水水水灌灌灌灌灌灌灌灌灌水水水水水水水水灌灌灌水水水水灌灌灌灌水水水水水水
水水水水水灌灌灌灌灌灌灌水水水水水水水水灌灌灌水水水灌灌灌灌水水水水水水水
水水水水水水灌灌灌灌灌灌水水水水水水水灌灌灌灌水水灌灌灌灌灌水水水水水水水
水水水水水水水水水灌灌灌水水水水水水灌灌灌灌灌水水水灌灌灌灌灌灌灌水水水水
水水水水水水水水水水水水水水水水灌灌灌灌灌灌水水水水水灌灌灌灌灌灌水水水水
水水水水水水水水水水水水水水水灌灌灌灌灌灌水水水水水水灌灌灌灌灌灌灌水水水
水水水水水水水水水水水水水水灌灌灌灌灌水水水水水水水水水灌灌灌灌灌灌水水水
水水水水水水水水水水水水水灌灌灌灌灌水水水水水水水水水水水灌灌灌灌水水水水
水水水水水水水水水水水水灌灌灌水水水水水水水水水水水水水水水灌灌灌水水水水
-------------------------------------分割线再来一次------------------------
请问纯C++语言能实现么?
能的话怎么做呢?
[解决办法]
#include <windows.h>
#include "resource.h "
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HBITMAP GetBitmapFont();
void Printf(HWND hwnd,TCHAR * szFormat,...);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[]=TEXT( "water ");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=szAppName;
wndclass.lpszClassName=szAppName;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT( "This program requires Windows NT! "),szAppName,MB_ICONERROR);
return 0;
}
hwnd=CreateWindow(szAppName,
TEXT( "water "),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HWND hwndEdit;
HDC hdc;
int i,j;
static TCHAR *word=TEXT( "接 ");
HBITMAP hBitmap;
static HDC hdcMem;
HFONT hFont;
static SIZE size;
TEXTMETRIC tm;
switch(message)
{
case WM_CREATE:
hwndEdit=CreateWindow(TEXT( "edit "),NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY,
0,0,0,0,hwnd,(HMENU)1,((LPCREATESTRUCT)lParam)-> hInstance,NULL);
hdc=CreateIC(TEXT( "DISPLAY "),NULL,NULL,NULL);
GetTextMetrics(hdc,&tm);
hdcMem=CreateCompatibleDC(hdc);
hFont=CreateFont(3*tm.tmHeight,0,0,0,0,0,0,0,0,0,0,0,0,word);
hFont=(HFONT)SelectObject(hdcMem,hFont);
GetTextExtentPoint32(hdcMem,word,lstrlen(word),&size);
hBitmap=CreateBitmap(size.cx,size.cy,1,1,NULL);
SelectObject(hdcMem,hBitmap);
TextOut(hdcMem,0,0,word,lstrlen(word));
DeleteObject(SelectObject(hdcMem,hFont));
for(i=0;i <size.cx;++i)
{
for(j=0;j <size.cy-1;++j)
{
if(GetPixel(hdcMem,j,i)==COLORREF(RGB(0,0,0)))
Printf(hwndEdit,TEXT( "靠 "));
else
Printf(hwndEdit,TEXT( "分 "));
}
Printf(hwndEdit,TEXT( "\n "));
}
return 0;
case WM_SIZE:
MoveWindow(hwndEdit,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);
return 0;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_ABOUT:
MessageBox(NULL,TEXT( "Water\nVersion 1.0\n(c)2007 Ask u\nAll rights reserved. "),
TEXT( "water "),MB_ICONERROR);
break;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
void Printf(HWND hwnd,TCHAR * szFormat,...)
{
TCHAR szBuffer[1024];
va_list pArgList;
va_start(pArgList,szFormat);
wvsprintf(szBuffer,szFormat,pArgList);
va_end(pArgList);
SendMessage(hwnd,EM_SETSEL,(WPARAM)-1,(LPARAM)-1);
SendMessage(hwnd,EM_REPLACESEL,FALSE,(LPARAM)szBuffer);
SendMessage(hwnd,EM_SCROLLCARET,0,0);
}
这是代码,自己改了再编译...时间有限没有写通用函数....给分