#include "stdafx.h"
#include "resource.h"
#include "BitmapScreen.h"
#include "MousePipe.h"
#include "ScreenPipe.h"
#include "UpdateHandler.h"
Go to the source code of this file.
Defines | |
#define | DEFAULTNAME TEXT("Client") |
#define | DEFAULTCAPTURE TEXT("ScreenCap_") |
Functions | |
TString | clientName (TEXT("Client")) |
The client name. | |
TString | captureName (TEXT("ScreenCap_")) |
The capture file name. | |
ATOM | MyRegisterClass (HINSTANCE hInstance) |
BOOL | InitInstance (HINSTANCE, int) |
LRESULT CALLBACK | WndProc (HWND, UINT, WPARAM, LPARAM) |
LRESULT CALLBACK | About (HWND, UINT, WPARAM, LPARAM) |
LRESULT CALLBACK | Name (HWND, UINT, WPARAM, LPARAM) |
LRESULT CALLBACK | Connect (HWND, UINT, WPARAM, LPARAM) |
LRESULT CALLBACK | Options (HWND, UINT, WPARAM, LPARAM) |
int APIENTRY | wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR lpCmdLine, int nCmdShow) |
bool | registerMouse (bool down) |
void | Cls_OnLButtonUp (HWND hWnd, int x, int y, UINT) |
void | Cls_OnLButtonDown (HWND hWnd, BOOL, int x, int y, UINT) |
bool | Cls_OnEraseBkgnd (HWND hWnd, HDC hDC) |
Paint the background. More... | |
void | Cls_OnPaint (HWND hWnd) |
Paint the workarea. More... | |
bool | Cls_OnCreate (HWND hWnd, LPCREATESTRUCT lpCreateStruct) |
void | Cls_OnDestroy (HWND) |
void | Cls_OnCommand (HWND hWnd, int id, HWND hWndCtl, UINT codeNotify) |
VOID WINAPI | waitForMouse (PVOID param, bool) |
VOID WINAPI | waitForScreen (PVOID param, bool) |
Variables | |
HINSTANCE | hInst |
The current instance handle. | |
CHString | titleBarText |
The title bar text. | |
CHString | windowClass |
The window class string. | |
BitmapScreen * | virtualScreen |
The Screen buffer is displayed by this object. | |
UpdateHandler * | updater = NULL |
This object runs a thread which retrieves data from the screen pipe. | |
MousePipe * | mouseServer = NULL |
This object sends mouseMessages to VCC. | |
ScreenPipe * | screenServer = NULL |
This object recieves screen buffers from VCC. | |
DIBitmap | mainBkGnd |
This is the background image for the main window. | |
int | captureFrequency = 1 |
The capture frequency. | |
int | captureLimit = 0 |
The capture limit. | |
bool | doCapture = false |
true if capturing is enabled. | |
bool | downOnScreen = false |
This boolean is used to help ensure a click is relevent. | |
WaitCallback * | mouseWait |
The callback object for the MousePipe server. | |
WaitCallback * | screenWait |
The callback object for the ScreenPipe server. |
Definition in file winDressing.cpp.
|
Mesage handler for about box. Definition at line 512 of file winDressing.cpp. Referenced by Cls_OnCommand().
00513 { 00514 switch (message){ 00515 case WM_INITDIALOG: 00516 return true; 00517 case WM_COMMAND: 00518 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { 00519 EndDialog(hDlg, LOWORD(wParam)); 00520 return true; 00521 } 00522 break; 00523 } 00524 return false; 00525 } |
|
Performs the appropriate menu action Definition at line 379 of file winDressing.cpp. References About(), captureFrequency, captureLimit, Connect(), UpdateHandler::disableCapture(), doCapture, BitmapScreen::DoneReading(), UpdateHandler::enableCapture(), BitmapScreen::getReadBuffer(), hInst, Name(), Options(), UpdateHandler::run(), DIBitmap::saveFile(), UpdateHandler::setCaptureFrequency(), UpdateHandler::setCaptureLimit(), UpdateHandler::setCaptureName(), UpdateHandler::stop(), and titleBarText. Referenced by WndProc().
00380 { 00381 static int capNo = 0; 00382 const DIBitmap* capture; 00383 00384 // Parse the menu selections: 00385 switch (id){ 00386 case IDM_ABOUT: 00387 DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); 00388 break; 00389 case IDM_SC_OPTIONS: 00390 if( IDOK == DialogBox(hInst, (LPCTSTR)IDD_OPTIONS, hWnd, (DLGPROC)Options) ){ 00391 ModifyMenu(GetMenu(hWnd), IDM_SC_ACTIVATE, MF_BYCOMMAND | MF_CHECKED, 00392 IDM_SC_ACTIVATE, TEXT("Auto Capture")); 00393 doCapture = true; 00394 if( updater != NULL ) 00395 updater->enableCapture(); 00396 } 00397 break; 00398 case IDM_SC_CAPTURE: 00399 capture = virtualScreen->getReadBuffer(); 00400 capture->saveFile(TString(TEXT("capture")) + TString(capNo++) + TString(TEXT(".bmp"))); 00401 virtualScreen->DoneReading(); 00402 break; 00403 case IDM_SC_ACTIVATE: 00404 if( !doCapture ){ 00405 ModifyMenu(GetMenu(hWnd), IDM_SC_ACTIVATE, MF_BYCOMMAND | MF_CHECKED, 00406 IDM_SC_ACTIVATE, TEXT("Auto Capture")); 00407 doCapture = true; 00408 if( updater != NULL ) 00409 updater->enableCapture(); 00410 } else { 00411 ModifyMenu(GetMenu(hWnd), IDM_SC_ACTIVATE, MF_BYCOMMAND | MF_UNCHECKED, 00412 IDM_SC_ACTIVATE, TEXT("Auto Capture")); 00413 doCapture = false; 00414 if( updater != NULL ) 00415 updater->disableCapture(); 00416 } 00417 break; 00418 case IDM_DISCONNECT: 00419 SetWindowText( hWnd, (LPCWSTR)titleBarText 00420 + TString(TEXT(" - Disconnected")) ); 00421 00422 EnableMenuItem( 00423 GetMenu(hWnd), 00424 IDM_DISCONNECT, 00425 MF_GRAYED); 00426 EnableMenuItem( 00427 GetMenu(hWnd), 00428 IDM_CONNECT, 00429 MF_ENABLED); 00430 EnableMenuItem( 00431 GetMenu(hWnd), 00432 IDM_SC_OPTIONS, 00433 MF_ENABLED); 00434 00435 // Try to stop updater nicely 00436 updater->stop(false); 00437 // Force it to stop 00438 delete updater; 00439 updater = NULL; 00440 00441 delete mouseServer; // forces disconnect 00442 mouseServer = NULL; 00443 delete screenServer; 00444 screenServer = NULL; 00445 00446 break; 00447 case IDM_CONNECT: 00448 if( DialogBox(hInst, (LPCTSTR)IDD_NAME, hWnd, (DLGPROC)Name) == IDOK ){ 00449 SetWindowText( hWnd, (LPCWSTR)titleBarText 00450 + TString(TEXT(" - ")) + clientName + TString(TEXT(" - Connecting...")) ); 00451 00452 if( DialogBox(hInst, (LPCTSTR)IDD_CONNECT, hWnd, (DLGPROC)Connect) == IDOK ){ 00453 SetWindowText( hWnd, (LPCWSTR)titleBarText 00454 + TString(TEXT(" - ")) + clientName + TString(TEXT(" - Connected")) ); 00455 00456 EnableMenuItem( 00457 GetMenu(hWnd), 00458 IDM_CONNECT, 00459 MF_GRAYED); 00460 EnableMenuItem( 00461 GetMenu(hWnd), 00462 IDM_DISCONNECT, 00463 MF_ENABLED); 00464 EnableMenuItem( 00465 GetMenu(hWnd), 00466 IDM_SC_OPTIONS, 00467 MF_GRAYED); 00468 00469 updater = new UpdateHandler(*screenServer, *virtualScreen, hWnd); 00470 if( doCapture ){ 00471 updater->setCaptureName(captureName); 00472 updater->setCaptureFrequency(captureFrequency); 00473 updater->setCaptureLimit(captureLimit); 00474 updater->enableCapture(); 00475 } 00476 assert( updater->run() ); 00477 } else { 00478 SetWindowText( hWnd, (LPCWSTR)titleBarText 00479 + TString(TEXT(" - Disconnected")) ); 00480 } 00481 } 00482 break; 00483 case IDM_EXIT: 00484 DestroyWindow(hWnd); 00485 break; 00486 default: 00487 FORWARD_WM_COMMAND(hWnd, id, hWndCtl, codeNotify, DefWindowProc); 00488 } 00489 } |
|
Loads the background image and resizes the window Definition at line 320 of file winDressing.cpp. References BitmapScreen::DoneReading(), BitmapScreen::DoneWriting(), DIBitmap::getPBITMAPINFOHEADER(), BitmapScreen::getReadBuffer(), BitmapScreen::getWriteBuffer(), and DIBitmap::loadFile(). Referenced by WndProc().
00321 { 00322 if( !mainBkGnd.loadFile(TEXT("pigi.bmp")) ){ 00323 MessageBox(hWnd, 00324 TEXT("Press any key to continue, or any other to quit.\n"), 00325 TEXT("Error - Can't find background image \"pigi.bmp\""), 00326 MB_OK | MB_ICONERROR | MB_APPLMODAL); 00327 return false; 00328 } 00329 00330 RECT clientArea, windowArea; 00331 00332 GetClientRect(hWnd, &clientArea); 00333 GetWindowRect(hWnd, &windowArea); 00334 00335 SetWindowPos( 00336 hWnd, 00337 HWND_TOP, 00338 0, 0, 00339 windowArea.right - windowArea.left // current screen width 00340 + mainBkGnd.getPBITMAPINFOHEADER()->biWidth // + bitmap width 00341 - clientArea.right, // - current client width 00342 windowArea.bottom - windowArea.top // current screen height 00343 + mainBkGnd.getPBITMAPINFOHEADER()->biHeight // + bitmap height 00344 - clientArea.bottom, // - current client height 00345 SWP_NOMOVE); 00346 00347 virtualScreen = new BitmapScreen(114, 139, 240, -320); 00348 00349 // If "initial.bmp" is present it is written to the screen else it remains blank 00350 DIBitmap *initial = virtualScreen->getWriteBuffer(); 00351 if( !initial->loadFile( TEXT("initial.bmp") ) ){ 00352 virtualScreen->DoneWriting(); 00353 } else { 00354 virtualScreen->DoneWriting(); 00355 00356 initial = virtualScreen->getWriteBuffer(); 00357 *initial = *virtualScreen->getReadBuffer(); 00358 00359 /* Since this is a contrived example and running in a single thread 00360 * you have to be carefull to call DoneReading before DoneWriting 00361 * else the thread blocks itself i.e. an idiotic deadlock 00362 */ 00363 virtualScreen->DoneReading(); 00364 virtualScreen->DoneWriting(); 00365 } 00366 00367 UpdateWindow(hWnd); // sends a WM_PAINT message 00368 00369 return true; 00370 } |
|
Called when program exits Definition at line 373 of file winDressing.cpp. Referenced by WndProc().
00374 { 00375 PostQuitMessage(0); 00376 } |
|
When the background bitmap requires redrawing this handler is called Definition at line 287 of file winDressing.cpp. References DIBitmap::getPBITMAPINFO(), DIBitmap::getPBITMAPINFOHEADER(), and DIBitmap::getPBytes(). Referenced by WndProc().
00288 { 00289 SetDIBitsToDevice( 00290 hDC, 00291 0, 0, 00292 mainBkGnd.getPBITMAPINFOHEADER()->biWidth, 00293 abs(mainBkGnd.getPBITMAPINFOHEADER()->biHeight), 00294 0, 0, 00295 0, 00296 abs(mainBkGnd.getPBITMAPINFOHEADER()->biHeight), 00297 mainBkGnd.getPBytes(), 00298 mainBkGnd.getPBITMAPINFO(), 00299 DIB_RGB_COLORS); 00300 return true; 00301 } |
|
This handles left mouse button down messages. VCC is sent a mouseMessage if the event was on the VScreen. If the queue is full then a ok/cancel message box is presented. This differs from the up event in that this event will be ignored if the queue is full. Definition at line 256 of file winDressing.cpp. References downOnScreen, PServer::isConnected(), VScreen::PointOnScreen(), and registerMouse(). Referenced by WndProc().
00257 { 00258 if( mouseServer == NULL ) 00259 return; 00260 00261 if( !virtualScreen->PointOnScreen(x,y) ) 00262 return; 00263 00264 if( registerMouse(true) ){ 00265 downOnScreen = true; 00266 } else { 00267 if( !mouseServer->isConnected() ) 00268 return; 00269 00270 if( IDCANCEL == MessageBox(hWnd, 00271 TEXT("VCC has too many mouse messages or \nis no longer connected.\n\nPress Cancel to disconnect."), 00272 TEXT("Couldn't Queue Message"), 00273 MB_OKCANCEL | MB_ICONWARNING | MB_APPLMODAL) ){ 00274 00275 SendNotifyMessage(hWnd, WM_COMMAND, IDM_DISCONNECT, 0); 00276 } 00277 00278 } 00279 } |
|
This handles left mouse button up messages. VCC is sent a mouseMessage if the event was on the VScreen. If the queue is full then a retry/cancel message box is presented. A valid up event should always be sent to VCC. Definition at line 222 of file winDressing.cpp. References downOnScreen, PServer::isConnected(), VScreen::PointOnScreen(), and registerMouse(). Referenced by WndProc().
00223 { 00224 if( mouseServer == NULL ) 00225 return; 00226 00227 if( !downOnScreen ) // Didn't click on screen so don't bother sending an up 00228 return; 00229 00230 virtualScreen->PointOnScreen(x,y); // sets the point iff it is on the screen 00231 00232 int command = IDRETRY; 00233 00234 while( !registerMouse(false) && command == IDRETRY ){ 00235 if( !mouseServer->isConnected() ) 00236 return; 00237 00238 command = MessageBox(hWnd, 00239 TEXT("VCC has too many mouse messages or \nis no longer connected.\n\nPress Cancel to disconnect."), 00240 TEXT("Couldn't Queue Message"), 00241 MB_RETRYCANCEL | MB_ICONWARNING | MB_APPLMODAL); 00242 00243 if( command == IDCANCEL ){ 00244 SendNotifyMessage(hWnd, WM_COMMAND, IDM_DISCONNECT, 0); 00245 } 00246 } 00247 downOnScreen = false; // Need to click on screen 00248 } |
|
When the screen (the only thing in the workarea) needs drawing this handler is called Definition at line 306 of file winDressing.cpp. References BitmapScreen::paint(). Referenced by WndProc().
00307 { 00308 PAINTSTRUCT ps; 00309 HDC hDC = BeginPaint(hWnd, &ps); 00310 00311 virtualScreen->paint(hDC); 00312 00313 EndPaint(hWnd, &ps); 00314 } |
|
Mesage handler for the Connection box. Definition at line 637 of file winDressing.cpp. References PServer::getConnectedEventHandle(), WaitCallback::registerWaitForSingleObject(), PServer::serve(), MousePipe::serve(), WaitCallback::unregisterWait(), waitForMouse(), and waitForScreen(). Referenced by Cls_OnCommand().
00638 { 00639 switch (message){ 00640 case WM_INITDIALOG: 00641 mouseServer = new MousePipe( clientName ); 00642 screenServer = new ScreenPipe( clientName ); 00643 00644 if( !(mouseServer->serve() && screenServer->serve()) ){ 00645 delete mouseServer; 00646 mouseServer = NULL; 00647 delete screenServer; 00648 screenServer = NULL; 00649 00650 MessageBox( 00651 hDlg, 00652 TEXT("Failed to serve pipes.\nCheck for another client with the same name.\n"), 00653 TEXT("Can't connect"), 00654 MB_OK); 00655 EndDialog(hDlg, LOWORD(wParam)); 00656 return true; 00657 } 00658 00659 mouseWait = new WaitCallback; 00660 screenWait = new WaitCallback; 00661 00662 assert(mouseWait->registerWaitForSingleObject( 00663 mouseServer->getConnectedEventHandle(), 00664 &waitForMouse, 00665 hDlg, 00666 INFINITE, 00667 true)); 00668 00669 assert(screenWait->registerWaitForSingleObject( 00670 screenServer->getConnectedEventHandle(), 00671 &waitForScreen, 00672 hDlg, 00673 INFINITE, 00674 true)); 00675 00676 return true; 00677 break; 00678 case WM_COMMAND: 00679 switch(wParam){ 00680 case IDCANCEL: 00681 mouseWait->unregisterWait(); 00682 screenWait->unregisterWait(); 00683 delete mouseWait; 00684 delete screenWait; 00685 00686 delete mouseServer; 00687 mouseServer = NULL; 00688 delete screenServer; 00689 screenServer = NULL; 00690 case IDOK: 00691 switch(lParam){ 00692 case 2: 00693 screenWait->unregisterWait(); 00694 delete screenWait; 00695 screenWait = NULL; 00696 if( mouseWait != NULL ) 00697 return true; 00698 break; 00699 case 1: 00700 mouseWait->unregisterWait(); 00701 delete mouseWait; 00702 mouseWait = NULL; 00703 if( screenWait != NULL ) 00704 return true; 00705 break; 00706 default: 00707 break; 00708 } 00709 EndDialog(hDlg, LOWORD(wParam)); 00710 return true; 00711 } 00712 break; 00713 } 00714 return false; 00715 } |
|
Saves instance handle and creates main window Definition at line 141 of file winDressing.cpp. References hInst, titleBarText, and windowClass. Referenced by wWinMain().
00142 { 00143 HWND hWnd; 00144 00145 hInst = hInstance; // Store instance handle in our global variable 00146 00147 hWnd = CreateWindowEx( 00148 0, 00149 windowClass, 00150 (LPCWSTR)titleBarText + TString(TEXT(" - Disconnected")), 00151 WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, 00152 CW_USEDEFAULT, 00153 0, 00154 CW_USEDEFAULT, 00155 0, 00156 NULL, 00157 NULL, 00158 hInstance, 00159 NULL); 00160 00161 if (!hWnd) 00162 { 00163 return false; 00164 } 00165 00166 ShowWindow(hWnd, nCmdShow); 00167 00168 return true; 00169 } |
|
Register the window class Definition at line 119 of file winDressing.cpp. References windowClass, and WndProc(). Referenced by wWinMain().
00120 { 00121 WNDCLASSEX wcex; 00122 00123 wcex.cbSize = sizeof(WNDCLASSEX); 00124 00125 wcex.style = CS_HREDRAW | CS_VREDRAW; 00126 wcex.lpfnWndProc = (WNDPROC)WndProc; 00127 wcex.cbClsExtra = 0; 00128 wcex.cbWndExtra = 0; 00129 wcex.hInstance = hInstance; 00130 wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_WINDRESSING); 00131 wcex.hCursor = LoadCursor(NULL, IDC_ARROW); 00132 wcex.hbrBackground = NULL; 00133 wcex.lpszMenuName = MAKEINTRESOURCE(IDC_WINDRESSING); 00134 wcex.lpszClassName = windowClass; 00135 wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); 00136 00137 return RegisterClassEx(&wcex); 00138 } |
|
Mesage handler for client name dialog. Definition at line 589 of file winDressing.cpp. Referenced by Cls_OnCommand().
00590 { 00591 TCHAR temp[241]; 00592 00593 switch (message){ 00594 case WM_INITDIALOG: 00595 SetDlgItemText(hDlg, IDC_CLIENT_NAME, clientName ); 00596 return true; 00597 case WM_COMMAND: 00598 switch(wParam){ 00599 case IDOK: 00600 GetDlgItemText(hDlg, IDC_CLIENT_NAME, temp, 240); 00601 clientName = temp; 00602 case IDCANCEL: 00603 EndDialog(hDlg, LOWORD(wParam)); 00604 return true; 00605 } 00606 break; 00607 } 00608 return false; 00609 } |
|
Mesage handler for options box. Definition at line 528 of file winDressing.cpp. References captureFrequency, and captureLimit. Referenced by Cls_OnCommand().
00529 { 00530 TCHAR temp[200]; 00531 int tempInt; 00532 00533 switch (message){ 00534 case WM_INITDIALOG: 00535 SetDlgItemText(hDlg, IDC_FILENAME, captureName ); 00536 SetDlgItemText(hDlg, IDC_FREQUENCY_VALUE, TString(captureFrequency)); 00537 if( captureLimit != 0 ){ 00538 SetDlgItemText(hDlg, IDC_LIMIT_VALUE, TString(captureLimit)); 00539 CheckDlgButton(hDlg, IDC_LIMIT_CHECK, BST_CHECKED); 00540 } else { 00541 SetDlgItemText(hDlg, IDC_LIMIT_VALUE, TEXT("")); 00542 CheckDlgButton(hDlg, IDC_LIMIT_CHECK, BST_UNCHECKED); 00543 } 00544 00545 return true; 00546 case WM_COMMAND: 00547 switch(wParam){ 00548 case IDOK: 00549 case IDAPPLY: 00550 GetDlgItemText(hDlg, IDC_FILENAME, temp, 200); 00551 captureName = temp; 00552 00553 GetDlgItemText(hDlg, IDC_FREQUENCY_VALUE, temp, 200); 00554 swscanf(temp, L"%d", &tempInt); 00555 if( tempInt > 0 ) 00556 captureFrequency = tempInt; 00557 00558 if( BST_CHECKED == IsDlgButtonChecked(hDlg, IDC_LIMIT_CHECK) ){ 00559 GetDlgItemText(hDlg, IDC_LIMIT_VALUE, temp, 200); 00560 swscanf(temp, L"%d", &tempInt); 00561 if( tempInt > 0 ){ 00562 captureLimit = tempInt; 00563 } else { 00564 captureLimit = 0; 00565 } 00566 } 00567 if( wParam == IDAPPLY){ 00568 SetDlgItemText(hDlg, IDC_FILENAME, captureName ); 00569 SetDlgItemText(hDlg, IDC_FREQUENCY_VALUE, TString(captureFrequency)); 00570 if( captureLimit != 0 ){ 00571 SetDlgItemText(hDlg, IDC_LIMIT_VALUE, TString(captureLimit)); 00572 CheckDlgButton(hDlg, IDC_LIMIT_CHECK, BST_CHECKED); 00573 } else { 00574 SetDlgItemText(hDlg, IDC_LIMIT_VALUE, TEXT("")); 00575 CheckDlgButton(hDlg, IDC_LIMIT_CHECK, BST_UNCHECKED); 00576 } 00577 return true; 00578 } 00579 case IDCANCEL: 00580 EndDialog(hDlg, LOWORD(wParam)); 00581 return true; 00582 } 00583 break; 00584 } 00585 return false; 00586 } |
|
This function calls queueMessage and ensures that missing messages are sent preventing concurrent up or down messages.
Definition at line 183 of file winDressing.cpp. References VScreen::getScreenX(), VScreen::getScreenY(), and MousePipe::queueMessage(). Referenced by Cls_OnLButtonDown(), and Cls_OnLButtonUp().
00184 { 00185 static bool downLastSeen = false; 00186 00187 if( down ){ 00188 if ( !downLastSeen ){ 00189 if( !mouseServer->queueMessage(virtualScreen->getScreenX(), virtualScreen->getScreenY(), 0) ) 00190 return false; 00191 } else { 00192 if( !mouseServer->queueMessage(virtualScreen->getScreenX(), virtualScreen->getScreenY(), 1)) 00193 return false; 00194 downLastSeen = false; // successfully sent the missing up message 00195 00196 if( !mouseServer->queueMessage(virtualScreen->getScreenX(), virtualScreen->getScreenY(), 0)) 00197 return false; 00198 } 00199 } else { 00200 if ( downLastSeen ){ 00201 if( !mouseServer->queueMessage(virtualScreen->getScreenX(), virtualScreen->getScreenY(), 1)) 00202 return false; 00203 } else { 00204 mouseServer->queueMessage(virtualScreen->getScreenX(), virtualScreen->getScreenY(), 0); 00205 downLastSeen = true; // successfully sent the missing down message 00206 00207 if( !mouseServer->queueMessage(virtualScreen->getScreenX(), virtualScreen->getScreenY(), 1)) 00208 return false; 00209 00210 } 00211 } 00212 00213 downLastSeen = down; 00214 return true; 00215 } |
|
Wait for Mouse connection Callback function. Definition at line 612 of file winDressing.cpp. Referenced by Connect().
00613 { 00614 HWND hDlg = (HWND) param; 00615 00616 CheckDlgButton(hDlg, IDC_MOUSE_OUT, BST_CHECKED); 00617 00618 SendNotifyMessage(hDlg, WM_COMMAND, IDOK, 1); 00619 } |
|
Wait for Screen connection Callback function. Definition at line 622 of file winDressing.cpp. Referenced by Connect().
00623 { 00624 HWND hDlg = (HWND) param; 00625 00626 CheckDlgButton(hDlg, IDC_SCRNBUFF_IN, BST_CHECKED); 00627 00628 SendNotifyMessage(hDlg, WM_COMMAND, IDOK, 2); 00629 } |
|
Mesage handler for Main Window. Definition at line 496 of file winDressing.cpp. References Cls_OnCommand(), Cls_OnCreate(), Cls_OnDestroy(), Cls_OnEraseBkgnd(), Cls_OnLButtonDown(), Cls_OnLButtonUp(), and Cls_OnPaint(). Referenced by MyRegisterClass().
00497 { 00498 switch (message) { 00499 HANDLE_MSG(hWnd, WM_CREATE, Cls_OnCreate); 00500 HANDLE_MSG(hWnd, WM_COMMAND, Cls_OnCommand); 00501 HANDLE_MSG(hWnd, WM_LBUTTONDOWN, Cls_OnLButtonDown); 00502 HANDLE_MSG(hWnd, WM_LBUTTONUP, Cls_OnLButtonUp); 00503 HANDLE_MSG(hWnd, WM_ERASEBKGND, Cls_OnEraseBkgnd); 00504 HANDLE_MSG(hWnd, WM_PAINT, Cls_OnPaint); 00505 HANDLE_MSG(hWnd, WM_DESTROY, Cls_OnDestroy); 00506 default: 00507 return DefWindowProc(hWnd, message, wParam, lParam); 00508 } 00509 } |
|
The entry point function Definition at line 82 of file winDressing.cpp. References InitInstance(), MyRegisterClass(), titleBarText, and windowClass.
00086 { 00087 chWindows9xNotAllowed(); // Check that OS is NT based 00088 00089 MSG msg; 00090 HACCEL hAccelTable; 00091 00092 // Initialize global resource strings 00093 titleBarText.LoadString(IDS_APP_TITLE); 00094 windowClass.LoadString(IDC_WINDRESSING); 00095 00096 // Perform application initialization: 00097 00098 MyRegisterClass(hInstance); 00099 00100 if (!InitInstance (hInstance, nCmdShow)) { 00101 return false; 00102 } 00103 00104 hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_WINDRESSING); 00105 00106 // Main message loop: 00107 while (GetMessage(&msg, NULL, 0, 0)) { 00108 if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { 00109 TranslateMessage(&msg); 00110 DispatchMessage(&msg); 00111 } 00112 } 00113 00114 return msg.wParam; 00115 } |