示例#1
0
//================================================================================================
//---------------------------------------------+++--> Dialog Procedure of Miscellaneous Tab Dialog:
INT_PTR CALLBACK Page_Misc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)   //------+++-->
{
	switch(message) {
	case WM_INITDIALOG:
		OnInit(hDlg);
		return TRUE;
		
	case WM_COMMAND: {
			WORD id, code;
			id = LOWORD(wParam);
			code = HIWORD(wParam);
			
			if(id==IDCB_CLOSECAL) {
				if(IsDlgButtonChecked(hDlg, IDCB_CALTOPMOST))
					CheckDlgButton(hDlg, IDCB_CALTOPMOST, FALSE);
			}else if(id==IDCB_CALTOPMOST) {
				if(IsDlgButtonChecked(hDlg, IDCB_CLOSECAL))
					CheckDlgButton(hDlg, IDCB_CLOSECAL, FALSE);
			}else if(id==IDCB_USECALENDAR) {
				UINT iter,enable=IsDlgButtonChecked(hDlg,IDCB_USECALENDAR);
				for(iter=GROUP_CALENDAR; iter<=GROUP_CALENDAR_END; ++iter) EnableDlgItem(hDlg,iter,enable);
				SendPSChanged(hDlg);
				return TRUE;
			}else if(id==IDC_CALCOLORS) {
				INITCOMMONCONTROLSEX icex = {sizeof(icex), ICC_DATE_CLASSES};
				InitCommonControlsEx(&icex);
				DialogBox(NULL, MAKEINTRESOURCE(IDD_CALENDAR_COLOR), hDlg, Window_CalendarColorConfigDlg);
			}
			
			if((id==IDC_FIRSTWEEK&&code==CBN_SELCHANGE) || (id==IDC_FIRSTDAY&&code==CBN_SELCHANGE) || (id==IDC_CALMONTHS&&code==EN_CHANGE) || (id==IDC_CALMONTHSPAST&&code==EN_CHANGE) || id==IDC_OLDCALENDAR)
				SendPSChanged(hDlg);
			else if(((id==IDCB_CLOSECAL) ||  // IF Anything Happens to Anything,
				(id==IDCB_SHOWWEEKNUMS) || //--+++--> Send Changed Message.
				(id==IDCB_SHOW_DOY) ||
				(id==IDCB_TRANS2KICONS) ||
				(id==IDCB_MONOFF_ONLOCK) ||
				(id==IDCB_MULTIMON) ||
				(id==IDCB_CALTOPMOST)) && (code==BST_CHECKED||code==BST_UNCHECKED)) {
				SendPSChanged(hDlg);
			}
			
			return TRUE;
		}
		
	case WM_NOTIFY:
		switch(((NMHDR*)lParam)->code) {
		case PSN_APPLY:
			OnApply(hDlg);
		}
		return TRUE;
	}
	return FALSE;
}
示例#2
0
/*------------------------------------------------
  clicked "..." button
--------------------------------------------------*/
void OnBrowseFile(HWND hDlg, WORD id)
{
	char filter[80], deffile[MAX_PATH], fname[MAX_PATH];

	filter[0] = filter[1] = 0;

	if(id == IDC_BROWSEHELP)
	{
		str0cat(filter, "HTML");
		str0cat(filter, "*.html;*.htm");
	}
	else if(id == IDC_BROWSEHELP2CH)
	{
		str0cat(filter, "HTML");
		str0cat(filter, "*.html;*.htm");
	}
	else if(id == IDC_BROWSELANGDLL)
	{
		str0cat(filter, MyString(IDS_LANGDLLFILE));
		str0cat(filter, "lang*.dll");
	}

	GetDlgItemText(hDlg, id - 1, deffile, MAX_PATH);

	if(!SelectMyFile(hDlg, filter, 0, deffile, fname)) // propsheet.c
		return;

	SetDlgItemText(hDlg, id - 1, fname);
	PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE);
	SendPSChanged(hDlg);
}
示例#3
0
/*------------------------------------------------
  dialog procedure
--------------------------------------------------*/
INT_PTR CALLBACK PageMiscProc(HWND hDlg, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			OnInit(hDlg);
			return TRUE;
		case WM_COMMAND:
		{
			WORD id, code;
			id = LOWORD(wParam); code = HIWORD(wParam);
			switch (id)
			{
				case IDC_NOCLOCK:
					g_bApplyClock = TRUE;
					SendPSChanged(hDlg);
					break;
				case IDC_MCIWAVE:
				case IDC_TASKBARRESTART:
#if TC_ENABLE_DESKTOPICON
				case IDC_DESKTOPICON:
				case IDC_TRANSDESKTOPICONBK:
#endif
					SendPSChanged(hDlg);
					break;
				case IDC_DELAYSTART:
					if(code == EN_CHANGE)
						SendPSChanged(hDlg);
					break;
				case IDC_BROWSEHELP:
					OnBrowse(hDlg);
					break;
			}
			return TRUE;
		}
		case WM_NOTIFY:
			switch(((NMHDR *)lParam)->code)
			{
				case PSN_APPLY: OnApply(hDlg); break;
				case PSN_HELP: MyHelp(GetParent(hDlg), "Misc"); break;
			}
			return TRUE;
	}
	return FALSE;
}
示例#4
0
文件: pagemisc.c 项目: h16o2u9u/rtoss
/*------------------------------------------------
 「デスクトップカレンダー」の自動更新
--------------------------------------------------*/
void OnDeskcal(HWND hDlg)
{
	BOOL b;
	int i;

	b = IsDlgButtonChecked(hDlg, IDC_DESKCAL);
	for(i = IDC_LABDESKCAL; i <= IDC_WATCHWALL; i++)
		EnableDlgItem(hDlg, i, b);
	SendPSChanged(hDlg);
}
示例#5
0
文件: pagemisc.c 项目: h16o2u9u/rtoss
/*------------------------------------------------
 定期的にネットワーク確認
--------------------------------------------------*/
void OnCheckNet(HWND hDlg)
{
	BOOL b;
	int i;

	b = IsDlgButtonChecked(hDlg, IDC_CHECKNETWORK);
	for(i = IDC_CHECKNETINTERVAL; i <= IDC_NETCHECKSTATIC; i++)
		EnableDlgItem(hDlg, i, b);
	SendPSChanged(hDlg);
}
示例#6
0
/*------------------------------------------------
   "Detail..."
--------------------------------------------------*/
void OnDetail(HWND hDlg)
{
	int r, ilang;
	
	ilang = CBGetItemData(hDlg, IDC_LOCALE,
		CBGetCurSel(hDlg, IDC_LOCALE));
	r = (int)DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_FORMAT2),
		GetParent(hDlg), DlgProcFormat2, (LPARAM)ilang);
	if(r == IDOK) SendPSChanged(hDlg);
}
示例#7
0
/*------------------------------------------------
  "..." button : choose color
--------------------------------------------------*/
void OnChooseColor(HWND hDlg, int id)
{
	int idCombo = id - 1;
	
	// common/combobox.c
	if(ChooseColorWithCombo(hDlg, idCombo))
	{
		PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE);
		SendPSChanged(hDlg);
	}
}
示例#8
0
/*------------------------------------------------
  "Day..."
--------------------------------------------------*/
void OnDay(HWND hDlg)
{
	int nOld, nNew;

	nOld = GetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECDAY, NULL, FALSE);
	nNew = SetAutoExecDay(hDlg, nOld);
	if(nNew != nOld)
	{
		SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECDAY, nNew, FALSE);
		SendPSChanged(hDlg);
	}
}
示例#9
0
/*------------------------------------------------
   "12H" combobox
--------------------------------------------------*/
void On12Hour(HWND hDlg)
{
	BOOL b;
	b = IsDlgButtonChecked(hDlg, IDC_12HOUR);
	if(!b)
	{
		CheckDlgButton(hDlg, IDC_AMPM, 0);
		if(!IsDlgButtonChecked(hDlg, IDC_CUSTOM))
			OnFormatCheck(hDlg, 0);
	}
	
	SendPSChanged(hDlg);
}
示例#10
0
/*------------------------------------------------
  clicked "..." button
--------------------------------------------------*/
void OnBrowse(HWND hDlg)
{
	char deffile[MAX_PATH], fname[MAX_PATH];
	char *filter = "HTML\0*.html;*.htm\0\0";
	
	GetDlgItemText(hDlg, IDC_HELPURL, deffile, MAX_PATH);
	
	if(!SelectMyFile(g_hInst, hDlg, filter, 0, deffile, fname))
		return;
	
	SetDlgItemText(hDlg, IDC_HELPURL, fname);
	PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE);
	SendPSChanged(hDlg);
}
示例#11
0
/*------------------------------------------------
  When clicked "year" -- "am/pm"
--------------------------------------------------*/
void OnFormatCheck(HWND hDlg, WORD id)
{
	char s[BUFSIZE_FORMAT];
	int parts[15];
	int i;
	
	for(i = IDC_YEAR4; i <= IDC_AMPM; i++)
	{
		parts[i-IDC_YEAR4] = IsDlgButtonChecked(hDlg, i);
	}
	
	if(id == IDC_YEAR4 || id == IDC_YEAR)
	{
		if(id == IDC_YEAR4 && parts[PART_YEAR4])
		{
			CheckRadioButton(hDlg, IDC_YEAR4, IDC_YEAR, IDC_YEAR4);
			parts[PART_YEAR] = FALSE;
		}
		if(id == IDC_YEAR && parts[PART_YEAR])
		{
			CheckRadioButton(hDlg, IDC_YEAR4, IDC_YEAR, IDC_YEAR);
			parts[PART_YEAR4] = FALSE;
		}
	}
	
	if(id == IDC_MONTH || id == IDC_MONTHS)
	{
		if(id == IDC_MONTH && parts[PART_MONTH])
		{
			CheckRadioButton(hDlg, IDC_MONTH, IDC_MONTHS, IDC_MONTH);
			parts[PART_MONTHS] = FALSE;
		}
		if(id == IDC_MONTHS && parts[PART_MONTHS])
		{
			CheckRadioButton(hDlg, IDC_MONTH, IDC_MONTHS, IDC_MONTHS);
			parts[PART_MONTH] = FALSE;
		}
	}
	
	if(id == IDC_AMPM)
	{
		CheckDlgButton(hDlg, IDC_12HOUR, 1);
		On12Hour(hDlg);
	}
	
	AutoFormat(s, parts); // common/autoformat.c
	SetDlgItemText(hDlg, IDC_FORMAT, s);
	SendPSChanged(hDlg);
}
示例#12
0
/*------------------------------------------------
   Dialog Procedure for the "Format" page
--------------------------------------------------*/
INT_PTR CALLBACK PageFormatProc(HWND hDlg, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			OnInit(hDlg);
			return TRUE;
		case WM_COMMAND:
		{
			WORD id, code;
			id = LOWORD(wParam); code = HIWORD(wParam);
			switch(id)
			{
				case IDC_LOCALE:
					if(code == CBN_SELCHANGE)
						OnLocale(hDlg);
					break;
				case IDC_FORMAT:
#if TC_ENABLE_SYSINFO
				case IDC_SYSII:
#endif
					if(code == EN_CHANGE)
						SendPSChanged(hDlg);
					break;
				case IDC_CUSTOM:
					OnCustom(hDlg, TRUE);
					break;
				case IDC_12HOUR:
					On12Hour(hDlg);
					break;
				case IDC_FORMATDETAIL:
					OnDetail(hDlg);
					break;
			}
			if(IDC_YEAR4 <= id && id <= IDC_AMPM)
				OnFormatCheck(hDlg, id);
			return TRUE;
		}
		case WM_NOTIFY:
			switch(((NMHDR *)lParam)->code)
			{
				case PSN_APPLY: OnApply(hDlg); break;
				case PSN_HELP: MyHelp(GetParent(hDlg), "Format"); break;
			}
			return TRUE;
	}
	return FALSE;
}
示例#13
0
/*------------------------------------------------
  browse bitmap file
--------------------------------------------------*/
void OnBrowse(HWND hDlg)
{
	char deffile[MAX_PATH], fname[MAX_PATH];
	char *filter = "Bitmap (*.bmp)\0*.bmp\0\0";
	
	GetDlgItemText(hDlg, IDC_ANALOGBMP, deffile, MAX_PATH);
	
	// select file : common/selectfile.c
	if(SelectMyFile(g_hInst, hDlg, filter, 0, deffile, fname))
	{
		SetDlgItemText(hDlg, IDC_ANALOGBMP, fname);
		PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE);
		SendPSChanged(hDlg);
	}
}
示例#14
0
/*------------------------------------------------
  select file
--------------------------------------------------*/
void OnBrowse(HWND hDlg)
{
	char deffile[MAX_PATH], fname[MAX_PATH];
	
	GetDlgItemText(hDlg, IDC_MOUSEOPT, deffile, MAX_PATH);
	
	// common/selectfile.c
	if(!SelectMyFile(g_hInst, hDlg, "All (*.*)\0*.*\0\0",
		0, deffile, fname))
		return;
	
	SetDlgItemText(hDlg, IDC_MOUSEOPT, fname);
	PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE);
	SendPSChanged(hDlg);
}
示例#15
0
/*------------------------------------------------
  "Min..."
--------------------------------------------------*/
void OnMin(HWND hDlg)
{
	int nOld1, nOld2, nNew1 = 0, nNew2 = 0;

	nOld1 = GetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN1, NULL, FALSE);
	nOld2 = GetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN2, NULL, FALSE);
	SetAutoExecMin(hDlg, nOld1, nOld2, &nNew1, &nNew2);

	if(nNew1 != nOld1 || nNew2 != nOld2)
	{
		SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN1, nNew1, FALSE);
		SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN2, nNew2, FALSE);
		SendPSChanged(hDlg);
	}
}
示例#16
0
文件: pagemisc.c 项目: h16o2u9u/rtoss
/*------------------------------------------------
 「...」 デスクトップカレンダーの参照
--------------------------------------------------*/
void OnSanshoDeskcal(HWND hDlg, WORD id)
{
	char filter[] = "Deskcal.exe\0Deskcal.exe\0";
	char deffile[MAX_PATH], fname[MAX_PATH];
	//HFILE hf = HFILE_ERROR;

	GetDlgItemText(hDlg, id - 1, deffile, MAX_PATH);
	if(strlen(deffile) > 10 &&
		strcmp(deffile + (strlen(deffile) - 10), " -OnlyDraw") == 0)
		deffile[strlen(deffile) - 10] = 0;

	if(!SelectMyFile(hDlg, filter, 0, deffile, fname)) // propsheet.c
		return;

	strcat(fname, " -OnlyDraw");
	SetDlgItemText(hDlg, id - 1, fname);
	PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE);
	SendPSChanged(hDlg);
}
示例#17
0
BOOL CALLBACK PageAboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
  switch(message) {
	case WM_INITDIALOG:
	  OnInit(hDlg);
	  return TRUE;

	case WM_CTLCOLORSTATIC: {
	  int id; HDC hdc;
	  hdc = (HDC)wParam;
	  id = GetDlgCtrlID((HWND)lParam);
	  if(id == IDC_MAILTO || id == IDC_HOMEPAGE) {
		 SetTextColor(hdc, RGB(0,0,255));
		 SetBkMode(hdc, OPAQUE);
		// return (BOOL)(INT_PTR)GetSysColorBrush(COLOR_3DFACE);
	  } break;
	}

	case WM_COMMAND: {
	  WORD id, code;
	  id = LOWORD(wParam);
	  code = HIWORD(wParam);
	  if((id == IDC_MAILTO || id == IDC_HOMEPAGE) && code == STN_CLICKED) {
		  OnLinkClicked(hDlg, id);
	  } 
	  if((id == IDC_STARTUP) && ((code == BST_CHECKED) || (code == BST_UNCHECKED))) {
		 SendPSChanged(hDlg);
	  } return TRUE;
	}

	case WM_NOTIFY:
	  switch(((NMHDR *)lParam)->code) {
		case PSN_APPLY: OnApply(hDlg); break;
	  } return TRUE;

	case WM_DESTROY:
	  DeleteObject(hfontLink);
	  DeleteObject(hFontBold);
	  DestroyWindow(hDlg);
	  break;
  }
 return FALSE;
}
示例#18
0
/*------------------------------------------------
  "Customize format" checkbox
--------------------------------------------------*/
void OnCustom(HWND hDlg, BOOL bmouse)
{
	BOOL b;
	int i;
	
	b = IsDlgButtonChecked(hDlg, IDC_CUSTOM);
	EnableDlgItem(hDlg, IDC_FORMAT, b);
	
	for(i = IDC_YEAR4; i <= IDC_AMPM; i++)
		EnableDlgItem(hDlg, i, !b);
	
	if(m_CustomFormat[0] && bmouse)
	{
		if(b) SetDlgItemText(hDlg, IDC_FORMAT, m_CustomFormat);
		else GetDlgItemText(hDlg, IDC_FORMAT, m_CustomFormat, BUFSIZE_FORMAT);
	}
	
	if(!b) OnFormatCheck(hDlg, 0);
	
	SendPSChanged(hDlg);
}
示例#19
0
/*------------------------------------------------
  checked "acrive"
--------------------------------------------------*/
void OnAutoExec(HWND hDlg, WORD id)
{
	int s, e, i;
	BOOL b;

	s = IDC_AUTOEXECHOUR; e = IDC_HIDDENAUTOEXECMIN2;

	b = IsDlgButtonChecked(hDlg, id);
	for(i = s; i <= e; i++)	EnableDlgItem(hDlg, i, b);

	OnFileChange(hDlg, IDC_FILEAUTOEXEC);

	if(b)
	{
		char name[40];
		GetDlgItemText(hDlg, IDC_COMBOAUTOEXEC, name, 40);
		if(strcmp(name, MyString(IDS_ADDALARM)) == 0)
			SetDlgItemText(hDlg, IDC_COMBOAUTOEXEC, "");
	}

	SendPSChanged(hDlg);
}
示例#20
0
/*------------------------------------------------
  Dialog procedure
--------------------------------------------------*/
INT_PTR CALLBACK PageMouseProc(HWND hDlg, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			OnInit(hDlg);
			return TRUE;
		case WM_DESTROY:
			OnDestroy(hDlg);
			break;
		case WM_COMMAND:
		{
			WORD id, code;
			id = LOWORD(wParam); code = HIWORD(wParam);
			switch(id)
			{
				case IDC_NAMECLICK:
					if(code == CBN_SELCHANGE)
					{
						m_bInit = FALSE;
						OnName(hDlg);
						m_bInit = TRUE;
					}
					else if(code == CBN_DROPDOWN)
						OnNameDropDown(hDlg);
					else if(code == CBN_EDITCHANGE)
						SendPSChanged(hDlg);
					break;
				case IDC_ADDCLICK:
					OnAdd(hDlg);
					break;
				case IDC_DELCLICK:
					OnDelete(hDlg);
					break;
				case IDC_MOUSEBUTTON:
					if(code == CBN_SELCHANGE)
					{
#if TC_ENABLE_WHEEL
						OnMouseButton(hDlg);
#endif
						SendPSChanged(hDlg);
					}
					break;
				case IDC_RADSINGLE:
				case IDC_RADDOUBLE:
				case IDC_RADTRIPLE:
				case IDC_RADQUADRUPLE:
				case IDC_MOUSECTRL:
				case IDC_MOUSESHIFT:
				case IDC_MOUSEALT:
				case IDC_RCLICKMENU:
					SendPSChanged(hDlg);
					break;
				case IDC_LMOUSEPASSTHRU:
					g_bApplyClock = TRUE;
					SendPSChanged(hDlg);
					break;
				case IDC_MOUSEFUNC:
					OnFunction(hDlg, TRUE);
					break;
				case IDC_MOUSEOPT:
					if(code == EN_CHANGE)
						SendPSChanged(hDlg);
					break;
				case IDC_MOUSEOPTSANSHO:
					OnBrowse(hDlg);
					break;
			}
			return TRUE;
		}
		case WM_NOTIFY:
			switch(((NMHDR *)lParam)->code)
			{
				case PSN_APPLY: OnApply(hDlg); break;
				case PSN_HELP: MyHelp(GetParent(hDlg), "Mouse"); break;
			}
			return TRUE;
	}
	return FALSE;
}
示例#21
0
/*------------------------------------------------
  Dialog procedure
--------------------------------------------------*/
INT_PTR CALLBACK Page_Color(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message) {
	case WM_INITDIALOG:
		OnInit(hDlg);
		return TRUE;
	case WM_DESTROY:{
		HFONT hfontb=(HFONT)SendDlgItemMessage(hDlg,IDC_BOLD,WM_GETFONT,0,0);
		HFONT hfonti=(HFONT)SendDlgItemMessage(hDlg,IDC_ITALIC,WM_GETFONT,0,0);
		SendDlgItemMessage(hDlg,IDC_BOLD,WM_SETFONT,0,0);
		SendDlgItemMessage(hDlg,IDC_ITALIC,WM_SETFONT,0,0);
		DeleteObject(hfontb);
		DeleteObject(hfonti);
		break;}
	case WM_MEASUREITEM:
		return ColorBox_OnMeasureItem(wParam, lParam);
	case WM_DRAWITEM:
		return ColorBox_OnDrawItem(wParam, lParam);
	case WM_COMMAND: {
		WORD id=LOWORD(wParam);
		switch(HIWORD(wParam)){
		case CBN_SELCHANGE:
			if(id==IDC_COLFORE || id==IDC_COLBACK || id==IDC_FONT || id==IDC_FONTQUAL || id==IDC_FONTSIZE){
				if(id==IDC_FONT) SetComboFontSize(hDlg, FALSE);
				SendPSChanged(hDlg);
			} break;
		case CBN_EDITCHANGE:
			if(id==IDC_FONTSIZE)
				SendPSChanged(hDlg);
			break;
		case EN_CHANGE:
			if(id==IDC_CLOCKHEIGHT || id==IDC_CLOCKWIDTH || id==IDC_ALPHATB || id==IDC_VERTPOS || id==IDC_LINEHEIGHT || id==IDC_HORIZPOS || id==IDC_ANGLE){
				SendPSChanged(hDlg);
			} break;
		default:
			if(id==IDC_COLFORE_BTN || id==IDC_COLBACK_BTN){
				ColorBox_ChooseColor((HWND)lParam);
			}else if(id==IDC_CHOOSEFONT){
				HWND hwndCombo;
				HDC hdc;
				wchar_t size[8];
				LOGFONT lf = {0};
				CHOOSEFONT chosenfont = {sizeof(CHOOSEFONT)};
				chosenfont.hwndOwner = hDlg;
				chosenfont.Flags = CF_FORCEFONTEXIST | CF_INITTOLOGFONTSTRUCT | CF_PRINTERFONTS | CF_SCREENFONTS;
				chosenfont.lpLogFont = &lf;
				hwndCombo = GetDlgItem(hDlg,IDC_FONTSIZE);
				ComboBox_GetText(hwndCombo, size, _countof(size));
				hdc = GetDC(NULL);
				lf.lfWeight = IsDlgButtonChecked(hDlg, IDC_BOLD) ? FW_BOLD : FW_REGULAR;
				lf.lfItalic = (BYTE)IsDlgButtonChecked(hDlg, IDC_ITALIC);
				lf.lfHeight = -MulDiv(_wtoi(size), GetDeviceCaps(hdc,LOGPIXELSY), 72);
				ReleaseDC(NULL, hdc);
				hwndCombo = GetDlgItem(hDlg,IDC_FONT);
				ComboBox_GetText(hwndCombo, lf.lfFaceName, _countof(lf.lfFaceName));
				if(ChooseFont(&chosenfont)){
					int sel;
					CheckDlgButton(hDlg, IDC_BOLD, (chosenfont.lpLogFont->lfWeight >= FW_SEMIBOLD));
					CheckDlgButton(hDlg, IDC_ITALIC, chosenfont.lpLogFont->lfItalic);
					ComboBox_SelectString(hwndCombo, -1, chosenfont.lpLogFont->lfFaceName);
					hwndCombo = GetDlgItem(hDlg,IDC_FONTSIZE);
					wsprintf(size, FMT("%d"), chosenfont.iPointSize/10);
					sel = ComboBox_FindStringExact(hwndCombo, -1, size);
					if(sel != CB_ERR)
						ComboBox_SetCurSel(hwndCombo, sel);
					else
						ComboBox_SetText(hwndCombo, size);
					SendPSChanged(hDlg);
				}
			}else if(id==IDC_BOLD || id==IDC_ITALIC)
				SendPSChanged(hDlg);
		}
		return TRUE;}
	case WM_NOTIFY:{
		PSHNOTIFY* notify=(PSHNOTIFY*)lParam;
		switch(notify->hdr.code) {
		case PSN_APPLY:
			OnApply(hDlg,0);
			if(notify->lParam)
				m_transition=-1;
			break;
		case PSN_RESET:
			if(m_transition==1){
				SendMessage(g_hwndClock, CLOCKM_REFRESHCLOCK, 0, 0);
				SendMessage(g_hwndClock, CLOCKM_REFRESHTASKBAR, 0, 0);
				api.DelKey(L"Preview");
			}
			m_transition=-1;
			break;
		}
		return TRUE;}
	}
	return FALSE;
}
示例#22
0
 //===============================================================================================
//--------------------------+++--> Edit Control Subclass Procedure to Catch/Record HotKey Strokes:
LRESULT APIENTRY SubClassEditProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { //-+++-->
	char szKeyTmp[32] = {0};
	int iCtrlID;

  switch(uMsg){
	case WM_GETDLGCODE:
	  return DLGC_WANTMESSAGE;

	case WM_CHAR: // This is Required to Block (Direct Access)
		return TRUE; //-+> Keyboard Input to the Edit Control.

	case WM_KEYDOWN: //-------------+++--> Looping is Forbidden!
		if((UINT)wParam == uLastKey) return TRUE; //-+> By This.
		if((UINT)wParam == VK_LWIN || (UINT)wParam == VK_RWIN) {
			return TRUE; // Block Acceptance of the Windows Keys
		} //-+> as Their Behavior is (reserved) Unpredictable...
		iCtrlID = (GetDlgCtrlID(hWnd) - 1026); // Edit Control=X
		if((tchk[iCtrlID].fsMod == MOD_SHIFT) && // Translation:
			(((UINT)wParam <= VK_DIVIDE) || // Prevent User From 
			((UINT)wParam >= VK_NUMLOCK))) { // Selecting any of 
				bReset = TRUE; // the Dangerous Key Combinations
		} //----------//------//------------//-----------+++-->
		if(bReset) { //------//------------//-----------+++-->
			tchk[iCtrlID].bValid = FALSE; //-----------+++-->
			Edit_SetText(hWnd, "None"); ///-----------+++-->
			bReset = FALSE;
		}
		if((wParam >= VK_SHIFT) && (wParam <= VK_MENU)) {
			if(wParam == VK_CONTROL) {
				tchk[iCtrlID].fsMod = MOD_CONTROL;
			}

			else if(wParam == VK_SHIFT) {
				if(tchk[iCtrlID].fsMod)
					tchk[iCtrlID].fsMod |= MOD_SHIFT;
				else
					tchk[iCtrlID].fsMod = MOD_SHIFT;
			}

			else if(wParam == VK_MENU) {
				if(tchk[iCtrlID].fsMod)
					tchk[iCtrlID].fsMod |= MOD_ALT;
				else
					tchk[iCtrlID].fsMod = MOD_ALT;
			}

			GetKeyNameText((LONG)lParam, szKeyTmp, TNY_BUFF);
			ShowHotKey(hWnd, iCtrlID, szKeyTmp, TRUE, FALSE, FALSE);
		}
		 //-++-> VK_F1 = 0x70 (112) - VK_F24 = 0x87 (135)
		else if((wParam >= VK_F1) && (wParam <= VK_F24)) { 
			tchk[iCtrlID].vk = (UINT)wParam;
			GetKeyNameText((LONG)lParam, szKeyTmp, TNY_BUFF);
			ShowHotKey(hWnd, iCtrlID, szKeyTmp, FALSE, TRUE, TRUE);
		}

		else { //-+> Oh Shit! ...Sombody Hit the AnyKey!!!
			tchk[iCtrlID].vk = (UINT)wParam;
			GetKeyNameText((LONG)lParam, szKeyTmp, TNY_BUFF);
			ShowHotKey(hWnd, iCtrlID, szKeyTmp, FALSE, FALSE, TRUE);
		}
		uLastKey = (UINT)wParam; //-+> Check for This on Next Loop, To Break Loop!
		return TRUE; //-------------------------------+++--> End of Case WM_KEYDOWN:
//==================================================================================
	case WM_KEYUP:
		uLastKey = 0; //-//-------+++--> Clear the Slate.
		if(!bHaveKey) { // IF Key Record Failed, Go Dark.
			iCtrlID = (GetDlgCtrlID(hWnd) - 1026);
			strcpy(tchk[iCtrlID].szText, "None");
			tchk[iCtrlID].bValid = FALSE;
			Edit_SetText(hWnd, "None");
			tchk[iCtrlID].fsMod = 0;
			tchk[iCtrlID].vk = 0;
		}else{ // ELSE Offer to Save New Key Combination.
			bReset = TRUE;
			iCtrlID = (GetDlgCtrlID(hWnd) - 1026);
			tchk[iCtrlID].bValid = TRUE;
			SendPSChanged(GetParent(hWnd));
		} return TRUE; //-------------------------------+++--> End of Case WM_KEYUP:
//==================================================================================
  }
  //-------------------+++--> Let Windows Handle What We Forget to...
 return CallWindowProc(OldEditClassProc, hWnd, uMsg, wParam, lParam); 
}
示例#23
0
 //================================================================================================
//---------------------------------+++--> Dialog Precedure For Configurable HotKeys Properties Tab:
BOOL CALLBACK PageHotKeyProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { //----+++-->
  switch(message) {
	case WM_INITDIALOG:
	  OnInit(hDlg);
	  return TRUE;

	case WM_NOTIFY:
	  switch(((NMHDR *)lParam)->code) {
		case PSN_APPLY: // Because the Second Time You Try to Register the
			if(bFirstTime) OnApply(hDlg); //-+> Same HotKey is an Error...
		  break;

	  } return TRUE;

	case WM_COMMAND: {
	  WORD id, code;
	  id = LOWORD(wParam);
	  code = HIWORD(wParam);

	  if(code == EN_KILLFOCUS) { //--++-> Add This After Bugg Found By:
		  if(!tchk[(id - 1026)].bValid) { // ewemoa - DonationCoder.com
			  SetDlgItemText(hDlg, id, "None");  // Burn the HotKet on 
			  tchk[(id - 1026)].bValid = FALSE; // Input Focus Failure
		  bReset = TRUE;
		  } return TRUE;
	  }

	  switch(id) {
		  case IDCB_HK_ADD:
			  EnableWindow(GetDlgItem(hDlg, IDCE_HK_ADD), TRUE);
			  EnableWindow(GetDlgItem(hDlg, IDCB_HK_ADD), FALSE);
			  SetDlgItemText(hDlg, IDCE_HK_ADD, "None");
			  SetFocus(GetDlgItem(hDlg, IDCE_HK_ADD));
			  tchk[0].bValid = FALSE; // Required to Clear/Remove HotKey
			  SendPSChanged(hDlg);
			  tchk[0].fsMod = 0;
			  tchk[0].vk = 0;
			  bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's
		    break;

		  case IDCB_HK_STOP:
			  EnableWindow(GetDlgItem(hDlg, IDCE_HK_STOP), TRUE);
			  EnableWindow(GetDlgItem(hDlg, IDCB_HK_STOP), FALSE);
			  SetDlgItemText(hDlg, IDCE_HK_STOP, "None");
			  SetFocus(GetDlgItem(hDlg, IDCE_HK_STOP));
			  tchk[1].bValid = FALSE; // Required to Clear/Remove HotKey
			  SendPSChanged(hDlg);
			  tchk[1].fsMod = 0;
			  tchk[1].vk = 0;
			  bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's
		    break;

		  case IDCB_HK_TIME:
			  EnableWindow(GetDlgItem(hDlg, IDCE_HK_TIME), TRUE);
			  EnableWindow(GetDlgItem(hDlg, IDCB_HK_TIME), FALSE);
			  SetDlgItemText(hDlg, IDCE_HK_TIME, "None");
			  SetFocus(GetDlgItem(hDlg, IDCE_HK_TIME));
			  tchk[2].bValid = FALSE; // Required to Clear/Remove HotKey
			  SendPSChanged(hDlg);
			  tchk[2].fsMod = 0;
			  tchk[2].vk = 0;
			  bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's
		    break;

		  case IDCB_HK_PROP:
			  EnableWindow(GetDlgItem(hDlg, IDCE_HK_PROP), TRUE);
			  EnableWindow(GetDlgItem(hDlg, IDCB_HK_PROP), FALSE);
			  SetDlgItemText(hDlg, IDCE_HK_PROP, "None");
			  SetFocus(GetDlgItem(hDlg, IDCE_HK_PROP));
			  tchk[3].bValid = FALSE; // Required to Clear/Remove HotKey
			  SendPSChanged(hDlg);
			  tchk[3].fsMod = 0;
			  tchk[3].vk = 0;
			  bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's
		    break;

		  case IDCB_HK_CALN:
			  EnableWindow(GetDlgItem(hDlg, IDCE_HK_CALN), TRUE);
			  EnableWindow(GetDlgItem(hDlg, IDCB_HK_CALN), FALSE);
			  SetDlgItemText(hDlg, IDCE_HK_CALN, "None");
			  SetFocus(GetDlgItem(hDlg, IDCE_HK_CALN));
			  tchk[4].bValid = FALSE; // Required to Clear/Remove HotKey
			  SendPSChanged(hDlg);
			  tchk[4].fsMod = 0;
			  tchk[4].vk = 0;
			  bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's
		    break;
	  }
	} return TRUE;

	case WM_DESTROY:
		OnDestroy(hDlg);
		DestroyWindow(hDlg);
	  break;
  }
 return FALSE;
}
示例#24
0
/*------------------------------------------------
   dialog procedure of this page
--------------------------------------------------*/
INT_PTR CALLBACK PageAnalogClockProc(HWND hDlg, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			OnInit(hDlg);
			return TRUE;
		case WM_COMMAND:
		{
			WORD id, code;
			id = LOWORD(wParam); code = HIWORD(wParam);
			switch(id)
			{
				case IDC_ANALOGCLOCK:
					OnAnalogClock(hDlg);
					SendPSChanged(hDlg);
					break;
				case IDC_COLHOUR:
				case IDC_COLMIN:
					if(code == CBN_SELCHANGE)
						SendPSChanged(hDlg);
					break;
				case IDC_CHOOSECOLHOUR:
				case IDC_CHOOSECOLMIN:
					OnChooseColor(hDlg, id);
					break;
				case IDC_HOURHANDBOLD:
				case IDC_MINHANDBOLD:
				case IDC_ANALOGPOSLEFT:
				case IDC_ANALOGPOSRIGHT:
				case IDC_ANALOGPOSMIDDLE:
					SendPSChanged(hDlg);
					break;
				case IDC_ANALOGHPOS:
				case IDC_ANALOGVPOS:
				case IDC_ANALOGSIZE:
				case IDC_ANALOGBMP:
					if(code == EN_CHANGE)
						SendPSChanged(hDlg);
					break;
				case IDC_ANALOGBMPBROWSE:
					OnBrowse(hDlg);
					break;
			}
			return TRUE;
		}
		case WM_DRAWITEM:
			OnDrawItem(hDlg, (LPDRAWITEMSTRUCT)lParam);
			return TRUE;
		case WM_MEASUREITEM:
			// common/combobox.c
			OnMeasureItemColorCombo((LPMEASUREITEMSTRUCT)lParam);
			return TRUE;
		case WM_NOTIFY:
			switch(((NMHDR *)lParam)->code)
			{
				case PSN_APPLY: OnApply(hDlg); break;
				case PSN_HELP: MyHelp(GetParent(hDlg), "AnalogClock"); break;
			}
			return TRUE;
	}
	return FALSE;
}
示例#25
0
INT_PTR CALLBACK Page_About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message) {
	case WM_INITDIALOG:
		OnInit(hDlg);
		return TRUE;
	case WM_DESTROY:{
		int controlid;
		HFONT hftBold=(HFONT)SendDlgItemMessage(hDlg,IDC_ABT_TITLE,WM_GETFONT,0,0);
		HFONT hftBigger=(HFONT)SendDlgItemMessage(hDlg,IDC_STARTUP,WM_GETFONT,0,0);
		SendDlgItemMessage(hDlg,IDC_STARTUP,WM_SETFONT,0,0);
		for(controlid=GROUP_ABT_B_BEGIN; controlid<=GROUP_ABT_B_END; ++controlid){
			SendDlgItemMessage(hDlg,controlid,WM_SETFONT,0,0);
		}
		DeleteObject(hftBold);
		DeleteObject(hftBigger);
		break;}
	case WM_CTLCOLORSTATIC:{
		int id=GetDlgCtrlID((HWND)lParam);
		if(id==IDC_ABT_WEBuri || id==IDC_ABT_MAILuri || id==IDC_ABT_FORUMuri) {
			return LinkControl_OnCtlColorStatic(hDlg, wParam, lParam);
		}
		break;}
	case WM_COMMAND: {
		WORD id;
		id = LOWORD(wParam);
		if(id == IDC_UPDATE_CHECK) {
			HWND options = GetParent(hDlg);
			HANDLE proc;
			int ret;
			MSG msg;
			msg.message = 0;
			EnableWindow((HWND)lParam, 0);
			EnableDlgItem(hDlg, IDC_UPDATE_RELEASE, 0);
			EnableDlgItem(hDlg, IDC_UPDATE_BETA, 0);
			api.ShellExecute(NULL, L"misc\\Options", L"-u", options, SW_HIDE, &proc); // SW_MINIMIZE is buggy
			if(proc) {
				for(;;) {
					ret = MsgWaitForMultipleObjectsEx(1, &proc, INFINITE, QS_ALLEVENTS, MWMO_INPUTAVAILABLE);
					if(ret == WAIT_OBJECT_0)
						break;
					while(PeekMessage(&msg,NULL,0,0,PM_REMOVE) && msg.message != WM_QUIT) {
						TranslateDispatchTClockMessage(&msg);
					}
					if(msg.message == WM_QUIT || !IsWindow(options)) {
						if(msg.message == WM_QUIT)
							PostQuitMessage((int)msg.wParam);
						CloseHandle(proc);
						return FALSE;
					}
				}
				CloseHandle(proc);
				SetUpdateChecks(hDlg, 0);
			}
			SetUpdateChecks(hDlg, 1); // might enable IDC_UPDATE_BETA
			EnableDlgItem(hDlg, IDC_UPDATE_RELEASE, 1);
			EnableWindow((HWND)lParam, 1);
			SetForegroundWindow(options);
		}else if(id == IDC_ABT_MAILuri) {
			OnLinkClicked(hDlg, id);
		}else if(id == IDC_UPDATE_RELEASE) {
			SetUpdateChecks(hDlg, 1);
			SendPSChanged(hDlg);
		} else {
			SendPSChanged(hDlg);
		}
		return TRUE;}
	case WM_NOTIFY:
		switch(((NMHDR*)lParam)->code) {
		case PSN_APPLY: OnApply(hDlg); break;
		} return TRUE;
	}
	return FALSE;
}
示例#26
0
文件: pagemisc.c 项目: h16o2u9u/rtoss
/*------------------------------------------------
 「その他」ページ用ダイアログプロシージャ
--------------------------------------------------*/
BOOL CALLBACK PageMiscProc(HWND hDlg, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			OnInit(hDlg);
			return TRUE;
		case WM_COMMAND:
		{
			WORD id, code;
			id = LOWORD(wParam); code = HIWORD(wParam);
			switch(id)
			{
			// 「時計を改造しない」
			case IDC_NOCLOCK:
			case IDC_TASKWNDCTRL:
				{
				g_bApplyClock = TRUE;
				SendPSChanged(hDlg);
				break;
				}
			// 「デスクトップカレンダーの自動更新」
			case IDC_DESKCAL:
				OnDeskcal(hDlg);
				break;
			// 「定期的にネットワークの確認」
			case IDC_CHECKNETWORK:
				OnCheckNet(hDlg);
				break;
			case IDC_CHECKNETINTERVAL:
				if(code == EN_CHANGE)
					SendPSChanged(hDlg);
				break;
			// チェックボックス
			case IDC_MCIWAVE:
			case IDC_ONLYDATECHANGED:
			case IDC_RESUMESUSPEND:
			case IDC_TONIKAKU:
			case IDC_WATCHWALL:
				SendPSChanged(hDlg);
				break;
			// 何秒後に開始
			case IDC_DELAYSTART:
			case IDC_DELAYNET:
				if(code == EN_CHANGE)
					SendPSChanged(hDlg);
				break;
			// 「...」 デスクトップカレンダーの参照
			case IDC_SANSHODESKCAL:
				OnSanshoDeskcal(hDlg, id);
				break;
			// 「スタートアップ」にショートカットをつくる
			case IDC_STARTUP:
				OnStartup(hDlg);
				break;
			case IDC_DELREG:
				{
					int r;
					r = DelRegAll();
					if (r == 0)
						MyMessageBox(hDlg,MyString(IDS_DELREGNGINI),MyString(IDS_DELREGT),MB_OK,MB_ICONEXCLAMATION);
					else if (r == 1)
						MyMessageBox(hDlg,MyString(IDS_DELREGOK),MyString(IDS_DELREGT),MB_OK,MB_ICONINFORMATION);
					else
						MyMessageBox(hDlg,MyString(IDS_DELREGNG),MyString(IDS_DELREGT),MB_OK,MB_ICONEXCLAMATION);
				}
				break;
			case IDC_CONFMAX:
			case IDC_CFMAXSPIN:
				SendPSChanged(hDlg);
				break;
			}
			return TRUE;
		}
		case WM_NOTIFY:
			switch(((NMHDR *)lParam)->code)
			{
				case PSN_APPLY: OnApply(hDlg); break;
				case PSN_HELP: My2chHelp(GetParent(hDlg), 11); break;
			}
			return TRUE;
	}
	return FALSE;
}
示例#27
0
INT_PTR CALLBACK PageAboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			OnInit(hDlg);
			return TRUE;
		case WM_CTLCOLORSTATIC:
		{
			int id; HDC hdc;
			hdc = (HDC)wParam;
			id = GetDlgCtrlID((HWND)lParam);
			if(id == IDC_MAILTO || id == IDC_HOMEPAGE)
			{
				SetTextColor(hdc, RGB(0,0,255));
				SetBkMode(hdc, TRANSPARENT);
				return (INT_PTR)GetStockObject(NULL_BRUSH);
			}
			break;
		}
		case WM_COMMAND:
		{
			WORD id, code;
			id = LOWORD(wParam); code = HIWORD(wParam);
			switch(id)
			{
			case IDC_MAILTO:
			case IDC_HOMEPAGE:
				if(code == STN_CLICKED)
				{
					OnLinkClicked(hDlg, id);
				}
				break;
			case IDC_HELPURL:
			case IDC_HELP2CH:
			case IDC_LANGDLL:
				if(code == EN_CHANGE)
				{
					SendPSChanged(hDlg);
				}
				break;
			case IDC_BROWSEHELP:
			case IDC_BROWSELANGDLL:
			case IDC_BROWSEHELP2CH:
				OnBrowseFile(hDlg, id);
				break;
			}
			return TRUE;
		}
		case WM_NOTIFY:
			switch(((NMHDR *)lParam)->code)
			{
				case PSN_APPLY: OnApply(hDlg); break;
				case PSN_HELP: My2chHelp(GetParent(hDlg), 12); break;
			}
			return TRUE;
		case WM_DESTROY:
			DeleteObject(hfontLink);
			break;
	}
	return FALSE;
}
示例#28
0
/*------------------------------------------------
  Dialog procedure
--------------------------------------------------*/
INT_PTR CALLBACK PageColorProc(HWND hDlg, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			OnInit(hDlg);
			return TRUE;
		case WM_COMMAND:
		{
			WORD id, code;
			id = LOWORD(wParam); code = HIWORD(wParam);
			switch(id)
			{
				case IDC_COLBACK:
				case IDC_COLBACK2:
				case IDC_COLFORE:
#if TC_ENABLE_CLOCKDECORATION
				case IDC_COLSHADOW:
#endif
				case IDC_FONT:
				case IDC_FONTSIZE:
					if(code == CBN_SELCHANGE || code == CBN_EDITCHANGE)
					{
						if(id == IDC_FONT) OnFont(hDlg, FALSE);
						SendPSChanged(hDlg);
					}
					break;
				case IDC_CHKCOLOR:
				case IDC_CHKCOLOR2:
					OnCheckColor(hDlg);
					SendPSChanged(hDlg);
					break;
				case IDC_CHOOSECOLBACK:
				case IDC_CHOOSECOLBACK2:
				case IDC_CHOOSECOLFORE:
#if TC_ENABLE_CLOCKDECORATION
				case IDC_CHOOSECOLSHADOW:
#endif
					OnChooseColor(hDlg, id);
					break;
#if TC_ENABLE_CLOCKDECORATION
				case IDC_DECONONE:
				case IDC_DECOSHADOW:
				case IDC_DECOBORDER:
					OnSelectDecoration(hDlg);
					SendPSChanged(hDlg);
					break;
				case IDC_SHADOWRANGE:
					if(code == EN_CHANGE)
						SendPSChanged(hDlg);
					break;
#endif
				case IDC_GRAD1:
				case IDC_GRAD2:
				case IDC_FILLTRAY:
				case IDC_BOLD:
				case IDC_ITALIC:
					SendPSChanged(hDlg);
					break;
			}
			return TRUE;
		}
		case WM_NOTIFY:
			switch(((NMHDR *)lParam)->code)
			{
				case PSN_APPLY: OnApply(hDlg); break;
				case PSN_HELP: MyHelp(GetParent(hDlg), "Color"); break;
			}
			return TRUE;
		case WM_MEASUREITEM:
			// common/combobox.c
			OnMeasureItemColorCombo((LPMEASUREITEMSTRUCT)lParam);
			return TRUE;
		case WM_DRAWITEM:
			OnDrawItem(hDlg, (LPDRAWITEMSTRUCT)lParam);
			return TRUE;
		case WM_DESTROY:
			if(m_hfontb) DeleteObject(m_hfontb);
			if(m_hfonti) DeleteObject(m_hfonti);
			break;
	}
	return FALSE;
}
示例#29
0
/*------------------------------------------------
  Dialog procedure
--------------------------------------------------*/
BOOL CALLBACK PageAutoExecProc(HWND hDlg, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
		case WM_INITDIALOG:
			OnInit(hDlg);
			return TRUE;
		case WM_COMMAND:
		{
			WORD id, code;
			id = LOWORD(wParam); code = HIWORD(wParam);
			switch(id)
			{
			// a combo-box to select alarm name
			case IDC_COMBOAUTOEXEC:
				if(code == CBN_SELCHANGE)
					OnChangeAutoExec(hDlg);
				else if(code == CBN_DROPDOWN)
					OnDropDownAutoExec(hDlg);
				break;
			// Day...
			case IDC_AUTOEXECHOUR:
				OnHour(hDlg);
				break;
			case IDC_AUTOEXECMIN:
				OnMin(hDlg);
				break;
			case IDC_AUTOEXECDAY:
				OnDay(hDlg);
				break;
			case IDC_AUTOEXEC:
				OnAutoExec(hDlg, id);
				break;
			// file name changed
			case IDC_FILEAUTOEXEC:
				if(code == EN_CHANGE)
				{
					OnFileChange(hDlg, id);
					SendPSChanged(hDlg);
				}
				break;
			// browse file
			case IDC_SANSHOAUTOEXEC:
				OnSanshoAutoExec(hDlg, id);
				OnFileChange(hDlg, (WORD)(id - 1));
				SendPSChanged(hDlg);
				break;
			// checked other checkboxes
			case IDC_ONBOOTEXEC:
				SendPSChanged(hDlg);
				break;
			// delete an alarm
			case IDC_DELAUTOEXEC:
				OnDelAutoExec(hDlg);
				break;
			// test sound
			case IDC_TESTAUTOEXEC:
				OnTest(hDlg, id);
				break;
			}
			return TRUE;
		}
		case WM_NOTIFY:
			switch(((NMHDR *)lParam)->code)
			{
				case PSN_APPLY: OnApply(hDlg); break;
				case PSN_HELP: My2chHelp(GetParent(hDlg), 14); break;
			}
			return TRUE;
		case WM_DESTROY:
			OnDestroy(hDlg);
			if(bPlaying) StopFile(); bPlaying = FALSE;
			break;
		// playing sound ended
		case MM_MCINOTIFY:
		case MM_WOM_DONE:
			StopFile(); bPlaying = FALSE;
			SendDlgItemMessage(hDlg, IDC_TESTAUTOEXEC, BM_SETIMAGE, IMAGE_ICON,
				(LPARAM)g_hIconPlay);
			return TRUE;
	}
	return FALSE;
}