資源簡介
C++數字鍵盤源代碼,通過內部稍微更改程序可以將鍵盤擴展到全部鍵盤。
代碼片段和文件信息
//?ScreenKeyboard.cpp?:?定義應用程序的類行為。
//
#include?“stdafx.h“
#include?“ScreenKeyboard.h“
#include?“ScreenKeyboardDlg.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#endif
//?CScreenKeyboardApp
BEGIN_MESSAGE_MAP(CScreenKeyboardApp?CWinApp)
ON_COMMAND(ID_HELP?CWinApp::onhelp)
END_MESSAGE_MAP()
//?CScreenKeyboardApp?構造
CScreenKeyboardApp::CScreenKeyboardApp()
{
//?TODO:?在此處添加構造代碼,
//?將所有重要的初始化放置在?InitInstance?中
}
//?唯一的一個?CScreenKeyboardApp?對象
CScreenKeyboardApp?theApp;
//?CScreenKeyboardApp?初始化
BOOL?CScreenKeyboardApp::InitInstance()
{
if(IsProgrameRunning())?return?FALSE;?//如果有一個版本運行就關閉
InitCommonControls();
CWinApp::InitInstance();
AfxEnableControlContainer();
CScreenKeyboardDlg?dlg;
m_pMainWnd?=?&dlg;
// dlg.Create(IDD_SCREENKEYBOARD_DIALOG);
INT_PTR?nResponse?=?dlg.DoModal();
if?(nResponse?==?IDOK)
{
//?TODO:在此放置處理何時用“確定”來關閉
//對話框的代碼
}
else?if?(nResponse?==?IDCANCEL)
{
//?TODO:在此放置處理何時用“取消”來關閉
//對話框的代碼
}
//?由于對話框已關閉,所以將返回?FALSE?以便退出應用程序,
//?而不是啟動應用程序的消息泵。
return?FALSE;
}
BOOL?CScreenKeyboardApp::IsProgrameRunning(void)
{
/////////////////////////////////////////////////////////////
HANDLE?hSem?=?CreateSemaphore(NULL?1?1?m_pszAppName);?
//?信號量已存在?
//?信號量存在,則程序已有一個實例運行?
if?(GetLastError()?==?ERROR_ALREADY_EXISTS)?
{?
//?關閉信號量句柄?
CloseHandle(hSem);?
//?尋找先前實例的主窗口?
HWND?hWndPrevious?=?::GetWindow(::GetDesktopWindow()GW_CHILD);?
while?(::IsWindow(hWndPrevious))?
{?
//?檢查窗口是否有預設的標記??
//?有,則是我們尋找的主窗?
if?(::GetProp(hWndPrevious?m_pszExeName))?//在OnInitDialog()中設置這個屬性
{?
//?主窗口已最小化,則恢復其大小?
if?(::IsIconic(hWndPrevious))?
::ShowWindow(hWndPreviousSW_RESTORE);?
//?將主窗激活?
::SetForegroundWindow(hWndPrevious);?
//?將主窗的對話框激活?
::SetForegroundWindow(?
::GetLastActivePopup(hWndPrevious));?
//?退出本實例?
return?TRUE;?
}?
//?繼續尋找下一個窗口?
hWndPrevious?=?::GetWindow(hWndPreviousGW_HWNDNEXT);
}?
//?前一實例已存在,但找不到其主窗?
//?可能出錯了?
//?退出本實例?
return?TRUE;?
}?
return?FALSE;
}
評論
共有 條評論