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; }