PocketPC - EVC开发技巧大集合!

    技术2022-05-11  139

    来自www.Move2008.com

     

    //Hard Reset!

    #include <winioctl.h>

    #define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)

    extern "C" __declspec(dllimport)void SetCleanRebootFlag(void);

    extern "C" __declspec(dllimport) BOOL KernelIoControl(DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned);

    BOOL HardResetPocketPC(){SetCleanRebootFlag();return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);}

    //全屏void FullScreen(HWND hDlg){RECT rc;GetWindowRect(hDlg, &rc);  SHFullScreen(hDlg, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);MoveWindow( hDlg, rc.left, rc.top, rc.right,  rc.bottom, TRUE);   }

    //类似参数要注意SHFS_HIDETASKBAR HIDE为隐藏、SHOW为显示

    //WinSDK编程 显示隐藏光标

    int  nWaitCursorCount; //光标记数器

    /*******************************************************显示隐藏光标nCode=1为显示,-1为隐藏*****************************************************/void SHCursor(int nCode){    static HCURSOR cur;    static BOOL bo=true;if (bo) {  cur = ::LoadCursor(NULL, IDC_WAIT);  bo = false;}m_nWaitCursorCount += nCode;if (m_nWaitCursorCount > 0){  HCURSOR hcurPrev = ::SetCursor(cur);  if (nCode > 0 && m_nWaitCursorCount == 1)   m_hcurWaitCursorRestore = hcurPrev;}else{  // turn everything off  m_nWaitCursorCount = 0;     // prevent underflow  ::SetCursor(m_hcurWaitCursorRestore);}}

    /*******************************************************开始显示光标*****************************************************/void BeginCursor(){m_nWaitCursorCount = 0;SHCursor(1);}

    /*******************************************************结束显示光标*****************************************************/void EndCursor(){m_nWaitCursorCount = 0;SHCursor(-1);}

    //

    //调用其它程序

    /*******************************************************打开其它应用程序*****************************************************/void Shell(HWND hWnd,LPTSTR ProPath){int ret;    LPTSTR exec = (LPTSTR)malloc(MAX_PATH);    SHELLEXECUTEINFO shi;    exec = ProPath;    shi.cbSize = sizeof(SHELLEXECUTEINFO);    shi.lpVerb = TEXT("open");    shi.lpFile = exec;    shi.nShow = SW_SHOWNORMAL;    ret = ShellExecuteEx(&shi);}

    //WINSDK 弹出式菜单

    /*******************************************************弹出菜单*****************************************************/VOID APIENTRY PopupMenu ( HWND hWnd, POINT point, int IDM){  HMENU hMenu;  HMENU hMenuTrackPopup;    // 得到弹出菜单资源  hMenu = LoadMenu (ghInst, MAKEINTRESOURCE(IDM));  if (!hMenu)    return;

      hMenuTrackPopup = GetSubMenu (hMenu, 0);    ClientToScreen (hWnd, (LPPOINT)&point);    TrackPopupMenu (hMenuTrackPopup, 0, point.x, point.y, 0, hWnd, NULL);  DestroyMenu (hMenu);}


    最新回复(0)