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

📄 uistatus.c

📁 拼音输入法源码vc开发的
💻 C
📖 第 1 页 / 共 2 页
字号:
		lpUIExtra->uiStatus.sz.cx = BITMAPX * 6 ;
		lpUIExtra->uiStatus.sz.cy = BITMAPY ;

		if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE,
			_T("Software\\freepy"),
			0,
			KEY_READ,
			&hKey) == ERROR_SUCCESS ){
			if( RegQueryValueEx( hKey,
								_T("Position"),
								NULL,
								NULL,
								(LPBYTE)&dwPosition,
								&dwData) == ERROR_SUCCESS ){
				lpUIExtra->uiStatus.pt.x = (int)(short) LOWORD(dwPosition);
				lpUIExtra->uiStatus.pt.y = (int)(short) HIWORD(dwPosition);
				fFlag = FALSE;
			}
			RegCloseKey(hKey);
		}

		if(fFlag){
			SystemParametersInfo(SPI_GETWORKAREA,
							0,
							&screenrc,
							0);

			lpUIExtra->uiStatus.pt.x = screenrc.left + 10;
			lpUIExtra->uiStatus.pt.y = screenrc.bottom - lpUIExtra->uiStatus.sz.cy - 5;
		}

		lpUIExtra->uiStatus.hWnd = 
                      CreateWindowEx( 0,
                            STATUSCLASSNAME,NULL,
                            WS_DISABLED | WS_POPUP,
                            lpUIExtra->uiStatus.pt.x,
                            lpUIExtra->uiStatus.pt.y,
							lpUIExtra->uiStatus.sz.cx,
							lpUIExtra->uiStatus.sz.cy,
                            hUIWnd,NULL,hInst,NULL);
		SetWindowLong(lpUIExtra->uiStatus.hWnd,FIGWL_SVRWND,(DWORD)hUIWnd);
	}

	ShowWindow(lpUIExtra->uiStatus.hWnd,SW_SHOWNOACTIVATE);
    return;
}

DWORD CheckButtonPos( HWND hStatusWnd, LPPOINT lppt)
{
    POINT pt;
    RECT rc;
	DWORD dwButton = 0;

    if (lppt)
    {
        pt = *lppt;
        ScreenToClient(hStatusWnd,&pt);
        GetClientRect(hStatusWnd,&rc);
        if (!PtInRect(&rc,pt))
            return 0;

		if(pt.x < BITMAPX) {
			dwButton |= BUTTONMENU;
		}
		else if (pt.x < BITMAPCHINESEDES) {
			dwButton |= BUTTONPY;
		}
		else if (pt.x < BITMAPFULLDES) {
			dwButton |= BUTTONCHINESE;
		}
		else if (pt.x < BITMAPPUNCTDES) {
			dwButton |= BUTTONFULL;
		}
		else if (pt.x < BITMAPPUNCTDES + BITMAPX) {
			dwButton |= BUTTONPUNCT;
		}
	}
    return dwButton;
}

void PaintStatus( HWND hStatusWnd,HDC hDC,DWORD dwButton )
{

    HIMC hIMC;
    LPINPUTCONTEXT lpIMC;
    HDC hMemDC;
    HBITMAP hBmpOld;
    HWND hSvrWnd;

    hSvrWnd = (HWND)GetWindowLong(hStatusWnd,FIGWL_SVRWND);

    if (hIMC = (HIMC)GetWindowLong(hSvrWnd,IMMGWL_IMC))
    {
        lpIMC = ImmLockIMC(hIMC);
        hMemDC = CreateCompatibleDC(hDC);
        hBmpOld = SelectObject(hMemDC,hBmpStatus);

		if( (dwButton & BUTTONMENU) || !dwButton){
			if( dwButton & BUTTONPUSH)
				BitBlt(hDC,0,0,BITMAPX,BITMAPY,hMemDC,0,BITMAPY,SRCCOPY);
			else
				BitBlt(hDC,0,0,BITMAPX,BITMAPY,hMemDC,0,0,SRCCOPY);
		}

		if( (dwButton & BUTTONPY) || !dwButton){
			if( dwButton & BUTTONPUSH)
				BitBlt(hDC,BITMAPX,0,BITMAPX*2,BITMAPY,hMemDC,BITMAPX,BITMAPY,SRCCOPY);
			else
				BitBlt(hDC,BITMAPX,0,BITMAPX*2,BITMAPY,hMemDC,BITMAPX,0,SRCCOPY);
		}

		if( (dwButton & BUTTONCHINESE) || !dwButton){
			if(lpIMC->fOpen){
				if( dwButton & BUTTONPUSH)
					BitBlt(hDC,BITMAPCHINESEDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPCHINESESRC,BITMAPY,SRCCOPY);
				else
					BitBlt(hDC,BITMAPCHINESEDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPCHINESESRC,0,SRCCOPY);
			}
			else{
				if( dwButton & BUTTONPUSH)
					BitBlt(hDC,BITMAPCHINESEDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPCHINESESRC + BITMAPX,BITMAPY,SRCCOPY);
				else
					BitBlt(hDC,BITMAPCHINESEDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPCHINESESRC + BITMAPX,0,SRCCOPY);
			}
		}

		if( (dwButton & BUTTONFULL) || !dwButton){
			if(wConversionSet & CONVERSION_SET_FULLSHAPE) {
				if( dwButton & BUTTONPUSH)
					BitBlt(hDC,BITMAPFULLDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPFULLSRC,BITMAPY,SRCCOPY);
				else
					BitBlt(hDC,BITMAPFULLDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPFULLSRC,0,SRCCOPY);
			}
			else{
				if( dwButton & BUTTONPUSH)
					BitBlt(hDC,BITMAPFULLDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPFULLSRC + BITMAPX,BITMAPY,SRCCOPY);
				else
					BitBlt(hDC,BITMAPFULLDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPFULLSRC + BITMAPX,0,SRCCOPY);
			}
		}

		if( (dwButton & BUTTONPUNCT) || !dwButton){
			if(wConversionSet & CONVERSION_SET_PUNCT) {
				if( dwButton & BUTTONPUSH)
					BitBlt(hDC,BITMAPPUNCTDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPPUNCTSRC,BITMAPY,SRCCOPY);
				else
					BitBlt(hDC,BITMAPPUNCTDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPPUNCTSRC,0,SRCCOPY);
			}
			else{
				if( dwButton & BUTTONPUSH)
					BitBlt(hDC,BITMAPPUNCTDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPPUNCTSRC + BITMAPX,BITMAPY,SRCCOPY);
				else
					BitBlt(hDC,BITMAPPUNCTDES,0,BITMAPX,BITMAPY,hMemDC,BITMAPPUNCTSRC + BITMAPX,0,SRCCOPY);
			}
		}

		SelectObject(hMemDC,hBmpOld);
        DeleteDC(hMemDC);
        ImmUnlockIMC(hIMC);
    }
}

void UpdateStatusWindow(LPUIEXTRA lpUIExtra)
{
    if (IsWindow(lpUIExtra->uiStatus.hWnd)) {
		InvalidateRect(lpUIExtra->uiStatus.hWnd,NULL,FALSE);
	}
}

BOOL WINAPI SetDialogProc(
			HWND hWnd ,
			UINT message ,
			WPARAM wParam ,
			LPARAM lParam )
{
	switch(message) {
	case WM_INITDIALOG:
		CheckDlgButton(hWnd,IDC_CHECKSORT,
			(wConversionSet & CONVERSION_SET_SORT)? BST_CHECKED :BST_UNCHECKED );
		CheckDlgButton(hWnd,IDC_CHECKFOLLOW,
			(wConversionSet & CONVERSION_SET_FOLLOW)? BST_CHECKED :BST_UNCHECKED );
		CheckDlgButton(hWnd,IDC_CHECKGBK,
			(wConversionSet & CONVERSION_SET_GBK)? BST_CHECKED :BST_UNCHECKED );
		CheckDlgButton(hWnd,IDC_CHECKFUZZYC,
			(wConversionSet & CONVERSION_SET_FUZZYC)? BST_CHECKED :BST_UNCHECKED );
		CheckDlgButton(hWnd,IDC_CHECKFUZZYN,
			(wConversionSet & CONVERSION_SET_FUZZYN)? BST_CHECKED :BST_UNCHECKED );
		CheckDlgButton(hWnd,IDC_CHECKFUZZYH,
			(wConversionSet & CONVERSION_SET_FUZZYH)? BST_CHECKED :BST_UNCHECKED );
		CheckDlgButton(hWnd,IDC_CHECKFUZZYB,
			(wConversionSet & CONVERSION_SET_FUZZYB)? BST_CHECKED :BST_UNCHECKED );
		CheckDlgButton(hWnd,IDC_CHECKSHAPE,
			(wConversionSet & CONVERSION_SET_SHAPE)? BST_CHECKED :BST_UNCHECKED );
		break;

	case WM_COMMAND:
		switch(wParam) {
		case IDC_CHECKFUZZYC:
			break;

		case IDC_CHECKFUZZYN:
			break;

		case IDC_CHECKFUZZYH:
			break;

		case IDC_CHECKSORT:
			break;

		case IDOK:
			if(IsDlgButtonChecked(hWnd,IDC_CHECKSORT) == BST_CHECKED)
				wConversionSet |= CONVERSION_SET_SORT;
			else
				wConversionSet &= ~CONVERSION_SET_SORT;

			if(IsDlgButtonChecked(hWnd,IDC_CHECKFOLLOW) == BST_CHECKED)
				wConversionSet |= CONVERSION_SET_FOLLOW;
			else
				wConversionSet &= ~CONVERSION_SET_FOLLOW;

			if(IsDlgButtonChecked(hWnd,IDC_CHECKGBK) == BST_CHECKED)
				wConversionSet |= CONVERSION_SET_GBK;
			else
				wConversionSet &= ~CONVERSION_SET_GBK;

			if(IsDlgButtonChecked(hWnd,IDC_CHECKFUZZYC) == BST_CHECKED)
				wConversionSet |= CONVERSION_SET_FUZZYC;
			else
				wConversionSet &= ~CONVERSION_SET_FUZZYC;

			if(IsDlgButtonChecked(hWnd,IDC_CHECKFUZZYN) == BST_CHECKED)
				wConversionSet |= CONVERSION_SET_FUZZYN;
			else
				wConversionSet &= ~CONVERSION_SET_FUZZYN;

			if(IsDlgButtonChecked(hWnd,IDC_CHECKFUZZYH) == BST_CHECKED)
				wConversionSet |= CONVERSION_SET_FUZZYH;
			else
				wConversionSet &= ~CONVERSION_SET_FUZZYH;

			if(IsDlgButtonChecked(hWnd,IDC_CHECKFUZZYB) == BST_CHECKED)
				wConversionSet |= CONVERSION_SET_FUZZYB;
			else
				wConversionSet &= ~CONVERSION_SET_FUZZYB;

			if(IsDlgButtonChecked(hWnd,IDC_CHECKSHAPE) == BST_CHECKED)
				wConversionSet |= CONVERSION_SET_SHAPE;
			else
				wConversionSet &= ~CONVERSION_SET_SHAPE;

			EndDialog(hWnd,TRUE);
			break;

		case IDCANCEL:
			EndDialog(hWnd,TRUE);
			break;

		default:
			return FALSE;
			break;
		}
		break;

	default:
		return FALSE;
		break;
	}
	return TRUE;
}

BOOL WINAPI AboutDialogProc(
			HWND hWnd ,
			UINT message ,
			WPARAM wParam ,
			LPARAM lParam )
{

	switch(message) {
	case WM_INITDIALOG:
		break;

	case WM_COMMAND:
		switch(wParam) {
		case IDOK:
		case IDCANCEL:
			EndDialog(hWnd,TRUE);
			break;
		default:
			return FALSE;
			break;
		}
		break;
	default:
		return FALSE;
		break;
	}
	return TRUE;
}

⌨️ 快捷键说明

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