Áú¹®°ú ´äº¯

À©µµ¿ìÁî API¿ÏÀüÁ¤º¹ 1±Ç 974p Áú¹®ÀÖ½À´Ï´Ù. ³¯Â¥:2024-9-19 10:07:30 Á¶È¸¼ö:641
ÀÛ¼ºÀÚ : Ȳ±Ý°¡¹°Ä¡
Æ÷ÀÎÆ® : 86
°¡ÀÔÀÏ : 2022-05-06 15:33:18
¹æ¹®È½¼ö : 68
±Û 12°³, ´ñ±Û 13°³
¼Ò°³ : ¾È³çÇϼ¼¿ä. À©µµ¿ìÁîapi¸¦ °øºÎÇϱâÀ§ÇÏ¿© °¡ÀÔÇß½À´Ï´Ù. Àß ºÎʵ右´Ï´Ù.
ÀÛ¼º±Û º¸±â
ÂÊÁö º¸³»±â
#include "pch.h"
#include "framework.h"
#include "Ex_974p_ReadFile.h"

LPCTSTR MyClassName = TEXT("ReadFile");
HINSTANCE g_hInst{};
HWND hWndMain{};
TCHAR buf[1024]{};

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

int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) {
    HWND hWnd{};
    MSG msg{};
    WNDCLASSEXW wndclassexw{};

    g_hInst = hInstance;

    wndclassexw.lpfnWndProc = WndProc;
    wndclassexw.hInstance = hInstance;
    wndclassexw.lpszClassName = MyClassName;
    wndclassexw.hIconSm = NULL;
    wndclassexw.cbSize = sizeof(WNDCLASSEX);
    wndclassexw.cbClsExtra = 0;
    wndclassexw.cbWndExtra = 0;
    wndclassexw.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclassexw.hIcon = LoadIconW(NULL, IDI_APPLICATION);
    wndclassexw.hCursor = LoadCursorW(NULL, IDC_ARROW);
    wndclassexw.lpszMenuName = NULL;
    wndclassexw.style = CS_VREDRAW | CS_HREDRAW;

    RegisterClassExW(&wndclassexw);

    hWnd = CreateWindowExW(NULL, MyClassName, MyClassName, WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while (GetMessageW(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessageW(&msg);
    }
    return((int)msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) {
    
    HDC hdc{};
    PAINTSTRUCT ps{};
    HANDLE hFile{};
    DWORD dwRead{};
    RECT rt{};

    switch (iMessage) {
    case WM_LBUTTONDOWN:
        hFile = CreateFile(L"Test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        if (hFile != INVALID_HANDLE_VALUE) {
            if (ReadFile(hFile, buf, 1024, &dwRead, NULL)) {
                CloseHandle(hFile);
                InvalidateRect(hWnd, NULL, TRUE);
            }
        }
        return(0);
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        GetClientRect(hWnd, &rt);
        DrawText(hdc, buf, -1, &rt, DT_WORDBREAK);
        EndPaint(hWnd, &ps);
        return(0);
    case WM_DESTROY:
        PostQuitMessage(0);
        return(0);
    }
    return(DefWindowProcW(hWnd, iMessage, wParam, lParam));
}


------------------------------------------------------------------------------------------------------------------------------------------
À§ ¿¹Á¦¸¦ ½ÇÇàÇÒ ½Ã Test.txtÆÄÀÏÀ» Àоî¿Ã ½Ã ÇѱÛÀÌ ±úÁö´Â Çö»óÀÌ ³ªÅ¸³³´Ï´Ù.
¿µ¾î·Î ÅØ½ºÆ® ÆÄÀÏÀ» ÀúÀåÇØµµ ¸¶Âù°¡Áö·Î ±úÁü´Ï´Ù.
ÅØ½ºÆ® ÆÄÀÏÀ» ÀоîµéÀÏ ½Ã ±úÁöÁö ¾Ê°Ô ÇϱâÀ§ÇØ ¾î¶»°Ô ÇØ¾ßÇÏ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.



±è¹Î¼ö
403 Forbidden403 Forbidden

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

Program 9¿ù21ÀÏ 2:49:36  

txtÆÄÀÏÀº Á» ¹Ì¹¦Çؼ­ ³ªµµ Àß ¸ð¸¨´Ï´Ù¸¸ ³ª´Â ±×³É ¾Æ·¡ÄÚµå·Î txtÆÄÀÏÀ» Àоî¿É´Ï´Ù
      FILE * fp;
    char * buffer;
    long fsize;

    TCHAR imsistr[128];

    fopen_s(&fp , test.txt , "rb");
    if(fp==NULL)
    {
        //MessageBox(L"edu2text0.txt ÆÄÀÏ ¿­±â ¿¡·¯");
    }  
    else
    { 
        // ÆÄÀÏÀÇ Å©±â¸¦ ±¸ÇÔ 
        fseek(fp, 0L, SEEK_END); //ÆÄÀÏÆ÷ÀÎÅ͸¦ ÆÄÀÏÀÇ ³¡À¸·Î À̵¿
        fsize = ftell(fp); //ÇöÀç ÆÄÀÏÆ÷ÀÎÅ͸¦ ÀÐÀ¸¸é ÆÄÀÏÅ©±â°¡ µÊ
        fseek(fp, 0L, SEEK_SET); //ÆÄÀÏÆ÷ÀÎÅ͸¦ ´Ù½Ã ÆÄÀÏÀÇ ¸Ç óÀ½À¸·Î À̵¿
        buffer = (char*)malloc(fsize +1); //ÆÄÀÏÀÇ ³»¿ëÀ» ´ãÀ» ¹öÆÛ¸¦ ÇÒ´ç

        fread((void *)buffer,fsize,1,fp);
        fclose(fp); 
        //
        ZeroMemory(imsistr,sizeof(imsistr));
        MultiByteToWideChar(CP_ACP, 0, buffer,-1, imsistr, sizeof(imsistr));//buf ³»¿ëÀ» imsistr ·Î ¹Ù²Û´Ù (txtÆÄÀϳ»¿ëÀ» TCHAR ·Î ¹Ù²Û´Ù)
        imsistr[128-1]=L'\0';

        free(buffer);
    }
ÀÌ·¸°Ô ÁغñÇÑ ´ÙÀ½ DrawText Ãâ·ÂÀ» ÇØº¸¼¼¿ä

    DrawText(hdc,imsistr,-1,&rt,DT_WORDBREAK);//ÀÌ·¸°Ô Ãâ·ÂÇÏ¸é µÉ·Á³ª?

Ȳ±Ý°¡¹°Ä¡ 9¿ù21ÀÏ 3:44:23  

c¾ð¾î »ó fopeÇÔ¼ö·Î´Â ¿­¸³´Ï´Ù.
Àú´Â À쫆 ̴¿¡ ÀÖ´Â ´ë·Î °øºÎÇϰí ÀÖ°í createfile°ú readfileÇÔ¼ö°¡ ±úÁ®¼­ ´Ù¸¥ ¹æ¹ýÀÌ ¾ø´ÂÁö ±Ã±ÝÇÕ´Ï´Ù. Ȥ½Ã utf-8À̳ª ansi¼³Á¤À» ºñÁÖ¾ó½ºÆ©µð¿À¿¡¼­ ÇØ¾ßÇÏ´ÂÁö ±Ã±ÝÇϱ⵵ Çϰí¿ä.
Ã¥ ¿¹Á¦¿¡ ³ª¿ÍÀÖ´Â °ÍµéÀº ¿¹Àü win32·Î ÀÛ¼ºµÇ¼­ ÀÛµ¿ÀÌ µË´Ï´Ù.
ºñÁÖ¾ó½ºÆ©µð¿À2022¿¡¼­´Â ±Û¾¾°¡ ±úÁö°í¿ä. Ȥ½Ã ´Ù¸¥ ¹æ¹ýÀÌ ¾øÀ»Áö?

Program 9¿ù22ÀÏ 3:37:41  

case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rt);
//DrawText(hdc, buf, -1, &rt, DT_WORDBREAK);//ÀÌ ¶óÀÎÀ» ÁÖ¼®Ã³¸®Çϰí
MultiByteToWideChar(CP_ACP,0,(char *)buf,-1,imsistr, sizeof(imsistr));//ÀÌ µÎ¶óÀÎÀ¸·Î ¹Ù²Ù¾î º¸¼¼¿ä
DrawText(hdc,imsistr,-1,&rt,DC_WORDBREAK);/////////////////////////////////
EndPaint(hWnd, &ps);
return(0);
°á·ÐÀº ReadFile·Î ÀÐÀº buf´Â TCHAR Çü ÀÌÁö¸¸ char ÇüÀ¸·Î ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù
±×·¡¼­ char ÇüÀ» ´Ù½Ã TCJAR ÇüÀ¸·Î ¹Ù²ÛµÚ DrawTExt·Î Ãâ·ÂÇÕ´Ï´Ù
¿Ö ±×·±Áö´Â ³ªµµ Àß ¸ð¸£³ª ³ª´Â Ç×»ó txtÆÄÀÏÀº char -> TCHAR ·Î ¹Ù²Ù¾î Ãâ·ÂÇÕ´Ï´Ù.
¾Æ¸¶ ¿¹Àü¿¡ (À¯´ÏÄÚµåÀÌÀü¿¡ ANSI ¶§ ) txtÆÄÀÏ Çü½ÄÀ» À¯ÁöÇϰí ÀÖ´Â °Í °°½À´Ï´Ù

Ȳ±Ý°¡¹°Ä¡ 9¿ù22ÀÏ 5:19:15  

´äº¯°¨»çÇÕ´Ï´Ù.
imsistr´Â ¾î¶² º¯¼öÀÎÁö¿ä?
Àú±â¼­ºÎÅÍ ±Ã±ÝÇØ¼­¿ä. imsistr¶ó´Â º¯¼ö°¡ °©Àڱ⠳ª¿Í¼­ Àú°Íµµ TCHARÀÎÁö¿ä?

Ȳ±Ý°¡¹°Ä¡ 9¿ù22ÀÏ 5:21:33  

imsistr°¡ TCHAR·Î Àӽ÷ΠÀúÀåÇÏ´Â º¯¼ö±º¿ä. ³Ê¹« °¨»çÇÕ´Ï´Ù.¤Ì¤Ì
°è¼ÓÇØ¼­ Ã¥À¸·Î È¥ÀÚ °øºÎÇÏ´Ùº¸´Ï ¸ð¸£´Â°Ô ³Ê¹« ¸¹¾Æ¼­.
ÀÏ´Ü ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ÂÊ¿¡µµ Áú¹®Çߴµ¥ ¸ÕÀú ´äº¯ÇØÁּż­ °¨»çÇÕ´Ï´Ù.
Ä£ÀýÇÑ ´äº¯ Á¤¸» °¨»çÇÕ´Ï´Ù.¤Ì¤Ì

Program 9¿ù22ÀÏ 5:26:55  

¾Æ Âü
TCHAR imsistr[64]; //¿ä°Í ¸ÕÀú ¼±¾ðÇØ ³õ°íÇÏ¸é µË´Ï´Ù.
±×·±µ¥ ³»°¡ ¿©·¯°æ¿ì¸¦ ½ÇÇèÇØ º» °á°ú
txtÆÄÀÏÀÌ Ç×»ó ASCII ·Î¸¸ µÇ¾î ÀÖ´Â ÁÙ ¾Ë¾Ò´Âµ¥
MFC¿¡¼­ CArchive ar;
ar.WriteSTring() °ú ar.ReadString()¿¡¼­´Â ±»ÀÌ ASCII -> UNICODE º¯È¯ÇØ ÁÖÁö ¾Ê¾Æµµ
°ð ¹Ù·Î TCHAR º¯¼ö¸¦ Ãâ·ÂÇÏ¸é ±úÁöÁö ¾Ê°í Àß µË´Ï´Ù.
±×·¡¼­ À̶§ WriteStringÀ¸·Î »ý¼ºÇÑ txtÆÄÀÏÀ» À§ Äڵ忡 ´ëÀÔÇÏ¿© ºÒ·¯¿Í Ãâ·ÂÇØ º¸´Ï
¿¹»óÀº ASCII ÄÚµå·Î ±ÛÀÚ°¡ ±úÁö¸®¶ó ¿¹»óÇߴµ¥ ¿ÀÈ÷·Á À̶§´Â ¹Ù·Î UNICODE ·Î µÇ¾î Àß Ãâ·ÂµÇ°í
¿ÀÈ÷·Á MultiByteToWideChar·Î º¯È¯ÈÄ Ãâ·ÂÇÏ´Ï Á¤»óÀûÀÎ Ãâ·ÂÀÌ ¾È ³ª¿É´Ï´Ù.
Áï Ç×»ó txtÆÄÀÏÀÇ Æ÷¸äÀÌ ASCII·Î »ý°¢ÇßÀ¸³ª ¾î¶²¶§´Â UNICODE ÀÎ°Í °°±âµµ ÇϰíÇØ¼­
³ªµµ Çò°¥¸³´Ï´Ù. txtÆÄÀÏÀÇ ±¸Á¶°¡ Àϰü¼ºÀÌ ¾ø´Â°ÇÁö ³»°¡ Àß ¸ð¸£´Â °ÇÁö ¾Æ¹«Æ° txtÆÄÀÏÀº txtÆÄÀÏÀÔ´Ï´Ù ÀÌ»ó

Ȳ±Ý°¡¹°Ä¡ 9¿ù22ÀÏ 6:00:01  

°øºÎÇÒ¶§ Âü°íÇϵµ·Ï ÇϰڽÀ´Ï´Ù.

Program 9¿ù22ÀÏ 6:28:14  

°è¼Ó ±Ã±ÝÇØ¼­ È£±â½ÉÀ» ¹ßµ¿ÇÏ¿© ¸î°¡Áö ´õ ½ÇÇèÀ» ÇØ º¸¾Ò½À´Ï´Ù.
ÀÏ´Ü fopen("c:\test.txt","wt"); ¿Í
hFile = CreateFile(L"Test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
¿¡¼­ Â÷ÀÌÁ¡À» º¸¸é ù¹øÂ° Àμö°¡ char * Àΰ¡ ¾Æ´Ï¸é TCHAR * Àΰ¡¿¡ µû¶ó¼­ ASCII txtÆÄÀÏÀ» »ý¼ºÇÏ´À³Ä?
¾Æ´Ï¸é UNICODE txt ÆÄÀÏÀ» »ý¼ºÇÏ´À³Ä? ÀÌ·¸°Ô ¿¹»óÇÏ¿´´Âµ¥ ÀÌ°Ô ¾Æ´Ï°í
MFC·Î
CFile file;
file.Open(L".\c:\test.txt",CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate);
file.Seek(0,file.end);
file.WriteString(L"Korean");//¹Ù·Î WriteString()Çϸé ASCII ÄÚµå·Î txtÆÄÀÏ »ý¼ºµð°í
/////////////////////////////////////////////////////////////////////////////
CArchive ar(&file,CArchive::store);//<==¿ä³ðÀ» Á¤ÀÇÇϰí WriteString()Çϸé
ar.WriteString(L"Korean");//UNICODE·Î txtÆÄÀÏ »ý¼ºµÇ´õ¶ó
ÀÏ´Ü ÀÌ·¸°Ô ±îÁö ½ÇÇèÇØ º¸¾ÒÀ½


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