Áú¹®°ú ´äº¯

À©µµ¿ìÁî APIÁ¤º¹ 1±Ç ÄݹéÇÔ¼ö(108ÆäÀÌÁö) Áú¹®ÀÖ½À´Ï´Ù. ³¯Â¥:2022-5-15 2:34:37 Á¶È¸¼ö:418
ÀÛ¼ºÀÚ : Ȳ±Ý°¡¹°Ä¡
Æ÷ÀÎÆ® : 49
°¡ÀÔÀÏ : 2022-05-06 15:33:18
¹æ¹®È½¼ö : 45
±Û 7°³, ´ñ±Û 7°³
¼Ò°³ : ¾È³çÇϼ¼¿ä. À©µµ¿ìÁîapi¸¦ °øºÎÇϱâÀ§ÇÏ¿© °¡ÀÔÇß½À´Ï´Ù. Àß ºÎʵ右´Ï´Ù.
ÀÛ¼º±Û º¸±â
ÂÊÁö º¸³»±â
¿¹Á¦ ÄݹéÇÔ¼ö ¼Ò½ºÄÚµå µû¶óÇϸ鼭 Çϴµ¥ ¿À·ù°¡ ³³´Ï´Ù. ºñÁÖ¾ó½ºÆ©µð¿À 2022»ç¿ë ÁßÀÔ´Ï´Ù.
RGBºÎºÐ¿¡¼­ ¿À·ù¿Í SetTimerÇÔ¼ö¿¡¼­ ¿À·ù°¡ ³³´Ï´Ù. È®ÀκÎŹµå¸³´Ï´Ù.
Á¦°¡ ÀÛ¼ºÇÑ ÆÄÀÏ ¿Ã·Áµå¸³´Ï´Ù.
È®ÀκÎŹµå¸³´Ï´Ù.



#include<Windows.h>
#include<WinUser.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

HINSTANCE g_hInst;
LPCTSTR lpszClass = TEXT("Callback");

int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lnCmdLine, _In_ 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;
    WndClass.lpszClassName = lpszClass;
    WndClass.lpszMenuName = NULL;
    WndClass.style = CS_HREDRAW | CS_VREDRAW;

    RegisterClass(&WndClass);

    hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, 600, 300, 500, 500, NULL, (HMENU)NULL, hInstance, NULL);
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while (GetMessage(&message, NULL, 0, 0)) {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    return((int)message.wParam);

}

void CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT idEvent, DWORD dwTime) {
    HDC hdc;
    int i;
    hdc = GetDC(hWnd);
    for (i = 0; i < 1000; 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) {

    HDC hdc;

    switch (iMessage) {
    case WM_CREATE:
        SetTimer(hWnd, 1, 100, TimerProc); //¿À·ù¹ß»ý
        return(0);
    case WM_LBUTTONDOWN:
        hdc = GetDC(hWnd);
        Ellipse(hdc, LOWORD(lParam) - 10, HIWORD(lParam) - 10, LOWORD(lParam) + 10, HIWORD(lParam) + 10);
        ReleaseDC(hWnd, hdc);
        return(0);
    case WM_DESTROY:
        KillTimer(hWnd, 1);
        PostQuitMessage(0);
        return(0);
    }

    return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}



±è¹Î¼ö
÷ºÎ ÆÄÀÏ 220515-143431_Ex29_CallBack.zip(3650 byte). ´Ù¿î·Îµå : 59

¸ñ·Ïº¸±â »èÁ¦ ¼öÁ¤ ½Å°í ½ºÅ©·¦

ÀÛ°¡K 5¿ù15ÀÏ 10:35:27  

RGB(rand() % 256, rand() % 256, , rand() % 256));

ÀÌ ÁÙ¿¡¼­ Áß°£¿¡ ÄÞ¸¶°¡ 2°³ÀÔ´Ï´Ù.
Çϳª¸¦ Áö¿ì½Ã¸é Àß ÄÄÆÄÀÏ µË´Ï´Ù.

Ȳ±Ý°¡¹°Ä¡ 5¿ù15ÀÏ 10:44:53  

void CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)·Î ¼öÁ¤ÇÏ´Ï µÇ³×¿ä.
ºñÁÖ¾ó ½ºÆ©µð¿À 2022¿¡¼­ UINT idEvent°¡ ¾Æ´Ñ UINT_PTR idEvent·Î º¯°æµÈ °ÍÀÎÁö¿ä?

ÀÛ°¡K 5¿ù16ÀÏ 12:01:34  

ÄÞ¸¶°¡ µÎ °³¿©¼­ ¹ß»ýÇÑ ¿¡·¯ÀÌÁö ¿øÇü°ú´Â »ó°ü ¾ø½À´Ï´Ù.
UINT_PTRÀº 64ºñÆ®·Î ÄÄÆÄÀÏÇÒ ¶§ 64ºñÆ® Á¤¼ö°¡ µÇ´Â Áß°£ ŸÀÔÀ̸ç 32ºñÆ®·Î ÄÄÆÄÀÏÇϸé UINT¿Í °°½À´Ï´Ù.

Ȳ±Ý°¡¹°Ä¡ 5¿ù16ÀÏ 10:24:27  

ÇöÀç ºñÁÖ¾ó½ºÆ©µð¿À 2022À̸ç, 64ºñÆ®·Î ÄÄÆÄÀÏÇϰí Àִµ¥ ±×·³ UINT°¡ ¾Æ´Ñ UINT_PTR·Î ¾²´Â°ÍÀÌ ¸Â´ÂÁö¿ä?


·Î±×ÀÎÇÏ¼Å¾ß ´ñ±ÛÀ» ´Þ ¼ö ÀÖ½À´Ï´Ù.