MRESULT mainwmPaint(HWND hwnd,MPARAM mp1,MPARAM mp2) { HPS hps; RECTL rectlEntire,rectlUpdate; char str[203]; hps=WinBeginPaint(hwnd, NULLHANDLE, &rectlUpdate); #ifdef DEBUG assert(hps!=NULLHANDLE); #endif if (hps==NULLHANDLE) return 0; WinQueryWindowRect(hwnd,&rectlEntire); GpiSetBackMix(hps,BM_OVERPAINT); WinQueryWindowText(hwndHEF1,201,str); // printf("%d\n",strlen(str)); strcat(str," "); HanOut(hps,0,100,str); WinQueryWindowText(hwndHEF2,201,str); strcat(str," "); HanOut(hps,0,80,str); WinEndPaint(hps); return 0L; }
static USHORT setControlPos(HWND hwnd, USHORT x, USHORT y, USHORT ySize) { char buffer[0x0100]; POINTL aptl[TXTBOX_COUNT]; HPS hps; ULONG flag = SWP_SIZE; WinQueryWindowText(hwnd,0xFF,buffer); *(buffer+0xFF) = 0; hps = WinGetPS(hwnd); GpiQueryTextBox( hps, strlen(buffer), (char *) buffer, TXTBOX_COUNT, aptl); WinReleasePS(hps); if(x != 0xFFFF && y != 0xFFFF) flag |= SWP_MOVE|SWP_SHOW; WinSetWindowPos(hwnd, 0, x, y, aptl[TXTBOX_TOPRIGHT].x, ySize, flag); return x+aptl[TXTBOX_TOPRIGHT].x; }
// Message - сообщение. VOID Log_PrintLogMessage( PCHAR Message ) { // Отводим память для текста. PCHAR Window_text = NULL; INT Length = 65536; if( DosAllocMem( (PPVOID) &Window_text, Length, PAG_ALLOCATE ) != NO_ERROR ) return; // Узнаем текст в поле ввода. HWND Field = Log_LogWindow(); WinQueryWindowText( Field, Length, Window_text ); // Добавляем сообщение в поле ввода. strcat( Window_text, Message ); strcat( Window_text, "\n" ); WinEnableWindowUpdate( Field, 0 ); WinSetWindowText( Field, Window_text ); WinEnableWindowUpdate( Field, 1 ); // Освобождаем память. DosFreeMem( Window_text ); Window_text = NULL; // Запоминаем, что поле ввода изменено. Log.RTSettings.Field_is_changed = 1; // Возврат. return; }
void dlgFind_Find(HWND hwnd) { HWND hwndFind = WinWindowFromID(hwnd,IDHEF_FIND); HWND hwndCaseSens = WinWindowFromID(hwnd,IDB_CASESENSITIVE); MLE_SEARCHDATA searchData; ULONG ulStyle = 0; int findLen=0; char *findStr = NULL; findLen = WinQueryWindowTextLength(hwndFind); findStr = malloc(findLen+1); #ifdef DEBUG assert(findStr!=NULL); #endif if (findStr==NULL) return; WinQueryWindowText(hwndFind,findLen+1,findStr); searchData.cb = sizeof(searchData); searchData.pchFind = findStr; searchData.pchReplace = NULL; searchData.iptStart = -1; searchData.iptStop = -1; ulStyle = MLFSEARCH_SELECTMATCH; if (WinSendMsg(hwndCaseSens,BM_QUERYCHECK,0,0)) ulStyle |= MLFSEARCH_CASESENSITIVE; dlgFind_SetFound(hwnd,(int) WinSendMsg(hwndHMLE,HMLM_SEARCH,MPFROMLONG(ulStyle),&searchData)); free(findStr); }
MRESULT clbQueryWparms(PCLBOX pclb, PWNDPARAMS pwpm) { // parametri presentazione: usa procedura default if (isOrdWndParm(pwpm->fsStatus)) return(WinDefWindowProc(pclb->hwnd, WM_QUERYWINDOWPARAMS, (MPARAM)pwpm, MPVOID)); // testo finestra if (pwpm->fsStatus & WPM_TEXT) { if (pclb->fl & CLBXS_CHECK && pclb->hchk) { WinQueryWindowText(pclb->hchk, pwpm->cchText, pwpm->pszText); } else if (pclb->cbtxt) { memcpy((PVOID)pwpm->pszText, (PVOID)pclb->psz, min(pwpm->cchText, pclb->cbtxt) + 1); } else { if (pwpm->cchText) *(pwpm->pszText) = '\0'; } /* endif */ } /* endif */ // lunghezza testo finestra if (pwpm->fsStatus & WPM_CCHTEXT) { if (pclb->fl & CLBXS_CHECK && pclb->hchk) pwpm->cchText = (pclb->fl & CLBXS_CHECK && pclb->hchk)? WinQueryWindowTextLength(pclb->hchk): pclb->cbtxt; } /* endif */ if (pwpm->fsStatus & WPM_CTLDATA) { if (pwpm->cbCtlData < sizeof(CLBOXCDATA)) return (MRESULT)FALSE; ((PCLBOXCDATA)pwpm->pCtlData)->cb = sizeof(CLBOXCDATA); ((PCLBOXCDATA)pwpm->pCtlData)->cch = pclb->cchef; } /* endif */ if (pwpm->fsStatus & WPM_CBCTLDATA) { pwpm->cbCtlData = sizeof(CLBOXCDATA); } /* endif */ return (MRESULT)TRUE; }
BYTE Krnl_Environment_StartupCmdIsPresent( VOID ) { // Перебираем окна в окне рабочего стола. HENUM Enumeration = WinBeginEnumWindows( QueryDesktopWindow() ); HWND Window = NULLHANDLE; while( ( Window = WinGetNextWindow( Enumeration ) ) != NULLHANDLE ) { // Если это не окно рамки - продолжаем перебор окон. if( !IsFrameWindow( Window ) ) continue; // Если это текстовое окно - проверяем его заголовок. if( IsVIOWindow( Window ) ) { // Узнаем заголовок окна. CHAR Title[ SIZE_OF_TITLE ] = ""; WinQueryWindowText( WinWindowFromID( Window, FID_TITLEBAR ), SIZE_OF_TITLE, Title ); // Если в нем встречается слово "Startup": if( stristr( "Startup", Title ) ) { // Завершаем перебор окон. WinEndEnumWindows( Enumeration ); // Окно присутствует, возврат. return 1; } } } WinEndEnumWindows( Enumeration ); // Возврат. return 0; }
BOOL OpenPort(THREAD *pstThd) { ULONG ulAction; APIRET rc; CHAR szMsgString[200]; CHAR szCaption[80]; if ((rc = DosOpen(pstThd->stCfg.szPortName,&pstThd->hCom,&ulAction,0L,0,0x0001,0x21c2,0L)) != 0) { WinQueryWindowText(pstThd->hwndFrame,sizeof(szCaption),szCaption); // WinLoadString(pstThd->habAnchorBlk,NUL,EATM_DOSOPEN, // sizeof(szMsgString),szMsgString); sprintf(szMsgString,"Error opening %s\nError Code = %04X",pstThd->stCfg.szPortName,rc); WinMessageBox( HWND_DESKTOP, pstThd->hwndDlg, (PSZ)szMsgString, (PSZ)szCaption, NUL, MB_MOVEABLE | MB_OK | MB_CUAWARNING ); pstThd->hCom = 0; return(FALSE); } return(TRUE); }
ULONG HEFind(HWND hwnd) { static char findStr[ 256 ] = { 0, }; static char replaceStr[ 256 ] = { 0, }; ULONG ulrc; HWND hwndDlg; HWND hwndFind; HWND hwndReplace; //char str[255]; //int hanmode,kbdtype; hwndDlg = WinLoadDlg(HWND_DESKTOP,hwnd,&HEFindDlgProc,NULLHANDLE,IDD_FIND,NULL); hwndFind = WinWindowFromID( hwndDlg, IDHEF_FIND ); hwndReplace = WinWindowFromID( hwndDlg, IDHEF_REPLACE ); WinSetWindowText( hwndFind, findStr ); // WinSendMsg( hwndFind, HEM_SETSEL, MPFROM2SHORT( 0, strlen( findStr )), 0 ); // WinSendMsg( hwndFind, HEM_REFRESH, 0, 0 ); WinSetWindowText( hwndReplace, replaceStr ); // WinSendMsg( hwndReplace, HEM_SETSEL, // MPFROM2SHORT( strlen( replaceStr ), strlen( replaceStr )), 0 ); // WinSendMsg( hwndReplace, HEM_REFRESH, 0, 0 ); WinSetFocus(HWND_DESKTOP,WinWindowFromID(hwndDlg, DID_OK )); ulrc = WinProcessDlg(hwndDlg); // if (ulrc == DID_OK) // { // } WinQueryWindowText( hwndFind, sizeof( findStr ), findStr ); WinQueryWindowText( hwndReplace, sizeof( replaceStr ), replaceStr ); WinDestroyWindow(hwndDlg); // hanmode = (int)WinSendMsg(hwndHMLE,HMLM_QUERYHANINPUTMODE,0,0); // kbdtype = (int)WinSendMsg(hwndHMLE,HMLM_QUERYKBDTYPE,0,0); // WinPostMsg(hwndStatbar,STATBAR_USERM_SETHANMODE,MPFROMLONG(hanmode),0L); // WinPostMsg(hwndStatbar,STATBAR_USERM_SETKBDTYPE,MPFROMLONG(kbdtype),0L); WinSetFocus(HWND_DESKTOP,hwndHMLE); return 0L; }
MRESULT clbCommand(PCLBOX pclb, ULONG id) { HWND hOwner = WinQueryWindow(pclb->hwnd, QW_OWNER); SHORT i = 0; PSZ psz; switch (id) { case FID_ADD: // alloca buffer per testo entryfield if (!(psz = (PSZ)malloc(pclb->cchef + 1))) break; WinQueryWindowText(pclb->hentry, pclb->cchef + 1, psz); if (!WinSendMsg(hOwner, WM_CONTROL, MPFROM2SHORT(pclb->id, CLBXN_ADD), (MPARAM)psz)) { SHORT ins; // controlla che la stringa non sia gi… presente if (pclb->fl & CLBXS_NODUP && LIT_NONE != (SHORT)pclb->pflbx(pclb->hlbx, LM_SEARCHSTRING, MPFROM2SHORT(0, LIT_FIRST), (MPARAM)psz)) { free(psz); break; } // end if // se stile lo richiede converte stringa in uppercase if (pclb->fl & CLBXS_INSUPPER) WinUpper(pclb->hab, 0, 0, psz); // setta flag inserzione secondo stile if (pclb->fl & CLBXS_INSSORTUP) i = LIT_SORTASCENDING; else if (pclb->fl & CLBXS_INSSORTDN) i = LIT_SORTDESCENDING; else if (pclb->fl & CLBXS_INSEND) i = LIT_END; ins = (SHORT)pclb->pflbx(pclb->hlbx, LM_INSERTITEM, (MPARAM)i, (MPARAM)psz); WinSetWindowText(pclb->hentry, ""); WinSendMsg(hOwner, WM_CONTROL, MPFROM2SHORT(pclb->id, CLBXN_ADDED), (MPARAM)ins); } // end if free(psz); break; case FID_REMOVE: i = (SHORT)pclb->pflbx(pclb->hlbx, LM_QUERYSELECTION, (MPARAM)LIT_FIRST, MPVOID); if (!WinSendMsg(hOwner, WM_CONTROL, MPFROM2SHORT(pclb->id, CLBXN_REM), (MPARAM)i)) { while (i >= 0) { pclb->pflbx(pclb->hlbx, LM_DELETEITEM, (MPARAM)i, MPVOID); i = (SHORT)pclb->pflbx(pclb->hlbx, LM_QUERYSELECTION, (MPARAM)LIT_FIRST, MPVOID); } /* end while */ } /* end if */ pclb->is.remon = 0; WinEnableWindow(pclb->hrem, FALSE); break; case FID_FIND: WinSendMsg(hOwner, WM_CONTROL, MPFROM2SHORT(pclb->id, CLBXN_FIND), (MPARAM)pclb->hwnd); break; } /* endswitch */ return (MRESULT)FALSE; }
void CPlugin::getLogFileName(PSZ szLogFileName, int iSize) { if(getMode() == NP_EMBED) { char sz[256]; getModulePath(szLogFileName, iSize); WinQueryWindowText(WinWindowFromID(m_hWnd, IDC_EDIT_LOG_FILE_NAME), sizeof(sz), sz); strcat(szLogFileName, sz); } else CPluginBase::getLogFileName(szLogFileName, iSize); }
char *get_window_name (void) { char buffer[1024]; int n; buffer[0] = '\0'; create_pm (); n = WinQueryWindowText (hwnd0, sizeof (buffer), buffer); destroy_pm (); if (n <= 0 || buffer[0] == '\0') return strdup (" "); return strdup (buffer); }
static void getEncode(HWND hwndDlg) { HWND hwnd = WinWindowFromID(hwndDlg, IDD_OPT_ENCODE) ; UCHAR name[64] ; ENCPTR p ; WinQueryWindowText(hwnd, 64, name) ; for (p = tabEncode ; p->str != NULL ; p++) { if (strcmp(name, p->str) == 0) { SessPreferredEncoding = p->enc ; return ; } } }
static void getFormat(HWND hwndDlg) { HWND hwnd = WinWindowFromID(hwndDlg, IDD_OPT_FORMAT) ; UCHAR name[64] ; FMTPTR p ; WinQueryWindowText(hwnd, 64, name) ; for (p = tabFormat ; p->str != NULL ; p++) { if (strcmp(name, p->str) == 0) { SessPixelFormat = p->fmt ; return ; } } }
int dlgFind_SetButtonFocus(HWND hwnd) { HWND hwndBtnFind = WinWindowFromID(hwnd,IDB_FIND); HWND hwndBtnReplace = WinWindowFromID(hwnd,IDB_REPLACE); HWND hwndBtnReplaceFind = WinWindowFromID(hwnd,IDB_REPLACEFIND); HWND hwndBtnReplaceAll = WinWindowFromID(hwnd,IDB_REPLACEALL); HWND hwndBtnClose = WinWindowFromID(hwnd,DID_OK); HWND hwndFocus; HWND hwndFind = WinWindowFromID(hwnd,IDHEF_FIND); int findLen=0; char *findStr = NULL; findLen = WinQueryWindowTextLength(hwndFind); // findLen = (int)WinSendMsg(hwndFind,HEM_QUERYTEXTLENGTH,0,0); findStr = malloc(findLen+1); #ifdef DEBUG assert(findStr!=NULL); #endif if (findStr==NULL) return 0; WinQueryWindowText(hwndFind,findLen+1,findStr); // WinSendMsg(hwndFind,HEM_QUERYTEXT,findStr,0); hwndFocus = WinQueryFocus(HWND_DESKTOP); if ((hwndFocus!=hwndBtnFind)&& (hwndFocus!=hwndBtnReplace)&& (hwndFocus!=hwndBtnReplaceFind)&& (hwndFocus!=hwndBtnReplaceAll)&& (hwndFocus!=hwndBtnClose)) { if (strlen(findStr)>0) { WinEnableWindow(hwndBtnFind,TRUE); WinSendMsg(hwndBtnFind,BM_SETDEFAULT,MPFROMLONG(TRUE),0); WinSendMsg(hwndBtnClose,BM_SETDEFAULT,MPFROMLONG(FALSE),0); } else { WinEnableWindow(hwndBtnFind,FALSE); dlgFind_SetFound(hwnd,FALSE); WinSendMsg(hwndBtnFind,BM_SETDEFAULT,MPFROMLONG(FALSE),0); WinSendMsg(hwndBtnClose,BM_SETDEFAULT,MPFROMLONG(TRUE),0); } return TRUE; } return FALSE; }
static BOOL getServer(HWND hwndDlg) { // HAB hab = WinQueryAnchorBlock(hwndDlg) ; HWND hwnd = WinWindowFromID(hwndDlg, IDD_SHOST) ; UCHAR server[128] ; WinQueryWindowText(hwnd, 128, server) ; if (strlen(server) == 0) { return FALSE ; } if (strchr(server, ':') == NULL) { return FALSE ; } loadParam(server) ; return TRUE ; }
void dlgFind_Replace(HWND hwnd,int findNext) { HWND hwndReplace = WinWindowFromID(hwnd,IDHEF_REPLACE); int replaceLen=0; char *replaceStr = NULL; USHORT minIpt,maxIpt; ULONG ret; if (!dlgFind_found) { dlgFind_Find(hwnd); return; } ret = (ULONG)WinSendMsg(hwndHMLE,HMLM_QUERYSEL,MPFROMLONG(HMLFQS_MINMAXSEL),0); minIpt = ret >> 16; maxIpt = ret & 0xFFFF; if (minIpt==maxIpt) return; replaceLen = WinQueryWindowTextLength(hwndReplace); replaceStr = malloc(replaceLen+1); #ifdef DEBUG assert(replaceStr!=NULL); #endif if (replaceStr==NULL) return; WinQueryWindowText(hwndReplace,replaceLen+1,replaceStr); WinSendMsg(hwndHMLE,HMLM_INSERT,replaceStr,0); free(replaceStr); if (findNext) dlgFind_Find(hwnd); else dlgFind_SetFound(hwnd,FALSE); return; }
MRESULT EXPENTRY fnConfigDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { HWND hwndOwner; SWP swpDlg, swpOwner; POINTL ptlTemp; ConfigDlgInitParams_p pCfgDlgInit; switch (msg) { case WM_INITDLG: // Store window instance data pointer in window words WinSetWindowULong(hwnd, QWL_USER, (ULONG) mp2); pCfgDlgInit = (ConfigDlgInitParams_p) mp2; // Set dialog control texts and fonts based on // current language internal_SetPageFont(hwnd); internal_SetConfigDialogText(hwnd, pCfgDlgInit->pchHomeDirectory); // Set initial position of dialog window and show it WinQueryWindowPos(hwnd, &swpDlg); hwndOwner = WinQueryWindow(hwnd, QW_OWNER); WinQueryWindowPos(hwndOwner, &swpOwner); ptlTemp.x = swpOwner.x; ptlTemp.y = swpOwner.y; WinMapWindowPoints(WinQueryWindow(hwndOwner, QW_PARENT), HWND_DESKTOP, &ptlTemp, 1); WinSetWindowPos(hwnd, HWND_TOP, ptlTemp.x + (swpOwner.cx - swpDlg.cx)/2, ptlTemp.y + (swpOwner.cy - swpDlg.cy)/2, 0, 0, SWP_MOVE | SWP_SHOW); //setup the dialog WinSendDlgItemMsg(hwnd, EF_TEXT, EM_SETTEXTLIMIT, MPFROMSHORT(256), NULL); WinSetWindowText(WinWindowFromID(hwnd, EF_TEXT), pCfgDlgInit->pchText); internal_AdjustConfigDialogControls(hwnd); return (MRESULT) FALSE; case WM_COMMAND: switch (SHORT1FROMMP(mp1)) { case PB_CONFOK: pCfgDlgInit = (ConfigDlgInitParams_p) WinQueryWindowULong(hwnd, QWL_USER); if (pCfgDlgInit) { char buff[255]; buff[0]= '\0'; WinQueryWindowText(WinWindowFromID(hwnd, EF_TEXT), 248, &buff); strcpy(pCfgDlgInit->pchText, buff); /*AddLog(buff); AddLog(pCfgDlgInit->pchText);*/ } break; case PB_CONFCANCEL: // restore the old image pCfgDlgInit = (ConfigDlgInitParams_p) WinQueryWindowULong(hwnd, QWL_USER); if (pCfgDlgInit) { } break; } break; default: break; } return WinDefDlgProc(hwnd, msg, mp1, mp2); }
MRESULT EXPENTRY Dlg_OutputPage (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) { switch( msg ) { case WM_INITDLG: { HWND path = WinWindowFromID(hwnd,OUT_PATH); HWND max = WinWindowFromID(hwnd,OUT_MB); WinSendMsg(path,EM_SETTEXTLIMIT,MPFROM2SHORT(1024,TRUE),MPFROM2SHORT(0,TRUE)); WinSendMsg(max,EM_SETTEXTLIMIT,MPFROM2SHORT(6,TRUE),MPFROM2SHORT(0,TRUE)); WinSetWindowText(path,p_config->getBaseDir()); char *num_str = new char[1024]; sprintf(num_str,"%d",p_config->getMaxDownload()); WinSetWindowText(max,num_str); delete[] num_str; } break; case WM_CLOSE: { char *buffer = new char[1024]; WinQueryWindowText(WinWindowFromID(hwnd,OUT_PATH),1023,buffer); lrSpaceTrim(buffer); p_config->setBaseDir(buffer); WinQueryWindowText(WinWindowFromID(hwnd,OUT_MB),1023,buffer); ULONG value = atol(buffer); p_config->setMaxDownload(value); delete[] buffer; } return 0; // 06 Mar 01 SHL case WM_CONTROL: switch(SHORT2FROMMP(mp1)) { case EN_CHANGE: { switch (SHORT1FROMMP(mp1)) { case OUT_MB: { if (done_already) { done_already = 0; FILE *rego = fopen(szLicensePath,"r"); if (rego) fclose(rego); else message("Unregistered News Harvest will finish after a random amount < 15 MB"); } rego_file_found = 1; char *number_str = new char[1024]; WinQueryWindowText(WinWindowFromID(hwnd,OUT_MB),1023,number_str); if (makeDigitsOnly(number_str)) WinSetWindowText(WinWindowFromID(hwnd,OUT_MB),number_str); delete[] number_str; } } } } break; //---------------------------------- case WM_COMMAND: switch( SHORT1FROMMP( mp1 ) ) { case PB_UNDO: // The undo pushbutton has been pressed // The entries should be reset to their last saved values break; //---------------------------------- case PB_DEFAULT: // The default pushbutton has been pressed // The entries should be reset to their default values { HWND path = WinWindowFromID(hwnd,OUT_PATH); HWND max = WinWindowFromID(hwnd,OUT_MB); WinSetWindowText(path,"C:\\NHOutput\\"); WinSetWindowText(max,"0"); } break; //---------------------------------- } return 0; //---------------------------------- case WM_VALIDATE: // Validate the entries { char *buffer = new char[1024]; WinQueryWindowText(WinWindowFromID(hwnd,OUT_PATH),1023,buffer); lrSpaceTrim(buffer); if (*buffer != '\0'); { if (!checkDir(buffer)) { message("Output path is not a vailid directory"); WinSetWindowText(WinWindowFromID(hwnd,OUT_PATH),buffer); WinFocusChange(HWND_DESKTOP,WinWindowFromID(hwnd,OUT_PATH),0); delete[] buffer; return 0; } WinSetWindowText(WinWindowFromID(hwnd,OUT_PATH),buffer); } delete[] buffer; } return (MPARAM) 1; } return WinDefDlgProc( hwnd, msg, mp1, mp2 ); }// Dlg_NbkpPage Dialog Procedure
MRESULT EXPENTRY CDSettingsDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 ) { FILEDLG fd = { 0 }; char profileName[20]; static HINI hini; ULONG keyLength; static char chrPath[CCHMAXPATH]; static char chrOptions[CCHMAXPATH]; switch( msg ) { case WM_INITDLG: { WinSendMsg(WinWindowFromID(hwnd,EFID_CDRECORDPATH),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)CCHMAXPATH),0); WinSendMsg(WinWindowFromID(hwnd,EFID_CDRECORDOPTIONS),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)CCHMAXPATH),0); WinSetWindowText( WinWindowFromID(hwnd,EFID_CDRECORDPATH),chrCDRecord); WinSetWindowText( WinWindowFromID(hwnd,EFID_CDRECORDOPTIONS),chrCDROptions); sprintf(chrPath,"%s",chrCDRecord); sprintf(chrOptions,"%s",chrCDROptions); sprintf(profileName,"cdrecord.ini"); hini=PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),profileName); if(!hini) { WinMessageBox( HWND_DESKTOP, HWND_DESKTOP, "Warning! Cannot open Ini-file!", "", 0UL, MB_OK | MB_ICONEXCLAMATION ); WinDismissDlg(hwnd,DID_ERROR); }/* end of if(!hini) */ } return (MRESULT) TRUE; case WM_DESTROY: if(hini)PrfCloseProfile(hini); hini=NULLHANDLE; break; case WM_CLOSE: WinDismissDlg(hwnd,DID_ERROR); break; case WM_COMMAND: { switch( SHORT1FROMMP( mp1 ) ) { case PBID_CDRECORDBROWSE: fd.cbSize = sizeof( fd ); fd.fl = FDS_OPEN_DIALOG|FDS_CENTER; fd.pszTitle = "Search CDRecord/2"; sprintf(fd.szFullFile,"%s","*.exe"); if( WinFileDlg( HWND_DESKTOP, hwnd, &fd ) == NULLHANDLE ) { break; } if( fd.lReturn == DID_OK ) { WinSetWindowText( WinWindowFromID(hwnd,EFID_CDRECORDPATH), fd.szFullFile ); sprintf(chrCDRecord,"%s",fd.szFullFile); } break; case DID_OK: WinQueryWindowText(WinWindowFromID(hwnd,EFID_CDRECORDOPTIONS),sizeof(chrCDROptions),chrCDROptions); if(!PrfWriteProfileString(hini,"CDWriter","cdrecord",chrCDRecord)){ WinMessageBox( HWND_DESKTOP, HWND_DESKTOP, "Warning! Cannot write to Ini-file!", "", 0UL, MB_OK | MB_ICONEXCLAMATION ); WinDismissDlg(hwnd,DID_ERROR); } if(!PrfWriteProfileString(hini,"CDWriter","cdroptions",chrCDROptions)){ WinMessageBox( HWND_DESKTOP, HWND_DESKTOP, "Warning! Cannot write to Ini-file!", "", 0UL, MB_OK | MB_ICONEXCLAMATION ); WinDismissDlg(hwnd,DID_ERROR); }; WinDismissDlg(hwnd,0); break; case DID_CANCEL: sprintf(chrCDRecord,"%s",chrPath); sprintf(chrCDROptions,"%s",chrOptions); WinDismissDlg(hwnd,1); break; default: break; } } return (MRESULT) TRUE; } return( WinDefDlgProc( hwnd, msg, mp1, mp2 ) ); }
/********************************************************************** * Function: TgtSelDlgProc * Info : dialog event handler for target file selection * Result : TRUE or FALSE **********************************************************************/ MRESULT EXPENTRY TgtSelDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { static PFILEDLG pFileDlg2; CHAR Buffer[CCHMAXPATH+100]; CHAR FileBuffer[CCHMAXPATH]; CHAR PathBuffer3[CCHMAXPATH]; CHAR Title[TITLESTRN_MAXLEN+1]; BOOL SignedFile; MRESULT rc = FALSE; switch (msg) { case WM_INITDLG: CenterWindow(hwnd); pFileDlg2 = (PFILEDLG) WinQueryWindowULong(hwnd, QWL_USER); break; case WM_HELP: DisplayHelp(IDL_TGTFILE_HELP); break; case WM_COMMAND: switch(SHORT1FROMMP(mp1)) { case DID_OK: strcpy(PathBuffer3, pFileDlg2->szFullFile); WinQueryWindowText(WinWindowFromID(hwnd, DID_FILENAME_ED), sizeof(FileBuffer), FileBuffer); strcat(PathBuffer3, FileBuffer); SignedFile = IsSignature(JobDesc.SourceFile); if (!SignedFile || (SignedFile && !IsDetachedSignature) ) { if(FileExist(PathBuffer3)) { Len = WinLoadString(Hab, hRessourceModule, IDS_QUERY_TARGET_OVERWRITE, MSGSTRN_MAXLEN, Msg); Len = WinLoadString(Hab, hRessourceModule, IDS_BUBBLE_DECVERIFYDATA_HELP, TITLESTRN_MAXLEN, Title); sprintf(Buffer, Msg, PathBuffer3); if (MBID_YES == WinMessageBox(HWND_DESKTOP, hwnd, Buffer, "", 0, MB_ICONQUESTION | MB_YESNO)) { if (0 == remove(PathBuffer3)) { strcpy(pFileDlg2->szFullFile, PathBuffer3); pFileDlg2->lReturn = DID_OK; WinDismissDlg(hwnd, TRUE); return (MRESULT) TRUE; } pFileDlg2->lReturn = DID_CANCEL; } return (MRESULT) FALSE; } } else { /* * source file is a detached signature file that is to * be checked against the outfile, so there's no need to * query for outfile overwrite allowance */ strcpy(pFileDlg2->szFullFile, PathBuffer3); pFileDlg2->lReturn = DID_OK; WinDismissDlg(hwnd, TRUE); return (MRESULT) TRUE; } /* fall through! */ } default: rc = WinDefFileDlgProc (hwnd, msg, mp1, mp2); } return rc; }
/*��������������������������������������������������������������������������*/ MRESULT MsgDlgProc(HWND hwnd, MSG message, MPARAM lParam1, MPARAM lParam2 ) { /*������������������������������������������������������������������������Ŀ*/ /*� Local Variables �*/ /*��������������������������������������������������������������������������*/ MRESULT dpResult = NULL; CHAR szFmt [256], /* formatting specification */ szText[256]; /* formatting area */ USHORT usThisItem; /* list item */ /*������������������������������������������������������������������������Ŀ*/ /*� Locate dialog's instance data �*/ /*��������������������������������������������������������������������������*/ PMD_DATA pData = WinQueryWindowPtr(hwnd, QWL_USER); /*������������������������������������������������������������������������Ŀ*/ /*� Process the message �*/ /*��������������������������������������������������������������������������*/ switch (message) { /*��������������������������������������������������������������������Ŀ*/ /*� "Done" PUSHBUTTON has been used or dialog close requested �*/ /*����������������������������������������������������������������������*/ case WM_COMMAND: case WM_CLOSE: WinDismissDlg(hwnd, 0); break; /*��������������������������������������������������������������������Ŀ*/ /*� Notification from one of the dialog controls.... �*/ /*����������������������������������������������������������������������*/ case WM_CONTROL: /****************************************************************** * One of our drop-down list items have new selection? ******************************************************************/ if ( (SHORT2FROMMP(lParam1) == CBN_EFCHANGE) && ( (SHORT1FROMMP(lParam1) == DLG_MD_DD_MP1) || (SHORT1FROMMP(lParam1) == DLG_MD_DD_MP2) ) ) { MP_FORMAT mpThis; /* current MP Format */ /**************************************************************** * Determine "new" drop-down list item ****************************************************************/ usThisItem = SHORT1FROMMR( WinSendMsg(HWNDFROMMP(lParam2), LM_QUERYSELECTION, /* Select item */ MPFROMSHORT(LIT_FIRST), NULL) ); /**************************************************************** * Query item's "handle" to MP table item *****************************************************************/ mpThis = (MP_FORMAT) SHORT1FROMMR( WinSendMsg(HWNDFROMMP(lParam2), LM_QUERYITEMHANDLE, MPFROMSHORT(usThisItem), NULL) ); /**************************************************************** * Format MP1/MP2 using selected value *****************************************************************/ if ( SHORT1FROMMP(lParam1) == DLG_MD_DD_MP1 ) { WinSetWindowText( WinWindowFromID(hwnd, DLG_MD_ST_MP1), MpFormat(pData->qmsgItem.mp1, pData->pMsg->fMP1 = mpThis, szText) ); } else { WinSetWindowText( WinWindowFromID(hwnd, DLG_MD_ST_MP2), MpFormat(pData->qmsgItem.mp2, pData->pMsg->fMP2 = mpThis, szText) ); } } break; /*�������������������������������������������������������������������Ŀ*/ /*� WM_INITDLG: �*/ /*� �*/ /*� - MP2 is dialog instance's data �*/ /*���������������������������������������������������������������������*/ case WM_INITDLG: /*��������������������������������������������������������������Ŀ*/ /*� Save Dialog's instance data pointer (passed in MP2) �*/ /*����������������������������������������������������������������*/ WinSetWindowPtr(hwnd, QWL_USER, pData = PVOIDFROMMP(lParam2)); /*��������������������������������������������������������������Ŀ*/ /*� Setup the Dialog for processing... �*/ /*����������������������������������������������������������������*/ CenterDialog(hwnd); /* Center DLG */ /*��������������������������������������������������������������Ŀ*/ /*� Set up Dialog's title to include MSG name �*/ /*����������������������������������������������������������������*/ WinQueryWindowText(hwnd, sizeof(szFmt), szFmt); sprintf(szText, szFmt, pData->pMsg->pDesc); WinSetWindowText(hwnd, szText); /*��������������������������������������������������������������Ŀ*/ /*� Display MSG's value �*/ /*����������������������������������������������������������������*/ sprintf(szText, "0x%4.4X (%d)", pData->pMsg->Msg, pData->pMsg->Msg); WinSetWindowText( WinWindowFromID(hwnd, DLG_MD_ST_MSG), szText); /*��������������������������������������������������������������Ŀ*/ /*� Display MSG "seen" values �*/ /*����������������������������������������������������������������*/ WinQueryWindowText( WinWindowFromID(hwnd, DLG_MD_ST_SEEN), sizeof(szFmt), szFmt); sprintf( szText, szFmt, pData->pMsg->aulTimes[MSG_TIMES_EVER], pData->pMsg->aulTimes[MSG_TIMES_SINCE] ); WinSetWindowText( WinWindowFromID(hwnd, DLG_MD_ST_SEEN), szText); /*��������������������������������������������������������������Ŀ*/ /*� Set MP format values �*/ /*� �*/ /*� Note: WM_CONTROL messages are generated by the following �*/ /*� which cause formatting of MP1 / MP2 data (see above) �*/ /*����������������������������������������������������������������*/ LoadMpFormats(hwnd, DLG_MD_DD_MP1, pData->pMsg->fMP1); LoadMpFormats(hwnd, DLG_MD_DD_MP2, pData->pMsg->fMP2); break; /*�������������������������������������������������������������������Ŀ*/ /*� We don't need to handle any other messages... �*/ /*� �*/ /*� If this isn't an IPF message, let PM do it's default "thing" �*/ /*���������������������������������������������������������������������*/ default: if ( !HandleIPF(hwnd, message, lParam1, lParam2, &dpResult) ) dpResult = WinDefDlgProc(hwnd, message, lParam1, lParam2 ); } /*�����������������������������������������������������������������������Ŀ*/ /*� Exit �*/ /*�������������������������������������������������������������������������*/ return( dpResult ); }
MRESULT EXPENTRY Dlg_UserPage (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) { switch( msg ) { case WM_INITDLG: { WinSendMsg(WinWindowFromID(hwnd,USER_LOOP),EM_SETTEXTLIMIT,MPFROM2SHORT(4,TRUE),MPFROM2SHORT(0,TRUE)); WinSendMsg(WinWindowFromID(hwnd,USER_WAIT),EM_SETTEXTLIMIT,MPFROM2SHORT(4,TRUE),MPFROM2SHORT(0,TRUE)); String number; number = p_config->getUserLoopTimes(); WinSetWindowText(WinWindowFromID(hwnd,USER_LOOP),number.asCharStar()); number = (int)p_config->getUserLoopDelay(); WinSetWindowText(WinWindowFromID(hwnd,USER_WAIT),number.asCharStar()); if (p_config->getUserAutoStart()) WinCheckButton(hwnd,USER_AUTO,(unsigned short)TRUE); else WinCheckButton(hwnd,USER_AUTO,(unsigned short)FALSE); if (p_config->getUserShowAllFiles()) { WinCheckButton(hwnd,USER_SMALLTREE,(unsigned short)FALSE); WinCheckButton(hwnd,USER_BIGTREE,(unsigned short)TRUE); } else { WinCheckButton(hwnd,USER_SMALLTREE,(unsigned short)TRUE); WinCheckButton(hwnd,USER_BIGTREE,(unsigned short)FALSE); } if (p_config->getUserSmallIcons()) WinCheckButton(hwnd,USER_ICONS,(unsigned short)TRUE); else WinCheckButton(hwnd,USER_ICONS,(unsigned short)FALSE); } break; //---------------------------------- case WM_CLOSE: { unsigned short previous = WinCheckButton(hwnd,USER_AUTO,(unsigned short)TRUE); p_config->setUserAutoStart(previous); previous = WinCheckButton(hwnd,USER_BIGTREE,(unsigned short)TRUE); p_config->setUserShowAllFiles(previous); previous = WinCheckButton(hwnd,USER_ICONS,(unsigned short)TRUE); p_config->setUserSmallIcons(previous); char *buffer = new char[1024]; WinQueryWindowText(WinWindowFromID(hwnd,USER_LOOP),1023,buffer); p_config->setUserLoopTimes(atoi(buffer)); WinQueryWindowText(WinWindowFromID(hwnd,USER_WAIT),1023,buffer); p_config->setUserLoopDelay(atoi(buffer)); delete[] buffer; } return 0; // 06 Mar 01 SHL case WM_CONTROL: switch(SHORT2FROMMP(mp1)) { case EN_CHANGE: { char *number_str = new char[1024]; switch (SHORT1FROMMP(mp1)) { case USER_LOOP: WinQueryWindowText(WinWindowFromID(hwnd,USER_LOOP),1023,number_str); if (makeDigitsOnly(number_str)) WinSetWindowText(WinWindowFromID(hwnd,USER_LOOP),number_str); break; case USER_WAIT: WinQueryWindowText(WinWindowFromID(hwnd,USER_WAIT),1023,number_str); if (makeDigitsOnly(number_str)) WinSetWindowText(WinWindowFromID(hwnd,USER_WAIT),number_str); break; } delete[] number_str; } } //---------------------------------- case WM_COMMAND: switch( SHORT1FROMMP( mp1 ) ) { case PB_DEFAULT: // The default pushbutton has been pressed // The entries should be reset to their default values { WinCheckButton(hwnd,USER_AUTO,(unsigned short)FALSE); WinCheckButton(hwnd,USER_SMALLTREE,(unsigned short)FALSE); WinCheckButton(hwnd,USER_BIGTREE,(unsigned short)TRUE); WinCheckButton(hwnd,USER_ICONS,(unsigned short)TRUE); WinSetWindowText(WinWindowFromID(hwnd,USER_LOOP),"0"); WinSetWindowText(WinWindowFromID(hwnd,USER_WAIT),"0"); } break; //---------------------------------- } return 0; //---------------------------------- case WM_VALIDATE: { /* // get status of check box WinEnableWindowUpdate(WinWindowFromID(hwnd,USER_AUTO),FALSE); unsigned short previous = WinCheckButton(hwnd,USER_AUTO,(unsigned short)TRUE); WinCheckButton(hwnd,USER_AUTO,previous); WinEnableWindowUpdate(WinWindowFromID(hwnd,USER_AUTO),TRUE); // check log filename is available & writeable if being used char *buffer=new char[1024]; WinQueryWindowText(WinWindowFromID(hwnd,LOG_PATH),1023,buffer); lrSpaceTrim(buffer); delete[] buffer; */ } return (MPARAM) 1; // !WinQueryButtonCheckstate( hwnd, CKB_VALIDATIONERROR ); }//switch( msg ) return WinDefDlgProc( hwnd, msg, mp1, mp2 ); }// Dlg_NbkpPage Dialog Procedure
MRESULT EXPENTRY MimeDlgProc(HWND hwndDlg,ULONG msg,MPARAM mp1,MPARAM mp2) { HPOINTER hptrOrig, hptrWait; static int num_entries; static int entry; static FILE *in; static Container *list; static MimeSet *mimes; UserData *ud; char buffer[1024]; int i; switch(msg) { case WM_INITDLG: hptrWait = WinQuerySysPointer( HWND_DESKTOP, SPTR_WAIT, FALSE ); hptrOrig = WinQueryPointer( HWND_DESKTOP ); WinSetPointer( HWND_DESKTOP, hptrWait ); WinSendMsg(WinWindowFromID(hwndDlg,MIME_NAME),EM_SETTEXTLIMIT,MPFROMSHORT(128),MPFROMSHORT(0)); WinSendMsg(WinWindowFromID(hwndDlg,MIME_EXT), EM_SETTEXTLIMIT,MPFROMSHORT(128),MPFROMSHORT(0)); WinSendMsg(WinWindowFromID(hwndDlg,MIME_EXE), EM_SETTEXTLIMIT,MPFROMSHORT(128),MPFROMSHORT(0)); mimes = (MimeSet*)mp2; list = new Container(); list->initialise(hwndDlg,MIME_CONT); num_entries = mimes->getSetNum(); for (i=0; i<num_entries; i++) { sprintf(buffer,"%s: %s",mimes->getName(i),mimes->getExtensions(i)); // message("%d/%d %s is %s",i,num_entries,mimes->getName(i),mimes->getExtensions(i)); list->insert(buffer,(UserData*)NULL,8888L,8888L); } WinFocusChange(HWND_DESKTOP,WinWindowFromID(hwndDlg,MIME_CONT),0); WinSetWindowText(WinWindowFromID(hwndDlg,MIME_NAME),mimes->getName(mimes->getSetNum()-1)); WinSetWindowText(WinWindowFromID(hwndDlg,MIME_EXT),mimes->getExtensions(mimes->getSetNum()-1)); WinSetWindowText(WinWindowFromID(hwndDlg,MIME_EXE),mimes->getCommand(mimes->getSetNum()-1)); list->setItemFocus(list->getLastInsert()); WinSetPointer( HWND_DESKTOP, hptrOrig ); entry = -1; break; case WM_HELP: showHelpWindow(HELP_MIMES); break; case WM_CLOSE: mimes->reload(); delete list; return WinDefDlgProc(hwndDlg,msg,mp1,mp2); case WM_USER: list->arrange(); break; case WM_CONTROL: switch(SHORT2FROMMP(mp1)) { case CN_HELP: WinSendMsg(hwndDlg,WM_HELP,0,0); break; // sent every time emphasis of an object is changed, so if // change from A to B, get deselect on A, and select on B case CN_EMPHASIS: { PNOTIFYRECORDEMPHASIS nre = (PNOTIFYRECORDEMPHASIS)mp2; ud = (UserData*)nre->pRecord; if (ud != NULL) { char *buffer = new char[4096]; strcpy(buffer,ud->getName()); char *ptr = buffer+strlen(buffer)-1; while (ptr>buffer && *ptr!='.') ptr--; if (*ptr == '.') { int index = mimes->find(ptr); if (index > -1) { entry = index; WinSetWindowText(WinWindowFromID(hwndDlg,MIME_NAME),mimes->getName(index)); WinSetWindowText(WinWindowFromID(hwndDlg,MIME_EXT),mimes->getExtensions(index)); WinSetWindowText(WinWindowFromID(hwndDlg,MIME_EXE),mimes->getCommand(index)); } } delete[] buffer; } } break; case EN_CHANGE: { if (SHORT1FROMMP(mp1) == MIME_EXE) { ud = list->findSelectedRecord(NULL); static int lastindex = 0; if (ud && entry != -1) { if (lastindex == entry) { char *buffer = new char[4096]; WinQueryWindowText(WinWindowFromID(hwndDlg,MIME_EXE),129,buffer); mimes->setCommand(entry,buffer); delete[] buffer; } lastindex = entry; } } } break; } break; case WM_COMMAND: switch( SHORT1FROMMP( mp1 ) ) { case IDM_DELETE: // message("delete"); break; case DID_OK: // all OK, close dialog, return if (entry != -1) { WinQueryWindowText(WinWindowFromID(hwndDlg,MIME_EXE),129,buffer); mimes->setCommand(entry,buffer); } mimes->save(); delete list; WinDismissDlg( hwndDlg, TRUE); return (MRESULT) TRUE; case DID_CANCEL: mimes->reload(); delete list; WinDismissDlg( hwndDlg, TRUE); return (MRESULT) FALSE; } break; default: return WinDefDlgProc(hwndDlg,msg,mp1,mp2); } return (MRESULT) TRUE; }
INT main( INT argc, PCHAR argv[] ) { // Сбрасываем свойства приложения. bzero( &Enhancer, sizeof( ENHANCER ) ); // Определяем приложение в системе. Enhancer.Application = WinInitialize( 0 ); // Если это сделать не удалось - выход. if( Enhancer.Application == NULLHANDLE ) { // Звук - ошибка. WinAlarm( HWND_DESKTOP, WA_ERROR ); // Выход. DosExit( EXIT_PROCESS, 0 ); } // Создаем очередь сообщений. HMQ Message_queue = WinCreateMsgQueue( Enhancer.Application, 0 ); // Если очередь создать не удалось - выход. if( Message_queue == NULLHANDLE ) { // Звук - ошибка. WinAlarm( HWND_DESKTOP, WA_ERROR ); // Выход. WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); } // Проверяем системные настройки. CheckSystemConfig(); // Запускаем составляющие приложения. StdLib_Start(); Strings_Start(); Files_Start(); Environment_Start(); EnhancerProperties_Start(); Loader_Start(); Launcher_Start(); // Узнаем, что надо сделать. if( argc == 2 ) { if( stristr( "hide", argv[ 1 ] ) ) Enhancer.Launcher_mode = 1; if( stristr( "mini", argv[ 1 ] ) ) Enhancer.Launcher_mode = 1; if( stristr( "launch", argv[ 1 ] ) ) Enhancer.Launcher_mode = 1; if( stristr( "enhance", argv[ 1 ] ) ) Enhancer.Enhancer_mode = 1; } // Возможно, надо вызвать окно настроек. if( argc == 2 ) { if( strstr( "ControlCenter", argv[ 1 ] ) ) { CHAR Path_to_ControlCenter[ SIZE_OF_PATH ] = ""; GetCurrentPath( Path_to_ControlCenter ); strcat( Path_to_ControlCenter, "\\Nice-eCS.exe" ); Execute( Path_to_ControlCenter, argv[ 1 ] ); WinDestroyMsgQueue( Message_queue ); WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); } } // Если действие не распознано - выход. if( !Enhancer.Enhancer_mode && !Enhancer.Launcher_mode ) { WinDestroyMsgQueue( Message_queue ); WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); } // Если окно приложения уже есть - выход. { CHAR Semaphore_name[] = "\\SEM32\\NICE-OS2!L"; HMTX hmtxAlreadyRunning = NULLHANDLE; if( Enhancer.Enhancer_mode ) Semaphore_name[ strlen( Semaphore_name ) - 1 ] = 'E'; if( DosOpenMutexSem( Semaphore_name, &hmtxAlreadyRunning ) == NO_ERROR ) { WinDestroyMsgQueue( Message_queue ); WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); } else { DosCreateMutexSem( Semaphore_name, &hmtxAlreadyRunning, DC_SEM_SHARED, 1 ); } } // Загрузчик должен запускаться до расширителя. if( Enhancer.Launcher_mode ) { CHAR Semaphore_name[] = "\\SEM32\\NICE-OS2!E"; HMTX hmtxAlreadyRunning = NULLHANDLE; if( DosOpenMutexSem( Semaphore_name, &hmtxAlreadyRunning ) == NO_ERROR ) { WinDestroyMsgQueue( Message_queue ); WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); } } // Расширитель должен запускаться после загрузчика if( Enhancer.Enhancer_mode ) { CHAR Semaphore_name[] = "\\SEM32\\NICE-OS2!L"; HMTX hmtxAlreadyRunning = NULLHANDLE; if( DosOpenMutexSem( Semaphore_name, &hmtxAlreadyRunning ) != NO_ERROR ) { WinDestroyMsgQueue( Message_queue ); WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); } } // Если надо вызвать загрузчик: if( Enhancer.Launcher_mode ) { // Создаем поток для запуска расширителя. DosCreateThread( &Threads.Launcher, (PFNTHREAD) LauncherThread, 0, 0, STACK_SIZE ); } // Если надо вызвать расширитель: if( Enhancer.Enhancer_mode ) { // Пробуем найти окно загрузчика. HWND Launcher_window = NULLHANDLE; CHAR Launcher_title[] = "Nice-OS2!L"; { // Перебираем окна в окне рабочего стола. HENUM Enumeration = WinBeginEnumWindows( WinQueryDesktopWindow( Enhancer.Application, NULLHANDLE ) ); HWND Window = NULLHANDLE; while( ( Window = WinGetNextWindow( Enumeration ) ) != NULLHANDLE ) { // Узнаем заголовок окна. CHAR Window_title[ SIZE_OF_TITLE ] = ""; WinQueryWindowText( WinWindowFromID( Window, FID_TITLEBAR ), SIZE_OF_TITLE, Window_title ); // Если это окно расширителя - запоминаем его. if( strc( Window_title, Launcher_title ) ) { Launcher_window = Window; break; } } WinEndEnumWindows( Enumeration ); } // Если загрузчика нет - выход. // Вообще-то он должен быть, раз найден семафор, но кто знает... if( !Launcher_window ) { WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); } // Создаем потоки, устанавливаем обработчики событий. BYTE Success = NiceLoadEnhancer( Enhancer.Application, 0, Launcher_window ); // Если это сделать не удалось - выход. if( !Success ) { WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); } // Читаем настройки и загружаем изображения в расширитель. // Этот метод выполняется внутри Nice-os2.dll, но так как DLL использует // адресное пространство приложения, все данные остаются в этом приложении. NiceReadSettings( 0 ); // Включаем слежение за сообщениями. NiceRunEnhancer(); } // Создаем окно рабочей области. CHAR Class_name[] = "NiceOS2WndClass!L"; if( Enhancer.Enhancer_mode ) Class_name[ strlen( Class_name ) - 1 ] = 'E'; WinRegisterClass( Enhancer.Application, Class_name, (PFNWP) Enhancer_MainWindowProc, 0, 0 ); // Создаем окно рамки. CHAR MainWindow_title[] = "Nice-OS2!L"; if( Enhancer.Enhancer_mode ) Class_name[ strlen( Class_name ) - 1 ] = 'E'; ULONG Creation_flags = FCF_TITLEBAR | FCF_SYSMENU; Enhancer.Frame_window = WinCreateStdWindow( HWND_DESKTOP, CS_FRAME, &Creation_flags, Class_name, MainWindow_title, 0, NULLHANDLE, 0, &Enhancer.Client_window ); WinShowWindow( Enhancer.Frame_window, 0 ); // Выбираем сообщения из очереди. QMSG Message; bzero( &Message, sizeof( QMSG ) ); while( WinGetMsg( Enhancer.Application, &Message, 0, 0, 0 ) ) WinDispatchMsg( Enhancer.Application, &Message ); // Закрываем окна. WinDestroyWindow( Enhancer.Client_window ); WinDestroyWindow( Enhancer.Frame_window ); // Если вызван расширитель: if( Enhancer.Enhancer_mode ) { // Отключаем обработчики событий, завершаем работу потоков. NiceReleaseEnhancer( Enhancer.Application, 0 ); } // Удаляем файлы отладочной версии. DosForceDelete( "_log.txt" ); DosForceDelete( "XTest.exe" ); // Сбрасываем очередь сообщений. WinDestroyMsgQueue( Message_queue ); // Выход. WinTerminate( Enhancer.Application ); DosExit( EXIT_PROCESS, 0 ); }
void Window::createWindow( Window *parent, Window *owner, char *text, char *windowClass, Window *behind, ULONG windowStyle, int x, int y, int width, int height ) { char str[50], *wClass; mouseButtonDown = FALSE; this->parent = parent; if( parent->getType() == DIALOG) behind = (Window *)parent->getLastControl(); type = WINDOW; this->id = Iterator::getNext(); Application::tempthis = this; oldWndProc = NULL; if( windowClass == 0L ) { currentPointer = WinQuerySysPointer( HWND_DESKTOP, SPTR_ARROW, FALSE ); strcpy( str, "KONBASEWINDOW" ); if( !baseClassRegistered ) { baseClassRegistered = TRUE; if( !WinRegisterClass( Application::hab, (PSZ)str, //(PSZ)itoa( id, str, 10), WndProc, CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT, sizeof(Window *) ) ) { exit( 1 ); } } wClass = str; } else { currentPointer = NULLHANDLE; wClass = windowClass; } if( windowStyle & WS_DISABLED ) { windowStyle &= ~WS_DISABLED; isPopupWin = TRUE; } hWndFrame = hWndClient = WinCreateWindow( (isPopupWin) ? HWND_DESKTOP : parent->getHWND(), wClass, text, windowStyle, x, y, width, height, owner->getHWND(), (behind == NULL) ? HWND_TOP : behind->getHWND(), id, 0L, 0L ); // Subclass window if( wClass == windowClass ) { WinSetWindowULong(hWndFrame,0,(ULONG)this); oldWndProc = WinSubclassWindow( hWndFrame, (PFNWP)WndProc ); } if( hWndFrame == NULLHANDLE ) { DosBeep( 1000, 100 ); char wText[501]; WinQueryWindowText( parent->getHWNDFrame(), 500, wText ); } graphics = new Graphics( WinGetPS( hWndClient ) ); }
static MRESULT EXPENTRY _bootCDOptionsDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { CWDataFolder* thisPtr; FILEDLG fd = { 0 }; /* char text[CCHMAXPATH];*/ char title[CCHMAXPATH]; ULONG rc; THISPTR *tpPtr; switch(msg) { case WM_INITDLG : tpPtr=(THISPTR*)PVOIDFROMMP(mp2); thisPtr=(CWDataFolder*)tpPtr->thisPtr; /* sprintf(text,"tpPtr: %x thisPtr: %x",tpPtr,thisPtr); WinMessageBox( HWND_DESKTOP, hwnd, text,"2", 0UL, MB_OK | MB_ERROR |MB_MOVEABLE); */ WinSetWindowULong(WinWindowFromID(hwnd,IDPB_OK), QWL_USER,(ULONG)thisPtr);//Save object ptr. if(somIsObj(thisPtr)) { WinSetWindowText( WinWindowFromID(hwnd,IDEF_BOOTIMAGE), thisPtr->chrBootImage ); WinSetWindowText( WinWindowFromID(hwnd,IDEF_BOOTCATALOG), thisPtr->chrBootCatalog ); } break; case WM_CLOSE: WinDismissDlg(hwnd,0); return FALSE; case WM_COMMAND: switch(SHORT1FROMMP(mp1)) { case IDPB_OK: /* User pressed the OK button */ thisPtr=(CWDataFolder*)WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_OK),QWL_USER); if(somIsObj(thisPtr)) { WinQueryWindowText(WinWindowFromID(hwnd,IDEF_BOOTIMAGE),sizeof(thisPtr->chrBootImage),thisPtr->chrBootImage); WinQueryWindowText(WinWindowFromID(hwnd,IDEF_BOOTCATALOG),sizeof(thisPtr->chrBootCatalog),thisPtr->chrBootCatalog); } WinDismissDlg(hwnd,DID_OK); return (MRESULT) FALSE; case IDPB_CANCEL: WinDismissDlg(hwnd,0); return FALSE; case IDPB_BROWSE: /* User pressed the browse button */ fd.cbSize = sizeof( fd ); /* It's an centered 'Open'-dialog */ fd.fl = FDS_OPEN_DIALOG|FDS_CENTER; /* Title: "Select boot image" */ getMessage(title,IDSTR_FDLGSEARCHBOOTIMGTITLE,sizeof(title), hDataResource,hwnd); /* Set the title of the file dialog */ fd.pszTitle = title; /* Show all files */ sprintf(fd.szFullFile,"%s","*.*"); if( WinFileDlg( HWND_DESKTOP, hwnd, &fd ) == NULLHANDLE ) { /* WinFileDlg failed */ break; } if( fd.lReturn == DID_OK ) { WinSetWindowText( WinWindowFromID(hwnd,IDEF_BOOTIMAGE), fd.szFullFile ); } break; default: break; } return (MRESULT) TRUE; default: break; } return WinDefDlgProc(hwnd, msg, mp1, mp2); }
//A Dlg procedure if the plugin has selectable settings. MRESULT EXPENTRY CBZPluginSetupDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { short sControlId; PLUGINSHARE *pPluginData; FILEDLG filedlg; HWND hwndDlg; switch (msg) { case WM_INITDLG: { if ((pPluginData = (PLUGINSHARE *) mp2) == NULL) { //Error msg.. WinDismissDlg(hwnd, DID_ERROR); return (MRFROMLONG(FALSE)); } WinSetWindowPtr(hwnd, QWL_USER, pPluginData); // store window words WinSendMsg(WinWindowFromID(hwnd, EFID_IMAGE), EM_SETTEXTLIMIT, (MPARAM) CCHMAXPATH, (MPARAM) 0); WinSetWindowText(WinWindowFromID(hwnd, EFID_IMAGE), pPluginData->szImageFile); /* This is temprary. At the moment only all or no frame control may be drawn */ WinCheckButton(hwnd, CBID_CLOSEENABLED, TRUE); WinCheckButton(hwnd, CBID_MINIMIZEENABLED, TRUE); WinCheckButton(hwnd, CBID_MAXIMIZEENABLED, TRUE); WinCheckButton(hwnd, CBID_RESTOREENABLED, TRUE); WinCheckButton(hwnd, CBID_HIDEENABLED, TRUE); WinEnableWindow(WinWindowFromID(hwnd,CBID_CLOSEENABLED ), FALSE); WinEnableWindow(WinWindowFromID(hwnd, CBID_MINIMIZEENABLED), FALSE); WinEnableWindow(WinWindowFromID(hwnd, CBID_MAXIMIZEENABLED), FALSE); WinEnableWindow(WinWindowFromID(hwnd, CBID_RESTOREENABLED), FALSE); WinEnableWindow(WinWindowFromID(hwnd, CBID_HIDEENABLED), FALSE); } break; case WM_COMMAND: { sControlId = COMMANDMSG(&msg)->cmd; switch (sControlId) { case PBID_IMAGE: { //popup file change dialog! memset(&filedlg, 0, sizeof(FILEDLG)); // init filedlg struct filedlg.cbSize = sizeof(FILEDLG); filedlg.fl = FDS_OPEN_DIALOG; filedlg.pszTitle = "Choose an image"; strcpy(filedlg.szFullFile, "*.*"); if ((hwndDlg = WinFileDlg(HWND_DESKTOP, hwnd, &filedlg)) == NULLHANDLE) { return (FALSE); } if (filedlg.lReturn != DID_OK) // selected one { break; } WinSetWindowText(WinWindowFromID(hwnd, EFID_IMAGE), filedlg.szFullFile); } break; case PBID_OK: { if ((pPluginData = (PLUGINSHARE *) WinQueryWindowPtr(hwnd, QWL_USER)) == NULL) { //error message.. break; } WinQueryWindowText(WinWindowFromID(hwnd, EFID_IMAGE), CCHMAXPATH, pPluginData->szImageFile); //update! WinDismissDlg(hwnd, PBID_OK); } break; case PBID_CANCEL: { //don't update shared Memory! WinDismissDlg(hwnd, PBID_CANCEL); } break; } return ((MPARAM) 0); } break; case WM_CONTROL: { switch (SHORT1FROMMP(mp1)) { } return ((MRESULT) 0); } break; } return (WinDefDlgProc(hwnd, msg, mp1, mp2)); }
/* This procedure handles the author settings page */ MRESULT EXPENTRY authorOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { CWDataFolder* thisPtr; switch(msg) { case WM_INITDLG : WinSetWindowULong(hwnd, QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr. thisPtr=(CWDataFolder*)PVOIDFROMMP(mp2); WinSendMsg(WinWindowFromID(hwnd,IDEF_APPLICATION),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0); WinSetWindowText(WinWindowFromID(hwnd,IDEF_APPLICATION),thisPtr->chrApplication); WinSendMsg(WinWindowFromID(hwnd,IDEF_PUBLISHER),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0); WinSetWindowText(WinWindowFromID(hwnd,IDEF_PUBLISHER),thisPtr->chrPublisher); WinSendMsg(WinWindowFromID(hwnd,IDEF_PREPARER),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0); WinSetWindowText(WinWindowFromID(hwnd,IDEF_PREPARER),thisPtr->chrPreparer); WinSendMsg(WinWindowFromID(hwnd,IDEF_VOLUMENAME),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)32),0); WinSetWindowText(WinWindowFromID(hwnd,IDEF_VOLUMENAME),thisPtr->chrVolumeName); /* Move default buttons on Warp 4 */ cwMoveNotebookButtonsWarp4(hwnd, IDPB_AUTHORHELP, 20); return (MRESULT) TRUE; /* This prevents switching the notebook page behind the open folder */ case WM_WINDOWPOSCHANGED: { MRESULT mr; if(WinQueryFocus(HWND_DESKTOP)!= WinQueryWindow(WinQueryWindow(hwnd, QW_PARENT), QW_PARENT)) { mp2=MPFROMLONG(LONGFROMMP(mp2)|0x80000);/*AWP_ACTIVATE 0x00080000L*/ mr=WinDefDlgProc(hwnd, msg, mp1, mp2); return mr; } break; } case WM_FOCUSCHANGE: { if(!SHORT1FROMMP(mp2)) { if(HWNDFROMMP(mp1)==hwnd) { MRESULT mr; mr=WinDefDlgProc(hwnd, msg, mp1, mp2); WinSendMsg(WinQueryWindow(WinQueryWindow(hwnd, QW_PARENT), QW_PARENT), WM_SETFOCUS, MPFROMHWND(hwnd), (MPARAM)TRUE); return mr; } } break; } case WM_DESTROY: /* The notebook closes and gets destroyed */ /* Set focus to desktop to prevent PM freeze */ WinSetFocus(HWND_DESKTOP, HWND_DESKTOP); /* Let the WPS save the new instance data */ // thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_AUTHORUNDO),QWL_USER); thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER); if(somIsObj(thisPtr)) { WinQueryWindowText( WinWindowFromID(hwnd,IDEF_APPLICATION),sizeof(thisPtr->chrApplication),thisPtr->chrApplication); WinQueryWindowText( WinWindowFromID(hwnd,IDEF_PUBLISHER),sizeof(thisPtr->chrPublisher),thisPtr->chrPublisher); WinQueryWindowText( WinWindowFromID(hwnd,IDEF_PREPARER),sizeof(thisPtr->chrPreparer),thisPtr->chrPreparer); WinQueryWindowText( WinWindowFromID(hwnd,IDEF_VOLUMENAME),sizeof(thisPtr->chrVolumeName),thisPtr->chrVolumeName); thisPtr->wpSaveDeferred(); } /* Setup is done */ return (MRESULT) TRUE; case WM_COMMAND: switch(SHORT1FROMMP(mp1)) { case IDPB_AUTHORUNDO: /* User pressed the UNDO button */ // thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_AUTHORUNDO),QWL_USER); thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER); if(somIsObj(thisPtr)) { WinSetWindowText(WinWindowFromID(hwnd,IDEF_APPLICATION),thisPtr->chrApplication); WinSetWindowText(WinWindowFromID(hwnd,IDEF_PUBLISHER),thisPtr->chrPublisher); WinSetWindowText(WinWindowFromID(hwnd,IDEF_PREPARER),thisPtr->chrPreparer); WinSetWindowText(WinWindowFromID(hwnd,IDEF_VOLUMENAME),thisPtr->chrVolumeName); } break; default: break; } return (MRESULT) TRUE; default: break; } return WinDefDlgProc(hwnd, msg, mp1, mp2); }
static MRESULT EXPENTRY LinkLabelProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 ) { linkData *ld = (linkData *)WinQueryWindowULong( hwnd, QWL_USER ); switch ( msg ) { case WM_PAINT: { FONTMETRICS fm; FATTRS fat; HPS hps; ULONG style; char *text = (char *)malloc( MAXTEXTLEN ); WinQueryWindowText( hwnd, MAXTEXTLEN, text); hps = WinBeginPaint( hwnd , 0L , 0L ); GpiQueryFontMetrics( hps , sizeof( FONTMETRICS ) , &fm ); memset( &fat , 0 , sizeof( fat ) ); fat.usRecordLength = sizeof( FATTRS ); fat.lMatch = fm.lMatch; fat.fsSelection = FATTR_SEL_UNDERSCORE; strcpy( fat.szFacename , fm.szFacename ); GpiDeleteSetId( hps , 1 ); GpiCreateLogFont( hps , 0 , 1 , &fat ); GpiSetCharSet( hps , 1 ); WinQueryWindowRect( hwnd , &ld->textRect ); style = WinQueryWindowULong( hwnd, QWL_STYLE ); style &= DT_LEFT|DT_CENTER|DT_RIGHT|DT_TOP|DT_VCENTER|DT_BOTTOM; WinDrawText( hps, -1, text, &ld->textRect, CLR_BLUE, SYSCLR_DIALOGBACKGROUND, style | DT_ERASERECT | DT_UNDERSCORE ); WinDrawText( hps, -1, text, &ld->textRect, CLR_BLUE, SYSCLR_DIALOGBACKGROUND, style | DT_QUERYEXTENT | DT_UNDERSCORE ); WinEndPaint( hps ); free( text ); } return (MRESULT)FALSE; case WM_MOUSEMOVE: { if ( handPtr != NULLHANDLE ) { POINTL ptl; ptl.x = SHORT1FROMMP( mp1 ); ptl.y = SHORT2FROMMP( mp1 ); if ( WinPtInRect( WinQueryAnchorBlock( hwnd ), &ld->textRect, &ptl) ) { WinSetPointer( HWND_DESKTOP, handPtr ); return (MRESULT)FALSE; } } } break; case WM_BUTTON1CLICK: { PROGDETAILS pd; char *text; POINTL ptl; if ( strcmp( browserExe, "" ) == 0 ) break; ptl.x = SHORT1FROMMP( mp1 ); ptl.y = SHORT2FROMMP( mp1 ); if ( !WinPtInRect( WinQueryAnchorBlock( hwnd ), &ld->textRect, &ptl) ) break; if ( ld->url == NULL ) { text = (char *)malloc( MAXTEXTLEN ); WinQueryWindowText( hwnd, MAXTEXTLEN, text); } else text = strdup( ld->url ); pd.Length = sizeof( PROGDETAILS ); pd.progt.progc = PROG_DEFAULT; pd.progt.fbVisible = SHE_VISIBLE; pd.pszTitle = NULL; pd.pszExecutable = browserExe; pd.pszParameters = NULL; pd.pszStartupDir = ( browserDir[0] == 0 ) ? NULL : browserDir; pd.pszIcon = NULL; pd.pszEnvironment = NULL; pd.swpInitial.fl = SWP_ACTIVATE; pd.swpInitial.cy = 0; pd.swpInitial.cx = 0; pd.swpInitial.y = 0; pd.swpInitial.x = 0; pd.swpInitial.hwndInsertBehind = HWND_TOP; pd.swpInitial.hwnd = NULLHANDLE; pd.swpInitial.ulReserved1 = 0; pd.swpInitial.ulReserved2 = 0; WinStartApp( NULLHANDLE , &pd , text , NULL , 0 ); free( text ); } break; case WM_DESTROY: ld->labelProc( hwnd, msg, mp1, mp2 ); if ( ld->url != NULL ) free( ld->url ); free( ld ); return (MRESULT)FALSE; } return ld->labelProc( hwnd, msg, mp1, mp2 ); }
ULONG HEOptions(HWND hwnd) { HWND hwndDlg; ULONG TextFormat = (ULONG) WinSendMsg(hwndHMLE,HMLM_QUERYTEXTFORMAT,0L,0L); ULONG HanType = (ULONG) WinSendMsg(hwndHMLE,HMLM_QUERYHANTYPE,0L,0L); ULONG ulrc = ( ULONG ) WinSendMsg( hwndHMLE, HMLM_QUERYWRAP, 0, 0 ); //int old_eoltype = TextFormat; //int old_hantype = HanType; BOOL wordWrap = CHAR3FROMMP( ulrc ); BOOL wordProtect = CHAR4FROMMP( ulrc ); int wordWrapSize = SHORT1FROMMR( ulrc ); CHAR size[ 10 ]; hwndDlg = WinLoadDlg(HWND_DESKTOP,hwnd,&WinDefDlgProc,NULLHANDLE,IDD_OPTIONS,NULL); if (TextFormat==HMLE_EOL_CRLF) WinSendMsg(WinWindowFromID(hwndDlg,IDB_TF_CRLF),BM_SETCHECK,MPFROMLONG(1L),0L); else WinSendMsg(WinWindowFromID(hwndDlg,IDB_TF_LF),BM_SETCHECK,MPFROMLONG(1L),0L); if (HanType==HMLE_HAN_KS) WinSendMsg(WinWindowFromID(hwndDlg,IDB_HT_KS),BM_SETCHECK,MPFROMLONG(1L),0L); else WinSendMsg(WinWindowFromID(hwndDlg,IDB_HT_SY),BM_SETCHECK,MPFROMLONG(1L),0L); WinSendMsg( WinWindowFromID( hwndDlg, IDB_WORDWRAP ), BM_SETCHECK, MPFROMLONG( SHORT1FROMMR( wordWrap )), 0 ); _itoa( wordWrapSize, size, 10 ); WinSetWindowText( WinWindowFromID( hwndDlg, IDEF_WORDWRAP_SIZE ), size ); //WinSetFocus(HWND_DESKTOP,hwndDlg); ulrc = WinProcessDlg(hwndDlg); if (ulrc == DID_OK) { TextFormat = (ULONG) WinSendMsg(WinWindowFromID(hwndDlg,IDB_TF_CRLF),BM_QUERYCHECKINDEX,0L,0L); HanType = (ULONG) WinSendMsg(WinWindowFromID(hwndDlg,IDB_HT_KS),BM_QUERYCHECKINDEX,0L,0L); if (TextFormat == 1) { WinSendMsg(hwndHMLE,HMLM_SETTEXTFORMAT,MPFROMLONG(HMLE_EOL_CRLF),0L); WinPostMsg(hwndStatbar,STATBAR_USERM_SETEOLTYPE,MPFROMLONG(HMLE_EOL_CRLF),0L); } else { WinSendMsg(hwndHMLE,HMLM_SETTEXTFORMAT,MPFROMLONG(HMLE_EOL_LF),0L); WinPostMsg(hwndStatbar,STATBAR_USERM_SETEOLTYPE,MPFROMLONG(HMLE_EOL_LF),0L); } if (HanType == 1) { WinSendMsg(hwndHMLE,HMLM_SETHANTYPE,MPFROMLONG(HMLE_HAN_KS),0L); WinPostMsg(hwndStatbar,STATBAR_USERM_SETHANTYPE,MPFROMLONG(HMLE_HAN_KS),0L); } else { WinSendMsg(hwndHMLE,HMLM_SETHANTYPE,MPFROMLONG(HMLE_HAN_SY),0L); WinPostMsg(hwndStatbar,STATBAR_USERM_SETHANTYPE,MPFROMLONG(HMLE_HAN_SY),0L); } wordWrap = ( BOOL )WinSendDlgItemMsg( hwndDlg, IDB_WORDWRAP, BM_QUERYCHECK, 0, 0 ); WinQueryWindowText( WinWindowFromID( hwndDlg, IDEF_WORDWRAP_SIZE ), sizeof( size ), size ); wordWrapSize = atoi( size ); if(( wordWrapSize != 0 ) && ( wordWrapSize < MIN_WORDWRAP_SIZE )) wordWrapSize = MIN_WORDWRAP_SIZE; WinSendMsg( hwndHMLE, HMLM_SETWRAP, MPFROM2SHORT( wordWrap, wordProtect ), MPFROMSHORT( wordWrapSize )); } WinDestroyWindow(hwndDlg); return 0L; }