⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialogs.c

📁 IP网络语音通讯软件源代码. 不可多得的语音源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
			            memset(&ofn, 0, sizeof(ofn));
						ofn.lStructSize = sizeof(OPENFILENAME);
						ofn.hwndOwner = hDlg;
						ofn.lpstrFilter = rfilter(IDS_T_KEY_FILE_FILTER);
						ofn.lpstrCustomFilter = NULL;
						strcpy(szString, "");
						ofn.lpstrFile = (LPSTR) szString;
						ofn.nMaxFile = sizeof(szString);
						ofn.lpstrInitialDir = NULL;
						ofn.lpstrTitle = rstring(IDS_T_OPEN_KEY_FILE_TITLE);
						ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_SHOWHELP;
						fileHelpKey = rstring(IDS_HELP_KEY_FILE);
						if (GetOpenFileName((LPOPENFILENAME) &ofn)) {
							SetDlgItemText(hDlg, IDC_CP_OTPFILE, szString);
							_fstrcpy(d->otpFileName, szString);
						}
					}
					break;
#endif					
		        	
                case ID_HELP:
                	WinHelp(hwndMDIFrame, rstring(IDS_HELPFILE), HELP_KEY,
                				((DWORD) (Lrstring(IDS_HELP_CONNPROP))));
                	holped = TRUE;
                	break;

                default:
                    break;
            }
            break;
        	
        default:
        	if (message == fileOpenHelpButton && fileHelpKey != NULL) {
            	WinHelp(hwndMDIFrame, rstring(IDS_HELPFILE), HELP_KEY,
            				((DWORD) (LPSTR) fileHelpKey));
            	holped = TRUE;
        	}
        	break;	    	
    }
    return FALSE;
}

//	CONNECTIONPROPERTIES  --  Set properties for an open connection

VOID connectionProperties(HWND hwnd, LPCLIENT_DATA d)
{
    clientData = d;
    DialogBox(hInst, MAKEINTRESOURCE(IDD_CONNECTION_PROPERTIES), hwnd, CP_proc);
    return;
}

//	GENKEYDLGPROC  --  Session key generator dialogue procedure

BOOL CALLBACK genKeyDlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
    switch (nMessage) {
        case WM_INITDIALOG:
        	{
#ifdef CRYPTO        		
        		char key[256];

        		sessionKeyGenerate(key, FALSE);
				SetDlgItemText(hwnd, IDE_KEY, key);
#endif				
			}
			break;
				
        case WM_COMMAND:
        	switch ((short) WM_COMMAND_ID(wParam)) {
        	
		    	case IDOK:
		        EndDialog(hwnd, TRUE);
		        break;

#ifdef CRYPTO		        
		    	case IDC_NEW_KEY:
			    	{
		        		char key[256];
		        		
		        		sessionKeyGenerate(key, FALSE);
						SetDlgItemText(hwnd, IDE_KEY, key);
						SendMessage(GetDlgItem(hwnd, IDE_KEY), EM_SETSEL, 0,
							_fstrlen(key) + 1);
						SetFocus(GetDlgItem(hwnd, IDE_KEY));
					}
					break;
#endif					
		        	
                case ID_HELP:
                	WinHelp(hwndMDIFrame, rstring(IDS_HELPFILE), HELP_KEY,
                				((DWORD) (Lrstring(IDS_HELP_KEYGEN))));
                	holped = TRUE;
                	break;
			}
    }
    return FALSE;
}

//	GENKEYDIALOGUE  --  Generate session key dialogue

VOID genKeyDialogue(HWND hwnd)
{
    DialogBox(hInst, MAKEINTRESOURCE(IDD_GEN_KEY), hwnd, genKeyDlgProc);
}

//	RANT1_DLGPROC  --  First serial I/O rant dialogue procedure

BOOL CALLBACK rant1_DlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
#ifdef MODEM
    switch (nMessage) {
        case WM_COMMAND:
		    if (WM_COMMAND_ID(wParam) == IDOK) {
		        EndDialog(hwnd, TRUE);
		    } else if (WM_COMMAND_ID(wParam) == IDCANCEL) {
		        EndDialog(hwnd, FALSE);
		    }
        	break;
    }
#endif    
    return FALSE;
}

//	RANT1DIALOGUE  --  First serial I/O rant dialogue

int rant1Dialogue(HWND hwndParent)
{
    int result;

    result = DialogBox(hInst, MAKEINTRESOURCE(IDD_MODEM_RANT), hwndParent, rant1_DlgProc);
    return result;
}

//	RANT2_DLGPROC  --  Second serial I/O rant dialogue procedure

BOOL CALLBACK rant2_DlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
#ifdef MODEM
    switch (nMessage) {
        case WM_INITDIALOG:
        	CheckDlgButton(hwnd, IDC_RANT, modemShowRant);
        	break;
        
        case WM_COMMAND:
		    if (WM_COMMAND_ID(wParam) == IDOK) {
		    	modemShowRant = IsDlgButtonChecked(hwnd, IDC_RANT);
		        EndDialog(hwnd, TRUE);
		    } else if (WM_COMMAND_ID(wParam) == IDCANCEL) {
		        EndDialog(hwnd, FALSE);
		    }
        	break;
    }
#endif    
    return FALSE;
}

//	RANT2DIALOGUE  --  Second serial I/O rant dialogue

int rant2Dialogue(HWND hwndParent)
{
    int result;

    result = DialogBox(hInst, MAKEINTRESOURCE(IDD_MODEM_RANT_2), hwndParent, rant2_DlgProc);
    return result;
}

//	MODEMDLGPROC  --  Modem setup dialogue procedure

BOOL CALLBACK modemDlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
#ifdef MODEM
#ifndef CBR_28800
#define CBR_28800	0xFF1A 			// Missing in 3.1 windows.h
#endif
	static WORD baudRates[] = { CBR_9600, CBR_14400, CBR_19200, CBR_28800,
								CBR_38400, CBR_56000, CBR_128000,
 								CBR_256000 };
 	static char *baudNames[] = { "9600", "14400", "19200", "28800", "38400",
 								 "56000", "128000", "256000", NULL };
    switch (nMessage) {
        case WM_INITDIALOG:
        	{
        		WORD i, n;
        		HWND ctl = GetDlgItem(hwnd, IDD_MODEM_BAUD_RATE);
				WORD ncom = LOWORD(EscapeCommFunction(NULL, GETMAXCOM)) + 1;
        		
        		CheckDlgButton(hwnd, IDC_MODEM_ENABLE, modemEnable);
				SetDlgItemText(hwnd, IDC_MODEM_INIT_STRING, modemInitString);

        		for (i = 0; baudNames[i] != NULL; i++) {
					n = LOWORD(SendMessage(ctl, CB_ADDSTRING, NULL,
					                       (LPARAM) (LPSTR) baudNames[i]));
					SendMessage(ctl, CB_SETITEMDATA, (WPARAM) n,
									(LPARAM) (LONG) baudRates[i]);
								
					if (strcmp(baudNames[i], baudrate) == 0) {
						SendMessage(ctl, CB_SETCURSEL, (WPARAM) n, NULL);
					}
        		}
        		
        		ctl = GetDlgItem(hwnd, IDD_MODEM_PORT);
        		for (i = 0; i < ncom; i++) {
					char comn[12];
					
					wsprintf(comn, Format(32), i + 1);
					n = LOWORD(SendMessage(ctl, CB_ADDSTRING, NULL,
					                               (LPARAM) (LPSTR) comn));
					SendMessage(ctl, CB_SETITEMDATA, (WPARAM) n,
					           (LPARAM) (LONG) i + 1);
								
					if (_fstrcmp(comn, commport) == 0) {
						SendMessage(ctl, CB_SETCURSEL, (WPARAM) n, NULL);
					}
        		}
			}
			break;
				
        case WM_COMMAND:
		    switch ((short) WM_COMMAND_ID(wParam)) {
		    	case IDOK:
		    		{
				    	DWORD i;
				    	
				    	closeModem(hwnd);
		                modemEnable = IsDlgButtonChecked(hwnd, IDC_MODEM_ENABLE);
		                GetDlgItemText(hwnd, IDC_MODEM_INIT_STRING,
		                				modemInitString, sizeof modemInitString);
		                				
		                i = SendDlgItemMessage(hwnd, IDD_MODEM_BAUD_RATE,
		                		CB_GETCURSEL, 0, 0);
		                if (i != CB_ERR) {
		                	SendDlgItemMessage(hwnd, IDD_MODEM_BAUD_RATE, CB_GETLBTEXT,
		                		(WPARAM) i, (LPARAM) (LPCSTR) baudrate);	
		                }
		                 
		                i = SendDlgItemMessage(hwnd, IDD_MODEM_PORT,
		                		CB_GETCURSEL, 0, 0);
		                if (i != CB_ERR) {
		                	SendDlgItemMessage(hwnd, IDD_MODEM_PORT, CB_GETLBTEXT,
		                		(WPARAM) i, (LPARAM) (LPCSTR) commport);	
		                }
		                if (modemEnable) {
					    	if (!openModem(hwnd)) {
					    		modemEnable = FALSE;
					    	}
		                } 
				        EndDialog(hwnd, TRUE);
				    }
				    break;
				    
		    	case IDCANCEL:
				    EndDialog(hwnd, FALSE);
				    break;
				
				case IDC_MODEM_ENABLE:
					if (modemShowRant && ((WORD)
							SendMessage(GetDlgItem(hwnd, IDC_MODEM_ENABLE),
	    						BM_GETCHECK, 0, 0L))) {
	    				if (rant1Dialogue(hwnd)) {
	    					if (rant2Dialogue(hwnd)) {
	    						break;
	    					} else {
	    						CheckDlgButton(hwnd, IDC_MODEM_ENABLE, FALSE);
	    					}
	    				} else {
	    					CheckDlgButton(hwnd, IDC_MODEM_ENABLE, FALSE);
	    				}
	    			}
					break;
					    
                case ID_HELP:
                	WinHelp(hwndMDIFrame, rstring(IDS_HELPFILE), HELP_KEY,
                				((DWORD) (Lrstring(IDS_HELP_MODEM_CONFIG))));
                	holped = TRUE;
                	break;
		    }
    }
#endif    
    return FALSE;
}

//	MODEMRANT  --  Display rant about lousy serial I/O support on Windows

void modemRant(HWND hwnd)
{
#ifdef MODEM
	if (rant1Dialogue(hwnd)) {
		rant2Dialogue(hwnd);
	}
#endif	
}

//	MODEMSETUPDIALOGUE  --  Modem setup dialogue

VOID modemSetupDialogue(HWND hwnd)
{
    DialogBox(hInst, MAKEINTRESOURCE(IDD_MODEM_SETTINGS), hwnd, modemDlgProc);
}

//	MULTICASTDLGPROC  --  Multicast group membership dialogue procedure

BOOL CALLBACK multicastDlgProc(HWND hwnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
#ifdef IP_MAX_MEMBERSHIPS
    switch (nMessage) {
        case WM_INITDIALOG:
        	{
        		int i;
        		HWND ctl = GetDlgItem(hwnd, IDC_MC_GROUPS);
        	
        		for (i = 0; i < multiMemberships; i++) {
        			char mcline[MAX_HOST + 24];
        			
        			if (multiName[i] == NULL) {
        				_fstrcpy(mcline, inet_ntoa(multiAddr[i])); 
        			} else {
        				wsprintf(mcline, Format(33), multiName[i],
        					(LPSTR) inet_ntoa(multiAddr[i]));
        			}
					SendMessage(ctl, LB_ADDSTRING, 0,
						(LPARAM) (LPSTR) mcline);
        		}
        		SendMessage(ctl, LB_SETCURSEL, multiMemberships > 0 ? 0 : -1, 0L);
        		CheckDlgButton(hwnd, IDC_MC_LOOP, multiLoop);
        		EnableWindow(GetDlgItem(hwnd, IDC_MC_LOOP), !multiBrainDead);
        		EnableWindow(GetDlgItem(hwnd, IDC_MC_LEAVE), multiMemberships > 0);
        		EnableWindow(GetDlgItem(hwnd, IDC_MC_JOIN), FALSE);
			}
			break;
				
        case WM_COMMAND:
		    switch ((short) WM_COMMAND_ID(wParam)) {
		    	case IDOK:
		    		{
		    			int i, n;
		    			
		    			multicastJoin(hwnd, FALSE);	// Drop current groups
		    			multiLoop = IsDlgButtonChecked(hwnd, IDC_MC_LOOP);
		    			n = (int) SendDlgItemMessage(hwnd, IDC_MC_GROUPS, LB_GETCOUNT, 0, 0L);
		    			for (i = 0; i < n; i++) {
		    				char s[MAX_HOST + 24];
		    				char *cp;
		    				
		    				SendDlgItemMessage(hwnd, IDC_MC_GROUPS, LB_GETTEXT, i,
		    					(LPARAM) (LPCSTR) s);
		    				if ((cp = strchr(s, '(')) != NULL) {
		    					char *cp1;
		    					
		    					cp++;
		    					cp1 = strchr(cp, ')');
		    					if (cp1 != NULL) {
		    						*cp1 = 0;
		    					}
		    				} else {
		    					cp = s;
		    				}
		    				multiAddr[i].s_addr = inet_addr(cp);
		    				multiName[i] = NULL;
		    				if (cp > s) {
		    					LPSTR np;
		    					
		    					cp[-2] = 0;
		    					np = GlobalAllocPtr(GPTR, strlen(s) + 1);
		    					if (np != NULL) {
		    						_fstrcpy(np, s);
		    						multiName[i] = np;
		    					}
		    				}
		    			}
		    			multiMemberships = n;
		    			multicastJoin(hwnd, TRUE);		// Join newly chosen groups
		    		}
				    EndDialog(hwnd, TRUE);
				    break;
				    
		    	case IDCANCEL:
				    EndDialog(hwnd, FALSE);
				    break;
				    
				case IDC_MC_NEW_GROUP:
					if (WM_COMMAND_NOTIFY == EN_CHANGE) {
						EnableWindow(GetDlgItem(hwnd, IDC_MC_JOIN),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -