POINT pt; GetCursorPos(&pt);
SetForegroundWindow(m_hWnd); //右击后点别地可以清除“右击出来的菜单”
HMENU hMenu; //托盘菜单 win32程序使用的是HMENU,如果是MFC程序可以使用CMenu
hMenu = CreatePopupMenu();//生成托盘菜单
AppendMenu(hMenu, MF_STRING, WM_ONCLOSE, _T("退出"));
int cmd = TrackPopupMenu(hMenu, TPM_RETURNCMD, pt.x, pt.y, NULL, m_hWnd, NULL);
if(cmd == WM_ONCLOSE)
{
//退出程序
m_nid.hIcon = NULL;
Shell_NotifyIcon(NIM_DELETE, &m_nid);
::PostQuitMessage(0);
}$a['modulesn'] = "0542509004725";
$b = "00542509004725";
一个是 以 0 开头,另一个是 以 00 开头。
按理说用 != 应该返回 true(不相等),但你说结果是 false(相等)。
原因:PHP 的弱类型比较(类型转换问题)
在 PHP 里,!=、== 会触发 弱类型比较:
如果两个字符串看起来都是 数字字符串,PHP 会把它们转换成数字再比较。
"0542509004725" 和 "00542509004725" 都会被转换成 542509004725(整数)。
转换后它们相等,所以 != 返回 false。
验证
var_dump((int)"0542509004725"); // int(542509004725)
var_dump((int)"00542509004725"); // int(542509004725)
结果一样。
解决办法
如果你想比较字符串本身,而不是数值:
用 全等比较 !== 或 ===
var_dump($a['modulesn'] !== $b); // true
或者强制用 字符串比较函数
var_dump(strcmp($a['modulesn'], $b) !== 0); // true
建议:凡是涉及可能带前导 0 的数据(比如条码、序列号、工号),一定要用 === 来比较,不要用 == 或 !=。