主题:关于记事本程序中进行查找/替换代码的疑问
小弟不明白在if条件中,为什么要用 & 而不用 ==
以下是一个记事本程序中的一段代码:
......
......
LPFINDREPLACE pfr ;
static UINT messageFindReplace ;
......
messageFindReplace = RegisterWindowMessage (FINDMSGSTRING) ;
......
......
if (message == messageFindReplace)
{
pfr = (LPFINDREPLACE) lParam ;
if (pfr->Flags & FR_DIALOGTERM) //判断查找或替换对话框正在关闭
hDlgModeless = NULL ;//将非模态对话框句柄设成NULL
if (pfr->Flags & FR_FINDNEXT)
//判断“查找”对话框中选中的项是否“查找”/“查找下一个”
if (!PopFindFindText (hwndEdit, &iOffset, pfr))//进行查找
OkMessage (hwnd, TEXT ("Text not found!"),
TEXT ("\0")) ;
if (pfr->Flags & FR_REPLACE || pfr->Flags & FR_REPLACEALL)
//判断“替换”对话框中选中的项是否“替换”/“替换全部”
if (!PopFindReplaceText (hwndEdit, &iOffset, pfr))//进行替换
OkMessage (hwnd, TEXT ("Text not found!"),
TEXT ("\0")) ;
if (pfr->Flags & FR_REPLACEALL)
//判断“替换”对话框中选中的项是否“替换全部”
while (PopFindReplaceText (hwndEdit, &iOffset, pfr)) ;//进行替换
return 0 ;
}
小弟不明白if条件中,进行判断的为何用& , 而不用== ?
而如果我把全部的&改成==,编译出来的程序根本不能进行查找和替换。
请高人指教,小弟洗耳恭听。
以下是一个记事本程序中的一段代码:
......
......
LPFINDREPLACE pfr ;
static UINT messageFindReplace ;
......
messageFindReplace = RegisterWindowMessage (FINDMSGSTRING) ;
......
......
if (message == messageFindReplace)
{
pfr = (LPFINDREPLACE) lParam ;
if (pfr->Flags & FR_DIALOGTERM) //判断查找或替换对话框正在关闭
hDlgModeless = NULL ;//将非模态对话框句柄设成NULL
if (pfr->Flags & FR_FINDNEXT)
//判断“查找”对话框中选中的项是否“查找”/“查找下一个”
if (!PopFindFindText (hwndEdit, &iOffset, pfr))//进行查找
OkMessage (hwnd, TEXT ("Text not found!"),
TEXT ("\0")) ;
if (pfr->Flags & FR_REPLACE || pfr->Flags & FR_REPLACEALL)
//判断“替换”对话框中选中的项是否“替换”/“替换全部”
if (!PopFindReplaceText (hwndEdit, &iOffset, pfr))//进行替换
OkMessage (hwnd, TEXT ("Text not found!"),
TEXT ("\0")) ;
if (pfr->Flags & FR_REPLACEALL)
//判断“替换”对话框中选中的项是否“替换全部”
while (PopFindReplaceText (hwndEdit, &iOffset, pfr)) ;//进行替换
return 0 ;
}
小弟不明白if条件中,进行判断的为何用& , 而不用== ?
而如果我把全部的&改成==,编译出来的程序根本不能进行查找和替换。
请高人指教,小弟洗耳恭听。