BOOL FileRead(HWND hwndEdit,PTSTR ptstrFileName )
{
DWORD dwByteRead;
HANDLE hFile;
int FileSize;
PBYTE pbyte;
PTSTR ptext;
BOOL ok;
if(
INVALID_HANDLE_VALUE==(hFile=
CreateFile(
ptstrFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL
          )
  )
)
return false;
FileSize=GetFileSize(hFile,NULL);
if(FileSize)
{
CloseHandle(hFile);
return NULL;
}
ok=ReadFile(hFile,&pbyte,FileSize,&dwByteRead,NULL) ;
ptext=(PTSTR)malloc(FileSize+1);
lstrcpy((PTSTR)ptext,(PTSTR)pbyte);
SetWindowText(hwndEdit,(PTSTR)ptext);
return ok;
}

解决方案 »

  1.   

    if(FileSize==0)
    {
    CloseHandle(hFile);
    return NULL;
    }
      

  2.   

    char *ptext=(PTSTR)malloc(FileSize+1);
    ok=ReadFile(hFile,ptext,FileSize,&dwByteRead,NULL) ;
      

  3.   

    //还是一点用都没有用啊
    #include<windows.h>
    #include<tchar.h>
    #include<commdlg.h>
    #include "resource.h"
    #define UNICODE OPENFILENAME ofn;
    static TCHAR szFilter[] = TEXT ("Txt Files (*.TXT)\0*.txt\0")  \
                                   TEXT ("All Files (*.*)\0*.*\0\0") ;
    static TCHAR szTitleName[MAX_PATH],szFileName[MAX_PATH];
    static TCHAR szAppName[]=TEXT("EDIT");
    //
    LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
    //
    BOOL FileRead(HWND hwndEdit,PTSTR ptstrFileName )
    {
    DWORD dwByteRead;
    HANDLE hFile;
    int FileSize;
    PBYTE pbyte;
    // PTSTR ptext;
    BOOL ok;
    if(
    INVALID_HANDLE_VALUE==(hFile=
    CreateFile(
    ptstrFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL
              )
      )
    )
    return false;
    FileSize=GetFileSize(hFile,NULL);
    if(FileSize==0)
    {
    CloseHandle(hFile);
    return NULL;
    }
    char *ptext=(PTSTR)malloc(FileSize+1);
    ok=ReadFile(hFile,ptext,FileSize,&dwByteRead,NULL) ;
    ptext=(PTSTR)malloc(FileSize+1);
    lstrcpy((PTSTR)ptext,(PTSTR)pbyte);
    SetWindowText(hwndEdit,(PTSTR)ptext);
    return ok;
    }
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowComd)
    {
    HACCEL hAccel;
    HWND hwnd;
    WNDCLASS wndclass;
    MSG msg;
    wndclass.style=CS_HREDRAW|CS_VREDRAW;
    wndclass.lpszMenuName=szAppName;
    wndclass.lpszClassName=szAppName;
    wndclass.lpfnWndProc=WndProc;
    wndclass.hInstance=hInstance;
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.cbWndExtra=0;
    wndclass.cbClsExtra=0;
    if(!RegisterClass(&wndclass) )
    {
    MessageBox(NULL,szAppName,TEXT("Oh,NO!"),MB_ICONERROR);
    return 0;
    }
    hwnd=CreateWindow(szAppName,TEXT("edit"),
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,CW_USEDEFAULT,
    CW_USEDEFAULT,CW_USEDEFAULT,
    NULL,NULL,hInstance,NULL);
    ShowWindow(hwnd,nShowComd);
    UpdateWindow(hwnd);
    hAccel=LoadAccelerators(hInstance,TEXT("IDR_ACCELERATOR1"));
    while(GetMessage(&msg,NULL,0,0) )
    {
    if(!TranslateAccelerator(hwnd,hAccel,&msg))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    }
    return msg.wParam;
    }
    LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
    {
    static HWND hwndEdit;
    HINSTANCE hInstance;
    int iSelect,iEnable;
    switch(message)
    {
    case WM_CREATE:
    hInstance=((LPCREATESTRUCT)lParam)->hInstance;
    hwndEdit=CreateWindow(szAppName,NULL,
    WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|
    WS_BORDER|ES_LEFT|ES_MULTILINE|
    ES_AUTOVSCROLL|ES_AUTOHSCROLL,
    CW_USEDEFAULT,0,CW_USEDEFAULT,0,hwnd,(HMENU)1,
    /*((LPCREATESTRUCT)lParam)-> */hInstance,NULL);
    hInstance=((LPCREATESTRUCT)lParam)->hInstance;
    ofn.lStructSize       = sizeof (OPENFILENAME) ;
    ofn.hwndOwner         = hwnd ;
    ofn.hInstance         = NULL ;
    ofn.lpstrFilter       = szFilter ;
    ofn.lpstrCustomFilter = NULL ;
    ofn.nMaxCustFilter    = 0 ;
    ofn.nFilterIndex      = 0 ;
    ofn.lpstrFile         = szTitleName ;          // Set 
    ofn.nMaxFile          = MAX_PATH ;
    ofn.lpstrFileTitle    = szFileName ;          // Set 
    ofn.nMaxFileTitle     = MAX_PATH ;
    ofn.lpstrInitialDir   = NULL ;
    ofn.lpstrTitle        = NULL ;
    ofn.Flags             = OFN_CREATEPROMPT|OFN_HIDEREADONLY ;             // Set 
    ofn.nFileOffset       = 0 ;
    ofn.nFileExtension    = 0 ;
    ofn.lpstrDefExt       = TEXT ("txt") ;
    ofn.lCustData         = 0 ;
    ofn.lpfnHook          = NULL ;
    ofn.lpTemplateName    = NULL ;
    return 0;
    case WM_SETFOCUS:
    SetFocus(hwndEdit);
    return 0;
    case WM_SIZE:
    MoveWindow(hwndEdit,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
    return 0;
    case WM_INITMENUPOPUP:
    EnableMenuItem((HMENU)wParam,IDM_EDIT_PASTE,
    IsClipboardFormatAvailable(CF_TEXT)?MF_ENABLED:MF_GRAYED);
    iSelect=SendMessage(hwndEdit,EM_GETSEL,0,0);
    if(HIWORD(iSelect)==LOWORD(iSelect))
    iEnable=MF_GRAYED;
    else
    iEnable=MF_ENABLED;
    EnableMenuItem((HMENU)wParam,IDM_EDIT_CUT,iEnable);
    EnableMenuItem((HMENU)wParam,IDM_EDIT_COPY,iEnable);
    break;
    case WM_COMMAND:
    if(lParam)
    {
    if(LOWORD(wParam)==1 &&HIWORD(wParam)==EN_ERRSPACE||
    HIWORD(wParam)==EN_MAXTEXT)
    MessageBox(hwnd,TEXT("OH!"),szAppName,MB_OK|MB_ICONSTOP);
    return 0;

    }
    else switch(LOWORD(wParam))
    {
    case IDM_EDIT_CUT:
    SendMessage(hwndEdit,WM_CUT,0,0);
    return 0;
    case IDM_EDIT_PASTE:
    SendMessage(hwndEdit,WM_PASTE,0,0);
    return 0;
    case IDM_EDIT_SELECT_ALL:
    SendMessage(hwndEdit,EM_SETSEL,0,-1);
    return 0;
    case IDM_FILE_OPEN:
     if (GetOpenFileName(&ofn) )
    FileRead( hwndEdit,szFileName ) ;
    return 0;
    }
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
    }
    return DefWindowProc(hwnd,message,wParam,lParam);
    }
      

  4.   

    if(FileSize) 等价于 if(FileSize != 0)
      

  5.   

    我已经改成if(FileSize == 0)了
    但是还是没有用啊
      

  6.   

    设置断点, 一行一行看有没有执行到setwindowtext以及跟踪ptext的值ps: 你代码最后忘了加上 free(ptext)
      

  7.   

    FileSize=GetFileSize(hFile,NULL);
    if(FileSize)
    {
    CloseHandle(hFile);
    return NULL;
    }
    pbyte = (PBYTE)malloc(FileSize +1);
    ok=ReadFile(hFile,&pbyte,FileSize,&dwByteRead,NULL);
    pbyte[dwByteRead] = 0;
    SetWindowText(hwndEdit,(PTSTR)pbyte);
    free[pbyte];
    return ok;
      

  8.   

    楼主单步调试啊,看看哪里有问题 
    用RichEdit,或换个小的试试,是不是文件太大了啊