編集ボックスと 2 つのボタンを備えたダイアログ ボックスを作成しました。保存および読み込みボタン。
保存をクリックすると、エディット ボックス内のテキストを txt ファイルに保存し、読み込み、その txt ファイルをエディット ボックスに読み込みます。現在、保存/読み込みボタンが機能していないようです。保存ボタンは、選択したファイルに保存する代わりに「u」というファイルを作成するようで、ファイルが選択された後、読み込みボタンは何もしません。これが私がこれまでに持っているものです:
#include <Windows.h>
#include <commdlg.h>
#include <fstream>
#include <string>
#include "resource.h"
using namespace std;
// Globals
HWND ghMainWnd = 0;
OPENFILENAME ofn;
// Handles
static HWND hEditBox = 0;
static HWND hSaveButton = 0;
static HWND hLoadButton = 0;
// Contains file.
char szFile[100];
void save()
{
char text[260];
GetWindowText( hEditBox, text, 260 );
ofstream saveFile( szFile, ios_base::binary );
int length = strlen( text );
saveFile.write( (char*)&length, sizeof(length) );
saveFile.write( text, length );
}
void load()
{
char text[260];
ifstream loadFile( szFile, ios_base::binary );
int length = 0;
loadFile.read((char*)&length, sizeof(length));
loadFile.read( text, length );
text[length] = '\0';
SetWindowText( hEditBox, text );
}
BOOL CALLBACK
WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
ZeroMemory( &ofn , sizeof( ofn ) );
ofn.lStructSize = sizeof( ofn );
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof( szFile );
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = "Open/Save File Dialog";
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
switch( msg )
{
case WM_INITDIALOG:
hEditBox = GetDlgItem( ghMainWnd, IDC_EDIT );
hSaveButton = GetDlgItem( ghMainWnd, ID_SAVE );
hLoadButton = GetDlgItem( ghMainWnd, ID_OPEN );
return true;
case WM_COMMAND:
switch( LOWORD( wParam ) )
{
case ID_SAVE:
GetSaveFileName( &ofn );
save();
return true;
case ID_OPEN:
GetOpenFileName( &ofn );
load();
return true;
}
return true;
case WM_CLOSE:
DestroyWindow( hWnd );
return true;
case WM_DESTROY:
PostQuitMessage( 0 );
return true;
}
return false;
}
INT WINAPI
WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR cmdLine, int showCmd )
{
ghMainWnd = CreateDialog( hInstance, MAKEINTRESOURCE( IDD_TXTDLG ), 0, WndProc );
ShowWindow( ghMainWnd, showCmd );
MSG msg;
ZeroMemory( &msg, sizeof( MSG ) );
while( GetMessage( &msg, 0, 0, 0 ) )
{
if( ghMainWnd == 0 || !IsDialogMessage( ghMainWnd, &msg ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
return (int)msg.wParam;
}