Exemple #1
0
BOOL CALLBACK CDialog::StaticDlgProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
	//указатель на объект-диалог
	CDialog* pDialog;
	//если это сообщение-инициализация
	if(Msg==WM_INITDIALOG)
	{
		//запомнить объект
		pDialog=(CDialog*)lParam;
		SetWindowLong(hWnd,GWL_USERDATA,(LONG)lParam);
		//запомнить окно диалога
		pDialog->mhWindow=hWnd;
	}
	else
    //получить объект
		pDialog=(CDialog*)GetWindowLong(hWnd,GWL_USERDATA);

	//обработка некоторых сообщений
	switch(Msg)
	{
	case WM_INITDIALOG:
		//сделать диалог полупрозрачным
		SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE) /*| WS_EX_TOOLWINDOW */| WS_EX_LAYERED);
		SetLayeredWindowAttributes(hWnd,0,255*90/100,LWA_ALPHA);
		//удалить команду закрытия окна
//		RemoveMenu(GetSystemMenu(hWnd,FALSE),SC_CLOSE,MF_BYCOMMAND);
		break;
	case WM_CTLCOLORDLG:
	case WM_CTLCOLORSTATIC:
	case WM_CTLCOLORBTN:
//	case WM_CTLCOLOREDIT:
//	case WM_CTLCOLORLISTBOX:
	case WM_CTLCOLORSCROLLBAR:
		SetBkColor((HDC)wParam,gApplication.mBrushSelectColor);
		return (BOOL)gApplication.mhBrushSelect;
	}

	//передать диалогу сообщение
	return pDialog ? pDialog->DlgProc(Msg,wParam,lParam) : FALSE;
}