Well that code snippet that treenef found would look be something like this in Win32:
Code:
#include <windows.h>
#include <fstream>
#include <string>
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "WindowsApp",word[256],r_place[256],*words;
std::string sword,sr_place;
HWND static1,static2,edit1,edit2,button;
std::fstream f_in;
std::ofstream f_out;
int size;
int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,
LPSTR lpszArgument,int nFunsterStil){
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if (!RegisterClassEx (&wincl))
return 0;
hwnd = CreateWindowEx (0,szClassName,"Windows App",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,500,250,HWND_DESKTOP,NULL,
hThisInstance,NULL);
ShowWindow (hwnd, nFunsterStil);
while (GetMessage (&messages, NULL, 0, 0)){
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
switch (message){
case WM_CREATE:
static1=CreateWindowEx(0,"Static","Replace",WS_CHILD|WS_VISIBLE,20,
20,60,25,hwnd,(HMENU)50000,GetModuleHandle(NULL),NULL);
edit1=CreateWindowEx(0,"Edit","",WS_BORDER|WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,80,
18,100,22,hwnd,(HMENU)50001,GetModuleHandle(NULL),NULL);
static2=CreateWindowEx(0,"Static","with",WS_CHILD|WS_VISIBLE,190,
20,30,25,hwnd,(HMENU)50002,GetModuleHandle(NULL),NULL);
edit2=CreateWindowEx(0,"Edit","",WS_BORDER|WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,225,
18,100,22,hwnd,(HMENU)50003,GetModuleHandle(NULL),NULL);
button=CreateWindowEx(0,"Button","Replace",WS_BORDER|WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,335,
18,70,22,hwnd,(HMENU)50004,GetModuleHandle(NULL),NULL);
SendMessage(edit1,EM_LIMITTEXT,256,0);
SendMessage(edit2,EM_LIMITTEXT,256,0);
break;
case WM_COMMAND:
switch(wParam){
case 50004:
GetWindowText(edit1,word,256);
GetWindowText(edit2,r_place,256);
sword=word;
sr_place=r_place;
size=sword.length();
if(size==0){
MessageBox(hwnd,"You must specify the word to replace","Problem",MB_OK|MB_ICONINFORMATION);
}
else{
std::string search,add;
f_in.open("update.txt");
while(std::getline(f_in,search)){
std::string::size_type pos = -1;
while((pos=search.find(sword,pos+1))!=std::string::npos){
search.replace(pos,size,sr_place);
}
add+=search+"\n";
}
f_out.open("update.txt");
f_out<<add;
f_out.close();
f_in.clear();
f_in.close();
}
}
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
It works for me...
And it can be done like this too:
Code:
#include <windows.h>
#include <stdio.h>
#include <string>
#include <algorithm>
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "WindowsApp",word[256],r_place[256],*words;
std::string sword,sr_place;
HWND static1,static2,edit1,edit2,button;
char happy[256];
FILE * pFile;
int size;
int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,
LPSTR lpszArgument,int nFunsterStil){
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if (!RegisterClassEx (&wincl))
return 0;
hwnd = CreateWindowEx (0,szClassName,"Windows App",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,500,250,HWND_DESKTOP,NULL,
hThisInstance,NULL);
ShowWindow (hwnd, nFunsterStil);
while (GetMessage (&messages, NULL, 0, 0)){
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
switch (message){
case WM_CREATE:
static1=CreateWindowEx(0,"Static","Replace",WS_CHILD|WS_VISIBLE,20,
20,60,25,hwnd,(HMENU)50000,GetModuleHandle(NULL),NULL);
edit1=CreateWindowEx(0,"Edit","",WS_BORDER|WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,80,
18,100,22,hwnd,(HMENU)50001,GetModuleHandle(NULL),NULL);
static2=CreateWindowEx(0,"Static","with",WS_CHILD|WS_VISIBLE,190,
20,30,25,hwnd,(HMENU)50002,GetModuleHandle(NULL),NULL);
edit2=CreateWindowEx(0,"Edit","",WS_BORDER|WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,225,
18,100,22,hwnd,(HMENU)50003,GetModuleHandle(NULL),NULL);
button=CreateWindowEx(0,"Button","Replace",WS_BORDER|WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,335,
18,70,22,hwnd,(HMENU)50004,GetModuleHandle(NULL),NULL);
SendMessage(edit1,EM_LIMITTEXT,256,0);
SendMessage(edit2,EM_LIMITTEXT,256,0);
break;
case WM_COMMAND:
switch(wParam){
case 50004:
GetWindowText(edit1,word,256);
GetWindowText(edit2,r_place,256);
sword=word;
sr_place=r_place;
size=sword.length();
if(size==0){
MessageBox(hwnd,"You must specify the word to replace","Problem",MB_OK|MB_ICONINFORMATION);
}
else{
std::string search,add;
pFile = fopen ("update.txt" , "r");
while(fgets(happy,1500,pFile)){
search=happy;
std::string::size_type pos = -1;
while((pos=search.find(sword,pos+1))!=std::string::npos){
search.replace(pos,size,sr_place);
}
add+=search+"\n";
}
fclose(pFile);
pFile = fopen ("update.txt" , "w+");
*(std::copy(add.begin(), add.end() - add.begin() < 256 ? add.end() : add.begin() + 255, happy)) = 0;
fputs(happy,pFile);
fclose(pFile);
}
}
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
which results a smaller executable...