typedef struct { // fr
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
DWORD Flags;
LPTSTR lpstrFindWhat;
LPTSTR lpstrReplaceWith;
WORD wFindWhatLen;
WORD wReplaceWithLen;
LPARAM lCustData;
LPFRHOOKPROC lpfnHook;
LPCTSTR lpTemplateName;
} FINDREPLACE;
lStructSize には、この構造体のサイズを指定します| 定数 | 解説 |
|---|---|
| FR_DIALOGTERM | ダイアログボックスが閉じていることを示します このフラグが指定されている場合 FindText() の戻り値は無効なウィンドウハンドルです |
| FR_DOWN | 文書内の検索文字方向を指定します このフラグが指定されている場合、文末に向かっての検索を要求しています |
| FR_ENABLEHOOK | lpfnHook で指定されたフック関数を有効にする |
| FR_ENABLETEMPLATE | hInstance が lpTemplateName メンバで指定された ダイアログテンプレートを含むリソースのインスタンスであることを示す |
| FR_ENABLETEMPLATEHANDLE | hInstance メンバがロード済みのダイアログボックステンプレートを含む メモリブロックを指していることを表す このフラグが指定されている場合、lpTemplateName は無視される |
| FR_FINDNEXT | lpstrFindWhat で指定された文字列の 次の出現位置までを検索することを示す |
| FR_HIDEUPDOWN | 「検索する方向」を隠す |
| FR_HIDEMATCHCASE | 「大文字と小文字を区別する」を隠す |
| FR_HIDEWHOLEWORD | 「単語単位で探す」を隠す |
| FR_MATCHCASE | 大文字と小文字を区別することを表す |
| FR_NOMATCHCASE | 大文字と小文字を区別しないことを表す |
| FR_NOUPDOWN | 検索方向ボタンを無効にする |
| FR_NOWHOLEWORD | 単語単位で探さないことを表す |
| FR_REPLACE | lpstrFindWhat で指定された文字列の次の検索結果を lpstrReplaceWith で指定された文字列と置き換えることを示す |
| FR_REPLACEALL | lpstrFindWhat で指定された文字列の全て検索結果を lpstrReplaceWith で指定された文字列と置き換えることを示す |
| FR_SHOWHELP | 「ヘルプ」ボタンを表示する |
| FR_WHOLEWORD | 単語単位で探すこと表す |
#include <windows.h>
#define TITLE TEXT("Kitty on your lap")
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static TCHAR strFind[80] , strMsg[1024];
static UINT uMessage;
static FINDREPLACE fr;
if (msg == uMessage && !(fr.Flags & FR_DIALOGTERM)) {
wsprintf(strMsg ,
TEXT("上から下へ = %s\n")
TEXT("大文字と小文字の区別 = %s\n")
TEXT("単語単位で探す = %s\n")
TEXT("検索文字列 = %s\n") ,
fr.Flags & FR_DOWN ? TEXT("TRUE") : TEXT("FALSE") ,
fr.Flags & FR_MATCHCASE ?
TEXT("TRUE") : TEXT("FALSE") ,
fr.Flags & FR_WHOLEWORD ?
TEXT("TRUE") : TEXT("FALSE") ,
fr.lpstrFindWhat
);
MessageBox(hWnd , strMsg , TEXT("検索情報") , MB_OK);
return 0;
}
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE:
uMessage = RegisterWindowMessage(FINDMSGSTRING);
fr.lStructSize = sizeof (FINDREPLACE);
fr.hwndOwner = hWnd;
fr.Flags = FR_MATCHCASE;
fr.lpstrFindWhat = strFind;
fr.wFindWhatLen = 80;
FindText(&fr);
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
HWND hwnd;
MSG msg;
WNDCLASS winc;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return -1;
hwnd = CreateWindow(
TEXT("KITTY") , TITLE ,
WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT , CW_USEDEFAULT ,
CW_USEDEFAULT , CW_USEDEFAULT ,
NULL , NULL ,
hInstance , NULL
);
if (hwnd == NULL) return -1;
while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

#include <windows.h>
#define TITLE TEXT("Kitty on your lap")
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static TCHAR strFind[80] ,strRep[80] , strMsg[1024];
static UINT uMessage;
static FINDREPLACE fr;
if (msg == uMessage && !(fr.Flags & FR_DIALOGTERM)) {
wsprintf(strMsg ,
TEXT("要求 = %s\n")
TEXT("大文字と小文字の区別 = %s\n")
TEXT("単語単位で探す = %s\n")
TEXT("検索文字列 = %s\n置換え文字列 = %s\n") ,
fr.Flags & FR_FINDNEXT ? TEXT("次を検索") :
fr.Flags & FR_REPLACE ?
TEXT("置換えして次に") : TEXT("すべて置換え") ,
fr.Flags & FR_MATCHCASE ?
TEXT("TRUE") : TEXT("FALSE") ,
fr.Flags & FR_WHOLEWORD ?
TEXT("TRUE") : TEXT("FALSE") ,
fr.lpstrFindWhat , fr.lpstrReplaceWith
);
MessageBox(hWnd , strMsg , TEXT("検索情報") , MB_OK);
return 0;
}
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE:
uMessage = RegisterWindowMessage(FINDMSGSTRING);
fr.lStructSize = sizeof (FINDREPLACE);
fr.hwndOwner = hWnd;
fr.Flags = FR_MATCHCASE;
fr.lpstrFindWhat = strFind;
fr.lpstrReplaceWith = strRep;
fr.wReplaceWithLen = fr.wFindWhatLen = 80;
ReplaceText(&fr);
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
HWND hwnd;
MSG msg;
WNDCLASS winc;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return -1;
hwnd = CreateWindow(
TEXT("KITTY") , TITLE ,
WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT , CW_USEDEFAULT ,
CW_USEDEFAULT , CW_USEDEFAULT ,
NULL , NULL ,
hInstance , NULL
);
if (hwnd == NULL) return -1;
while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
