Win32 GetOpenFileName

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by SHiNiGaMi, 16 Nov 2010.

  1. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    Есть функция:
    Code:
    void DlgOnCommand(HWND hwnd,int msg,HWND,UINT)
    {
    char szText[256];
    char szFileCont[65536];
    char szFilter[30] = "TXT Files\0*.txt\0all(*.*)\0*.*\0";
    DWORD dwRead;
    
    switch(msg)
    {
    case IDCANCEL:    PostQuitMessage(0);
    	              break;
    case ID_BUTN:
    	memset(&ofn,0,sizeof(OPENFILENAME));
    	ofn.lpstrFilter = szFilter;
    	ofn.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;
    	ofn.hwndOwner = hwnd;
    	ofn.lStructSize = sizeof(OPENFILENAME);
    	ofn.lpstrFile = szText;
    	ofn.lpstrFile[0] = '\0';
    	ofn.nFilterIndex = 1;
    	ofn.nMaxFile = sizeof(szText);
    	if(GetOpenFileName(&ofn))
    	{
    		hFile = CreateFile(szText,GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
    		ReadFile(hFile,szFileCont,sizeof(szFileCont),&dwRead,NULL);
    		SetWindowText(hFileCont,szFileCont);
    	}
    	CloseHandle(hFile);
    	break;
    }
    }
    
    На диалоге кнопки Open, Ok и Cancel,Static text, и текствое поле, куда должно выводиться содержимое файла, но при выборе файла в GetOpenFileName и его прочтении в переменной dwRead находится 0 а в окно выводится куча букв М:
    [​IMG]
    Уже 2 дня парюсь, почему файл не читается?
     
    1 person likes this.
  2. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    GENERIC_WRITE замени на GENERIC_READ
    Code:
    hFile = CreateFile(szText,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
     
    #2 becensed, 16 Nov 2010
    Last edited: 16 Nov 2010
    1 person likes this.