📄 3-4.html
字号:
<P ALIGN="JUSTIFY">	 CheckThisProtoBoxOn(hDlg, IDS_UDP);</P>
<P ALIGN="JUSTIFY">	</P>
<P ALIGN="JUSTIFY">	if (!blocking_option)			/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>阻塞模式</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">	 CheckThisBoxOn(hDlg, IDS_BLOCK);</P>
<P ALIGN="JUSTIFY">	else</P>
<P ALIGN="JUSTIFY">	 CheckThisBoxOn(hDlg, IDS_NOBLOCK);</P>
<P ALIGN="JUSTIFY">	</P>
<P ALIGN="JUSTIFY">	SendDlgItemMessage(hDlg,		/* dialog handle	*/</P>
<P ALIGN="JUSTIFY">		IDS_PORTNO,			/* where to send msg	*/</P>
<P ALIGN="JUSTIFY">		EM_SETSEL,			/* select characters	*/</P>
<P ALIGN="JUSTIFY">		NULL,				/* additional info	*/</P>
<P ALIGN="JUSTIFY">		MAKELONG(0, 0x7fff));		/* entire contents	*/</P>
<P ALIGN="JUSTIFY">	 </P>
<P ALIGN="JUSTIFY">	SendDlgItemMessage(hDlg,		/* dialog handle	*/</P>
<P ALIGN="JUSTIFY">		IDS_BUFFLEN,			/* where to send msg	*/</P>
<P ALIGN="JUSTIFY">		EM_SETSEL,			/* select characters	*/</P>
<P ALIGN="JUSTIFY">		NULL,				/* additional info	*/</P>
<P ALIGN="JUSTIFY">		MAKELONG(0, 0x7fff));		/* entire contents	*/</P>
<P ALIGN="JUSTIFY">	SetFocus(GetDlgItem(hDlg, IDS_BUFFLEN));</P>
<P ALIGN="JUSTIFY">	return (TRUE);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> case WM_COMMAND:</P>
<P ALIGN="JUSTIFY">	switch (wParam){</P>
<P ALIGN="JUSTIFY">	case IDS_CLIENT:</P>
<P ALIGN="JUSTIFY">	 /* USer has set to Shout */</P>
<P ALIGN="JUSTIFY">	 CheckThisProgBoxOn(hDlg, IDS_CLIENT);</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">	</FONT><FONT SIZE=3> tClientOrServer = iShout;</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">	</FONT><FONT SIZE=3> SetDlgItemText(hMainDlg, IDD_COHOST,"Foreign host:");</P>
<P ALIGN="JUSTIFY">	 SetDlgItemText(hMainDlg, IDD_HNAME,"");</P>
<P ALIGN="JUSTIFY">	 break;</P>
<P ALIGN="JUSTIFY">	case IDS_SERVER:</P>
<P ALIGN="JUSTIFY">	 /* USer has set to Listen */</P>
<P ALIGN="JUSTIFY">	 CheckThisProgBoxOn(hDlg, IDS_SERVER);</P>
<P ALIGN="JUSTIFY">	 tClientOrServer = iListen;</P>
<P ALIGN="JUSTIFY">	 SetDlgItemText(hMainDlg, IDD_COHOST,"Listening to:");</P>
<P ALIGN="JUSTIFY">	 SetDlgItemText(hMainDlg, IDD_HNAME,"[Hit 'Start']");</P>
<P ALIGN="JUSTIFY">	 break;</P>
<P ALIGN="JUSTIFY">	case IDS_TCP:</P>
<P ALIGN="JUSTIFY">	 /* USer has set to TCP */</P>
<P ALIGN="JUSTIFY">	 CheckThisProtoBoxOn(hDlg, IDS_TCP);</P>
<P ALIGN="JUSTIFY">	 temporary_protocol = iTCP;</P>
<P ALIGN="JUSTIFY">	 break;</P>
<P ALIGN="JUSTIFY">	case IDS_UDP:</P>
<P ALIGN="JUSTIFY">	 /* USer has set to UDP */</P>
<P ALIGN="JUSTIFY">	 CheckThisProtoBoxOn(hDlg, IDS_UDP);</P>
<P ALIGN="JUSTIFY">	 temporary_protocol = iUDP;</P>
<P ALIGN="JUSTIFY">	 break;</P>
<P ALIGN="JUSTIFY">	case IDS_BLOCK:</P>
<P ALIGN="JUSTIFY">	 /* User has set to blocking mode */</P>
<P ALIGN="JUSTIFY">	 CheckThisBoxOn(hDlg, IDS_BLOCK);</P>
<P ALIGN="JUSTIFY">	 temporary_option = 0L;</P>
<P ALIGN="JUSTIFY">	 break;</P>
<P ALIGN="JUSTIFY">	case IDS_NOBLOCK:</P>
<P ALIGN="JUSTIFY">	 /* User has set to nonblocking mode */</P>
<P ALIGN="JUSTIFY">	 CheckThisBoxOn(hDlg, IDS_NOBLOCK);</P>
<P ALIGN="JUSTIFY">	 temporary_option = 1L;</P>
<P ALIGN="JUSTIFY">	 break;</P>
<P ALIGN="JUSTIFY">	case IDOK:</P>
<P ALIGN="JUSTIFY">	 /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>用户已完成对设置的修改</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">	 buffer_len = GetDlgItemInt(hDlg, IDS_BUFFLEN, NULL, 0);</P>
<P ALIGN="JUSTIFY">	 if (buffer_len == 0 || buffer_len > 8192) {</P>
<P ALIGN="JUSTIFY">		MessageBox(hOurWnd, "Buffer length must be between 1 and 8K",</P>
<P ALIGN="JUSTIFY">			 "Settings()", </P>
<P ALIGN="JUSTIFY">			 MB_OK | MB_APPLMODAL | MB_ICONSTOP);</P>
<P ALIGN="JUSTIFY">		return (FALSE);</P>
<P ALIGN="JUSTIFY">	 }</P>
<P ALIGN="JUSTIFY">	 </P>
<P ALIGN="JUSTIFY">	 port_no = GetDlgItemInt(hDlg, IDS_PORTNO, NULL, 0);</P>
<P ALIGN="JUSTIFY">	 if (port_no == 0) {</P>
<P ALIGN="JUSTIFY">		MessageBox(hDlg, "Port number must be between 0 and 65,535",</P>
<P ALIGN="JUSTIFY">			 "Settings()", </P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">			</FONT><FONT SIZE=3> MB_OK | MB_APPLMODAL | MB_ICONSTOP);</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">		</FONT><FONT SIZE=3>return (FALSE);</P>
<P ALIGN="JUSTIFY">	 }</P>
<P ALIGN="JUSTIFY">	 len = buffer_len;</P>
<P ALIGN="JUSTIFY">	 iPortNo = port_no;</P>
<P ALIGN="JUSTIFY">	 blocking_option = temporary_option;</P>
<P ALIGN="JUSTIFY">	 iProto	 = temporary_protocol;</P>
<P ALIGN="JUSTIFY">	 iClientOrServer = tClientOrServer;</P>
<P ALIGN="JUSTIFY">	 </P>
<P ALIGN="JUSTIFY">	case IDCANCEL:</P>
<P ALIGN="JUSTIFY">	 /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>用户不想改变设置</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">	 EndDialog(hDlg, TRUE);</P>
<P ALIGN="JUSTIFY">	 return (TRUE);</P>
<P ALIGN="JUSTIFY">	 </P>
<P ALIGN="JUSTIFY">	default:</P>
<P ALIGN="JUSTIFY">	 break;</P>
<P ALIGN="JUSTIFY">	}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> default:</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> }</P>
<P ALIGN="JUSTIFY"> return (FALSE);</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void </P>
<P ALIGN="JUSTIFY">CheckThisBoxOn(HWND hDlg, int ButtonID)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY"> switch (ButtonID) {</P>
<P ALIGN="JUSTIFY"> case IDS_BLOCK:</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_BLOCK, 1);</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_NOBLOCK, 0);</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> case IDS_NOBLOCK:</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_BLOCK, 0);</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_NOBLOCK, 1);</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> default:</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> }</P>
<P ALIGN="JUSTIFY"> return;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void </P>
<P ALIGN="JUSTIFY">CheckThisProtoBoxOn(HWND hDlg, int ButtonID)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY"> switch (ButtonID) {</P>
<P ALIGN="JUSTIFY"> case IDS_TCP:</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_TCP, 1);</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_UDP, 0);</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> case IDS_UDP:</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_TCP, 0);</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_UDP, 1);</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> default:</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> }</P>
<P ALIGN="JUSTIFY"> return;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void </P>
<P ALIGN="JUSTIFY">CheckThisProgBoxOn(HWND hDlg, int ButtonID)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY"> switch (ButtonID) {</P>
<P ALIGN="JUSTIFY"> case IDS_CLIENT: /* Shout */</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_CLIENT, 1);</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_SERVER, 0);</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> case IDS_SERVER: /* Listen */</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_CLIENT, 0);</P>
<P ALIGN="JUSTIFY">	CheckDlgButton(hDlg, IDS_SERVER, 1);</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> default:</P>
<P ALIGN="JUSTIFY">	break;</P>
<P ALIGN="JUSTIFY"> }</P>
<P ALIGN="JUSTIFY"> return;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>以下就是我们如何处理“模拟阻塞”-本函数检查消息队列,如果发现需要处理的消息,就返回一个正的值。</FONT><FONT SIZE=3>*/</P>
<P ALIGN="JUSTIFY">int</P>
<P ALIGN="JUSTIFY">ShoutBlockingHook (void)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY"> MSG msg;		/* lets us pull messages via PeekMessage */</P>
<P ALIGN="JUSTIFY"> int ret = PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> if (ret) {</P>
<P ALIGN="JUSTIFY"> TranslateMessage(&msg);</P>
<P ALIGN="JUSTIFY"> DispatchMessage(&msg);</P>
<P ALIGN="JUSTIFY"> }</P>
<P ALIGN="JUSTIFY"> return ret;</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">char *</P>
<P ALIGN="JUSTIFY">_calloc (nelem, elsize)</P>
<P ALIGN="JUSTIFY"> unsigned nelem, elsize;</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">	 HANDLE hMem;</P>
<P ALIGN="JUSTIFY">	 PSTR ptr;</P>
<P ALIGN="JUSTIFY">	 unsigned size = nelem * elsize;</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	if ((hMem = LocalAlloc(LPTR, size)) == NULL)</P>
<P ALIGN="JUSTIFY">		return (char *) 0;</P>
<P ALIGN="JUSTIFY">	if ((ptr = LocalLock(hMem)) == NULL) {</P>
<P ALIGN="JUSTIFY">		LocalFree(hMem);</P>
<P ALIGN="JUSTIFY">		return (char *) 0;</P>
<P ALIGN="JUSTIFY">	}</P>
<P ALIGN="JUSTIFY">	return (char *) ptr;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void</P>
<P ALIGN="JUSTIFY">_free (void *cP)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">	(void) LocalFree(LocalHandle((WORD) cP));</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void </P>
<P ALIGN="JUSTIFY">ClearBoxes(HWND hOurDlg)</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -