여기는 저의 2004~2007년까지의 기록입니다. 이 블로그는 이제 Tistory로 옮겼습니다.
2008년부터의 기록은 http://blog.studioego.info 로 가시기 바랍니다.

StudioEgo's Thoughts, seasonⅡ


점뿌리는 프로그램
책보고 따라 했는데 재미있네요.^^
이제 시험기간도 끝났는데 Win32 API공부에 버닝이다~

점뿌리기 프로그램은 API로 만들었습니다.
점뿌리는 소스코드
SetPixel(hdc,rand()%500, rand()%400, RGB(rand()%256, rand()%256, rand()%256));
에서 RGB코드를 바꾸서 보여주는 것과
SetTimer(hWnd, 1, 100, (TIMERPROC)TimerProc);
에서 타이머를 100(0.1초)에서 1000(1초) 10(0.01초)로 바꿔줘서 했더니 재미있는 프로그램이 되었네요^^



최대화 버튼과 최소화 버튼을 보여주게 했습니다.

최대화 버튼과 최소화 버튼을 안보여주게 했습니다
WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX ^ WS_MINIMIZEBOX ^ WS_THICKFRAME
이렇게 처리했더니 안보이게 되네요.

API가 비트연산자를 많이 쓰는 가를 알 수 있었네요^^

시간날때마나 API공부닷~

#include

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="First";

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;

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)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW ;
RegisterClass(&WndClass);

hWnd=CreateWindow(lpszClass, "점뿌리는 프로그램", WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX ^ WS_MINIMIZEBOX ^ WS_THICKFRAME, CW_USEDEFAULT, CW_USEDEFAULT, 500, 400, NULL, (HMENU)NULL, hInstance, NULL);
ShowWindow(hWnd, nCmdShow);

while(GetMessage(&Message, 0, 0, 0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
void CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
HDC hdc;
int i;
hdc = GetDC(hWnd);
for(i=0;i<100;i++)
SetPixel(hdc,rand()%500, rand()%400, RGB(rand()%256, rand()%256, rand()%256));
ReleaseDC(hWnd, hdc);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
switch(iMessage) {

case WM_CREATE :
SetTimer(hWnd, 1, 100, (TIMERPROC)TimerProc);
return 0;

case WM_DESTROY :
KillTimer(hWnd, 1);
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
by Egoo | 2005/11/05 23:52 | 컴퓨터 | 트랙백 | 덧글(1)
트랙백 주소 : http://sungdh86.egloos.com/tb/1904506
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by Astralleno at 2005/11/13 11:30
홧팅!!

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >