コード例 #1
0
ファイル: PpcMainWnd.cpp プロジェクト: jiangzhengwenjz/rtoss
BOOL CPpcMainWnd::InitImages()
{
	InitSize();
	BOOL fRet = CMainWnd::InitImages();
	if (fRet) {
		ShowWindow(m_hwndLV, ((CPpcSkin*)m_pSkin)->IsPlaylistVisible() ? SW_SHOW : SW_HIDE);
		ListView_SetBkColor(m_hwndLV, ((CPpcSkin*)m_pSkin)->GetColor2(COLOR2_PLAYLISTBACK));
		ListView_SetTextBkColor(m_hwndLV, ((CPpcSkin*)m_pSkin)->GetColor2(COLOR2_PLAYLISTBACK));
		ListView_SetTextColor(m_hwndLV, ((CPpcSkin*)m_pSkin)->GetColor2(COLOR2_PLAYLISTTEXT));

		m_hFntTitle = (HFONT)SendMessage(m_hWnd, WM_GETFONT, 0, 0);

		InvalidateRect(m_hwndLV, NULL, TRUE);
		UpdateWindow(m_hwndLV);

		// ボリュームスライダーが有効か無効か
		if (m_pSkin->GetImageList(IMAGELIST_VOLSLIDER) && m_pSkin->GetImageList(IMAGELIST_VOLTRACK)) {
			m_nVolumeSliderLeft = VOLSLIDER_LEFT;
			m_nVolumeSliderTop = PPC_VOLSLIDER_TOP;
			m_nVolumeSliderWidth = VOLSLIDER_WIDTH;
			m_nVolumeSliderHeight = VOLSLIDER_HEIGHT;
		}
		else {
			m_nVolumeSliderLeft = 0;
			m_nVolumeSliderTop = 0;
			m_nVolumeSliderWidth = 0;
			m_nVolumeSliderHeight = 0;
		}

		m_nBtnMax = PPC_BTN_MAX;
	}

	return fRet;
}
コード例 #2
0
ファイル: log.cpp プロジェクト: ZhouWeikuan/darkreign2
  //
  // Fill the given window with all the errors
  //
  void ErrorsFill(void *hwnd)
  {
    HWND hlist = HWND(hwnd);

    // Add columns to listview
    LV_COLUMN column;

    column.mask = LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
    column.cx = LOG_COLUMN_WIDTH_TYPESHORT;
    column.pszText = "";
    column.iSubItem = 0;
    ListView_InsertColumn(hlist, 0, &column);
    column.mask = LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
    column.cx = LOG_COLUMN_WIDTH_LABELNAME;
    column.pszText = "Class";
    column.iSubItem = 1;
    ListView_InsertColumn(hlist, 2, &column);
    column.mask = LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
    column.cx = LOG_COLUMN_WIDTH_MESSAGE;
    column.pszText = "Message";
    column.iSubItem = 2;
    ListView_InsertColumn(hlist, 3, &column);

    ListView_SetBkColor(hlist, RGB(0, 0, 0));
    ListView_SetTextBkColor(hlist, RGB(0, 0, 0));
    ListView_SetTextColor(hlist, RGB(191, 191, 0));

    // Change the listviews font
    HFONT hfont;
    LOGFONT logfont;
    Utils::Memset(&logfont, 0x00, sizeof (LOGFONT));
    logfont.lfHeight = -11; 
    logfont.lfWeight = 400; 
    logfont.lfOutPrecision = 3; 
    logfont.lfClipPrecision = 2;
    logfont.lfQuality = 1;
    logfont.lfPitchAndFamily = 42;
    strcpy(logfont.lfFaceName, "Lucida Console"); 
    hfont = CreateFontIndirect(&logfont);
    SendMessage(hlist, WM_SETFONT, (WPARAM) hfont, 0);

    // Add all of the items to the list view control
    U32 i = 0;
    while (i < numErrors)
    {
      LV_ITEM lvi; 
      lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
      lvi.state = 0;
      lvi.stateMask = 0;
      lvi.pszText = LPSTR_TEXTCALLBACK;
      lvi.iImage = 0;
      lvi.iItem = ListView_GetItemCount(hlist);
      lvi.iSubItem = 0;
      lvi.lParam = (LPARAM) &errorItems[i];
      ListView_InsertItem(hlist, &lvi);
      i++;
    }
    numErrors = 0;
  }
コード例 #3
0
ファイル: MainWndProc.cpp プロジェクト: seem-sky/learnserver
void SetFontColor()
{
	CHOOSECOLOR color;
	static COLORREF acrCustClr[16]; 

	memset( &color, 0, sizeof( color ) );
	color.hwndOwner		= g_hMainWnd;
	color.lStructSize	= sizeof( color );
	color.Flags			= CC_FULLOPEN | CC_RGBINIT;
	color.rgbResult		= ListView_GetTextColor( g_hLogMsgWnd );
	color.lpCustColors	= acrCustClr;

	if ( !ChooseColor( &color ) )
		return;

	ListView_SetTextColor( g_hLogMsgWnd, color.rgbResult );

	InvalidateRect( g_hLogMsgWnd, NULL, TRUE );
}
コード例 #4
0
ファイル: cdui.cpp プロジェクト: intellectualheaven/ihpublic
INT_PTR
CALLBACK
HandleCrashDlgProc(
    HWND    hDlg,
    UINT    msg,
    WPARAM  wParam,
    LPARAM  lParam)
/*++

Routine Description:

    Dialog box used to ask user what action he wants to take when an application
    crashes.

Arguments:

    Refer to DialogProc in MSDN

Returns:

    TRUE - Message Handled
    FALSE - Message not handled

--*/
{
    static PROC_DBG_DATA sProcDbgData;

    switch(msg)
    {
        case WM_INITDIALOG:
        {
            //
            // Insert *specific* dialog initialization code here.
            // lParam can contain information required for initialization.
            //

            //
            // Set dialog and application Icon
            //
            HICON hIcon = LoadIcon(ghInstance, MAKEINTRESOURCE(IDI_APP_ICON_SM));
            SendMessage (hDlg, WM_SETICON, (WPARAM)ICON_SMALL, (LPARAM)hIcon);
            hIcon = LoadIcon(ghInstance, MAKEINTRESOURCE(IDI_APP_ICON));
            SendMessage (hDlg, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)hIcon);

            SetWindowText(hDlg, _T("IntellectualHeaven(R) CrashDoctor"));

            //
            // Set list control properties
            //
            HWND hListCtrl;
            hListCtrl = GetDlgItem(hDlg, IDC_LIST_DEBUGGER);
            ListView_SetExtendedListViewStyle(
                                        hListCtrl,
                                        LVS_EX_FULLROWSELECT);

            ListView_SetTextColor(  hListCtrl,
                                    RGB(0, 0, 255));

            LVCOLUMN lvColumn;
            lvColumn.mask = LVCF_TEXT | LVCF_WIDTH;

            lvColumn.cx         = 260;
            lvColumn.pszText    = _T(" Debuggers Available");

            ListView_InsertColumn(  hListCtrl,
                                    0,
                                    &lvColumn);

            CenterDialog(hDlg);

            PPROC_DBG_DATA procDbgData  = (PPROC_DBG_DATA)lParam;

            //
            // Store the PROC_DBG_DATA, it will be needed later
            //
            sProcDbgData = *procDbgData;


            // Find the process given in PROC_DBG_DATA
            DWORD processId = sProcDbgData.processId;

            IHU_PROCESS_INFO            processInfo;
            IHU_PROCESS_LIST        processList;
            IHU_PROCESS_LIST_ITER   processListIter;
            bool                        processFound = false;

            IhuGetProcessList(processList);

            for (   processListIter = processList.begin();
                    processListIter != processList.end();
                    ++processListIter)
            {
                processInfo = *processListIter;
                if (processId == processInfo.mProcessId)
                {
                    processFound = true;
                    break;
                }
            }

            //
            // Set process name and image
            //
            if (processFound)
            {
                SetWindowText(
                        GetDlgItem(hDlg, IDC_EDIT_PROCESS_NAME),
                        processInfo.mBinaryName.c_str());

                hIcon = NULL;

                IhuGetFileIcon(
                            processInfo.mBinaryName,
                            hIcon);

                if (hIcon)
                {
                    SendMessage(
                        GetDlgItem(hDlg, IDC_ICON_PROCESS),
                        STM_SETICON,
                        (WPARAM)hIcon,
                        0);
                }
            }
            else
            {
                SetWindowText(
                        GetDlgItem(hDlg, IDC_EDIT_PROCESS_NAME),
                        _T("<Unknown Process>"));
                //
                // To-Do!!!
                // This should *NEVER* happen. How to handle this?
                //
            }


            //
            // Add debugger list to the list ctrl
            //
            AddDebuggersToListCtrl(
                            hListCtrl);

            return TRUE;
        }
        case WM_COMMAND:
        {
            switch(wParam)
            {
                case IDC_BTN_RECOVER:
                {
                    EndDialog(hDlg, IDC_BTN_RECOVER);
                    return TRUE;
                }
                case IDC_BTN_TERMINATE:
                {
                    EndDialog(hDlg, IDC_BTN_TERMINATE);
                    return TRUE;
                }
                case IDC_BTN_DEBUG:
                {
                    HWND hListCtrl = GetDlgItem(hDlg, IDC_LIST_DEBUGGER);
                    int nSelectedItem = ListView_GetSelectionMark(hListCtrl);

                    if (nSelectedItem >= 0)
                    {
                        TCHAR debugCmdFormat[MAX_PATH] = {0};

                        LVITEM lvItem       = {0};
                        lvItem.mask         = LVIF_TEXT;
                        lvItem.iItem        = nSelectedItem;
                        lvItem.iSubItem     = 0;
                        lvItem.pszText      = debugCmdFormat;
                        lvItem.cchTextMax   = MAX_PATH;

                        if (ListView_GetItem(hListCtrl, &lvItem))
                        {
                            if (_tcslen(debugCmdFormat) > 0)
                            {
                                TCHAR launchDebuggerCmd[MAX_PATH * 2] = {0};
                                _stprintf(  launchDebuggerCmd,
                                            debugCmdFormat,
                                            sProcDbgData.processId,
                                            sProcDbgData.eventHandle);

                                STARTUPINFO         startupInfo;
                                PROCESS_INFORMATION procInfo;

                                ZeroMemory(&startupInfo, sizeof(startupInfo));
                                startupInfo.cb = sizeof(startupInfo);

                                ZeroMemory(&procInfo, sizeof(procInfo));

                                BOOL bResult = CreateProcess(
                                                    NULL,
                                                    launchDebuggerCmd,
                                                    NULL,
                                                    NULL,
                                                    TRUE,
                                                    0,
                                                    NULL,
                                                    NULL,
                                                    &startupInfo,
                                                    &procInfo);


                                if (!bResult)
                                {
                                    cdHandleError(
                                            hDlg,
                                            GetLastError(),
                                            _T("Unable to launch debugger."));
                                }
                                else
                                {
                                    ShowWindow(hDlg, SW_HIDE);
                                    if (sProcDbgData.eventHandle)
                                    {
                                        //
                                        // wait till either the actual debugger dies or it sets the event
                                        // This wait is necessary because if we exit before the debugger
                                        // got attached to the target. The target dies because it thinks
                                        // we are the debugger.
                                        //
                                        HANDLE waitHandle[2];
                                        waitHandle[0] = sProcDbgData.eventHandle;
                                        waitHandle[1] = procInfo.hProcess;
                                        WaitForMultipleObjects(2, (const HANDLE *)&waitHandle, FALSE, INFINITE);
                                    }
                                    else
                                    {
                                        //
                                        // wait till either the actual debugger dies or 10 seconds are over
                                        // This wait is necessary because if we exit before the debugger
                                        // got attached to the target. The target dies because it thinks
                                        // we are the debugger.
                                        //
                                        WaitForSingleObject(procInfo.hProcess, 10000);
                                    }

                                    EndDialog(hDlg, IDC_BTN_DEBUG);
                                    return FALSE;
                                }
                            }
                        }
                    }

                    break;
                }
                case IDC_BTN_ADD_DEBUGGER:
                {
                    TCHAR tempFileName[MAX_PATH];
                    tempFileName[0] = 0;

                    OPENFILENAME ofn = {0};

                    ofn.lStructSize     = OPENFILENAME_SIZE_VERSION_400;
                    ofn.hwndOwner       = hDlg;
                    ofn.hInstance       = ghInstance;
                    ofn.lpstrFilter     = _T("Executable (*.exe)\0*.exe\0\0");
                    ofn.lpstrFile       = tempFileName;
                    ofn.nMaxFile        = MAX_PATH;
                    ofn.lpstrTitle      = _T("Select a debugger");
                    ofn.Flags           = OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_PATHMUSTEXIST;

                    if (GetOpenFileName(&ofn))
                    {
                        DEBUGGER_INFO debuggerInfo;
                        debuggerInfo.debuggerPath   = ofn.lpstrFile;
                        debuggerInfo.cmdLine        = _T("-p %ld -e %ld");

                        DialogBoxParam(
                                    ghInstance,
                                    MAKEINTRESOURCE(IDD_DIALOG_ADD_DEBUGGER),
                                    hDlg,
                                    (DLGPROC)DebuggerDataDlgProc,
                                    (LPARAM)&debuggerInfo);

                        tstring debuggerCmd = _T("\"") + debuggerInfo.debuggerPath + _T("\" ") + debuggerInfo.cmdLine;
                        AddDebuggerToRegistry(hDlg, debuggerCmd);
                        AddDebuggersToListCtrl(GetDlgItem(hDlg, IDC_LIST_DEBUGGER));
                    }

                    break;
                }
                case IDC_BTN_MODIFY_DEBUGGER:
                {
                    HWND hListCtrl = GetDlgItem(hDlg, IDC_LIST_DEBUGGER);
                    int nSelectedItem = ListView_GetSelectionMark(hListCtrl);

                    if (nSelectedItem >= 0)
                    {
                        TCHAR debugCmdLine[MAX_PATH] = {0};

                        LVITEM lvItem       = {0};
                        lvItem.mask         = LVIF_TEXT | LVIF_PARAM;
                        lvItem.iItem        = nSelectedItem;
                        lvItem.iSubItem     = 0;
                        lvItem.pszText      = debugCmdLine;
                        lvItem.cchTextMax   = MAX_PATH;

                        if (ListView_GetItem(hListCtrl, &lvItem))
                        {
                            LPARAM regIndex = lvItem.lParam;

                            if (_tcslen(debugCmdLine) > 0)
                            {
                                DEBUGGER_INFO debuggerInfo;
                                debuggerInfo.cmdLine = debugCmdLine;

                                DialogBoxParam(
                                            ghInstance,
                                            MAKEINTRESOURCE(IDD_DIALOG_MODIFY_DEBUGGER),
                                            hDlg,
                                            (DLGPROC)DebuggerDataDlgProc,
                                            (LPARAM)&debuggerInfo);

                                if (_tcscmp(debugCmdLine, debuggerInfo.cmdLine.c_str()) != 0)
                                {
                                    //
                                    // Modify the particular registry entry
                                    //
                                    TCHAR valueName[32];
                                    _stprintf(valueName, _T("Debugger%02d"), regIndex);

                                    int nReturnValue        = 0;
                                    HKEY hAppDebuggerKey    = NULL;


                                    nReturnValue = RegOpenKey(
                                                            HKEY_LOCAL_MACHINE,
                                                            REG_APP_ROOT REG_APP_DEBUGGERS,
                                                            &hAppDebuggerKey);

                                    if (hAppDebuggerKey)
                                    {
                                        if (RegSetValueEx(
                                                    hAppDebuggerKey,
                                                    valueName,
                                                    0,
                                                    REG_SZ,
                                                    (LPBYTE)debuggerInfo.cmdLine.c_str(),
                                                    (DWORD)(debuggerInfo.cmdLine.length() * sizeof(TCHAR))) != ERROR_SUCCESS)
                                        {
                                            cdHandleError(
                                                    hDlg,
                                                    GetLastError(),
                                                    _T("Modify Debugger Failed. Unable to update the registry key."));
                                        }

                                        RegCloseKey(hAppDebuggerKey);

                                        AddDebuggersToListCtrl(GetDlgItem(hDlg, IDC_LIST_DEBUGGER));
                                    }
                                    else
                                    {
                                        cdHandleError(
                                                    hDlg,
                                                    GetLastError(),
                                                    _T("Modify Debugger Failed. Unable to open required registry key."));

                                    }
                                }
                            }
                        }
                    }

                    break;
                }
                case IDC_BTN_DELETE_DEBUGGER:
                {
                    HWND hListCtrl = GetDlgItem(hDlg, IDC_LIST_DEBUGGER);
                    int nSelectedItem = ListView_GetSelectionMark(hListCtrl);

                    if (nSelectedItem >= 0)
                    {
                        TCHAR debugCmdLine[MAX_PATH] = {0};

                        LVITEM lvItem       = {0};
                        lvItem.mask         = LVIF_TEXT | LVIF_PARAM;
                        lvItem.iItem        = nSelectedItem;
                        lvItem.iSubItem     = 0;
                        lvItem.pszText      = debugCmdLine;
                        lvItem.cchTextMax   = MAX_PATH;

                        if (ListView_GetItem(hListCtrl, &lvItem))
                        {
                            LPARAM regIndex = lvItem.lParam;

                            //
                            // Modify the particular registry entry
                            //
                            TCHAR valueName[32];
                            _stprintf(valueName, _T("Debugger%02d"), regIndex);

                            int nReturnValue        = 0;
                            HKEY hAppDebuggerKey    = NULL;


                            nReturnValue = RegOpenKey(
                                                    HKEY_LOCAL_MACHINE,
                                                    REG_APP_ROOT REG_APP_DEBUGGERS,
                                                    &hAppDebuggerKey);

                            if (hAppDebuggerKey)
                            {
                                if (RegDeleteValue(
                                            hAppDebuggerKey,
                                            valueName) != ERROR_SUCCESS)
                                {
                                    cdHandleError(
                                            hDlg,
                                            GetLastError(),
                                            _T("Delete Debugger Failed. Unable to delete the registry key."));
                                }

                                RegCloseKey(hAppDebuggerKey);

                                AddDebuggersToListCtrl(GetDlgItem(hDlg, IDC_LIST_DEBUGGER));
                            }
                            else
                            {
                                cdHandleError(
                                            hDlg,
                                            GetLastError(),
                                            _T("Delete Debugger Failed. Unable to open required registry key."));

                            }
                        }
                    }

                    break;
                }
                //
                // Don't allow closing from the title bar button.
                //
                /*
                case IDCANCEL:
                {
                    EndDialog(hDlg, IDCANCEL);
                    return TRUE;
                }
                */
            }

            break;
        }
        case WM_CTLCOLORSTATIC:
        {
            HDC hdc = (HDC)wParam;
            HWND hwndCtl = (HWND)lParam;

            if (hwndCtl == GetDlgItem(hDlg, IDC_EDIT_PROCESS_NAME))
            {
                if (SetTextColor(hdc, RGB(255, 0, 0)) == CLR_INVALID)
                {
                    cdHandleError(hDlg, GetLastError(), _T("Failed to set control color"));
                    break;
                }
                SetBkMode(hdc, TRANSPARENT);
                SetBkColor(hdc, GetSysColor(COLOR_WINDOW));
                SelectObject(hdc, GetSysColorBrush(COLOR_WINDOW));
                return TRUE;
            }

            break;
        }
        case WM_DESTROY:
        {
            return TRUE;
        }
        case WM_CLOSE:
        {
            break;
        }
    }

    //
    // Not handled by us
    //
    return FALSE;
}
コード例 #5
0
ファイル: mailread.c プロジェクト: Koveras/Meridian59
BOOL CALLBACK ReadMailDialogProc(HWND hDlg, UINT message, UINT wParam, LONG lParam)
{
   static HWND hEdit, hList;
   static int mail_index;  /* Number of currently displayed message, -1 if none */
   MailHeader *header;
   int index, msg_num, count;
   char str[MAX_HEADERLINE], msg[MAXMAIL];
   MINMAXINFO *lpmmi;
   LV_COLUMN lvcol;
   LV_ITEM lvitem;
   LV_HITTESTINFO lvhit;
   NM_LISTVIEW *nm;

   switch (message)
   {
   case WM_INITDIALOG:
      CenterWindow(hDlg, cinfo->hMain);
      hReadMailDlg = hDlg;

      hEdit = GetDlgItem(hDlg, IDC_MAILEDIT);
      hList = GetDlgItem(hDlg, IDC_MAILLIST);
      SendMessage(hDlg, BK_SETDLGFONTS, 0, 0);

      ListView_SetExtendedListViewStyleEx(hList, LVS_EX_FULLROWSELECT,
                                          LVS_EX_FULLROWSELECT);

      /* Store dialog rectangle in case of resize */
      GetWindowRect(hDlg, &dlg_rect);

      // Add column headings
      lvcol.mask = LVCF_TEXT | LVCF_WIDTH;
      lvcol.pszText = GetString(hInst, IDS_MHEADER1);
      lvcol.cx      = 25;
      ListView_InsertColumn(hList, 0, &lvcol);
      lvcol.pszText = GetString(hInst, IDS_MHEADER2);
      lvcol.cx      = 80;
      ListView_InsertColumn(hList, 1, &lvcol);
      lvcol.pszText = GetString(hInst, IDS_MHEADER3);
      lvcol.cx      = 150;
      ListView_InsertColumn(hList, 2, &lvcol);
      lvcol.pszText = GetString(hInst, IDS_MHEADER4);
      lvcol.cx      = 135;
      ListView_InsertColumn(hList, 3, &lvcol);

      mail_index = -1;

      SetFocus(hReadMailDlg);

      MailGetMessageList();
      RequestReadMail();
      return TRUE;

   case WM_SIZE:
      ResizeDialog(hDlg, &dlg_rect, mailread_controls);
      return TRUE;      

   case WM_GETMINMAXINFO:
      lpmmi = (MINMAXINFO *) lParam;
      lpmmi->ptMinTrackSize.x = 200;
      lpmmi->ptMinTrackSize.y = 300;
      return 0;

   case WM_ACTIVATE:
      if (wParam == 0)
	 *cinfo->hCurrentDlg = NULL;
      else *cinfo->hCurrentDlg = hDlg;
      return TRUE;
      
   case BK_SETDLGFONTS:
      SetWindowFont(hEdit, GetFont(FONT_MAIL), TRUE);
      SetWindowFont(hList, GetFont(FONT_MAIL), TRUE);
      return TRUE;
      
   case BK_SETDLGCOLORS:
      ListView_SetTextColor(hList, GetColor(COLOR_LISTFGD));
      ListView_SetBkColor(hList, GetColor(COLOR_LISTBGD));
      InvalidateRect(hDlg, NULL, TRUE);
      return TRUE;

   case EN_SETFOCUS:
      /* By default, whole message becomes selected for some reason */
      Edit_SetSel(hEdit, -1, 0);
      break;
      
   case BK_NEWMAIL: /* wParam = message number, lParam = message header string */
      msg_num = wParam;
      header = (MailHeader *) lParam;

      // Add message to list view
      sprintf(str, "%d", msg_num);
      lvitem.mask = LVIF_TEXT | LVIF_PARAM;
      lvitem.iItem = 0;
      lvitem.iSubItem = 0;
      lvitem.pszText = str;
      lvitem.lParam = msg_num;
      ListView_InsertItem(hList, &lvitem);

      // Add subitems
      lvitem.mask = LVIF_TEXT;
      lvitem.iSubItem = 1;
      lvitem.pszText = header->sender;
      ListView_SetItem(hList, &lvitem);
      lvitem.iSubItem = 2;
      lvitem.pszText = header->subject;
      ListView_SetItem(hList, &lvitem);
      lvitem.iSubItem = 3;
      lvitem.pszText = header->date;
      ListView_SetItem(hList, &lvitem);

      // Erase message in status area
      SetDlgItemText(hDlg, IDC_MAILINFO, "");
      return TRUE;
   
   case BK_NONEWMAIL:
      SetDlgItemText(hDlg, IDC_MAILINFO, GetString(hInst, IDS_NONEWMAIL));
      return TRUE;

      HANDLE_MSG(hDlg, WM_CTLCOLOREDIT, MailCtlColor);
      HANDLE_MSG(hDlg, WM_CTLCOLORLISTBOX, MailCtlColor);
      HANDLE_MSG(hDlg, WM_CTLCOLORSTATIC, MailCtlColor);
      HANDLE_MSG(hDlg, WM_CTLCOLORDLG, MailCtlColor);

      HANDLE_MSG(hDlg, WM_INITMENUPOPUP, InitMenuPopupHandler);
      
   case WM_CLOSE:
      SendMessage(hDlg, WM_COMMAND, IDCANCEL, 0);
      return TRUE;

   case WM_DESTROY:
      hReadMailDlg = NULL;
      if (exiting)
	 PostMessage(cinfo->hMain, BK_MODULEUNLOAD, 0, MODULE_ID);
      return TRUE;

   case WM_NOTIFY:
      if (wParam != IDC_MAILLIST)
	 return TRUE;

      nm = (NM_LISTVIEW *) lParam;

      switch (nm->hdr.code)
      {
      case NM_CLICK:
	 // If you click on an item, select it--why doesn't control work this way by default?
	 GetCursorPos(&lvhit.pt);
	 ScreenToClient(hList, &lvhit.pt);
	 lvhit.pt.x = 10;
	 index = ListView_HitTest(hList, &lvhit);

	 if (index == -1)
	    break;

	 ListView_SetItemState(hList, index, 
			       LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
	 break;

      case LVN_ITEMCHANGED:
	 // New item selected; get its message number
	 lvitem.mask = LVIF_STATE | LVIF_PARAM;
	 lvitem.stateMask = LVIS_SELECTED;
	 lvitem.iItem = nm->iItem;
	 lvitem.iSubItem = 0;
	 ListView_GetItem(hList, &lvitem);

	 if (!(lvitem.state & LVIS_SELECTED))
	    break;

	 msg_num = lvitem.lParam;
	 if (msg_num == mail_index)
	    break;
	 
	 if (MailLoadMessage(msg_num, MAXMAIL, msg) == False)
	 {
	    ClientError(hInst, hReadMailDlg, IDS_CANTLOADMSG);
	    break;
	 }

	 mail_index = msg_num;
	 Edit_SetText(hEdit, msg);
	 break;
      }
      return TRUE;

   case WM_COMMAND:
      UserDidSomething();

      switch(GET_WM_COMMAND_ID(wParam, lParam))
      {
      case IDC_DELETEMSG:
	 if (!ListViewGetCurrentData(hList, &index, &msg_num))
	    return TRUE;
	 
	 if (MailDeleteMessage(msg_num) == True)
	 {
	    /* Display new current message, if any */
	    Edit_SetText(hEdit, "");
	    ListView_DeleteItem(hList, index);

	    count = ListView_GetItemCount(hList);
	    if (count == 0)
	       return TRUE;

	    index = min(index, count - 1);  // in case last message deleted
	    ListView_SetItemState(hList, index, LVIS_SELECTED, LVIS_SELECTED);
	 }
	 return TRUE;

      case IDC_RESCAN:
	 SetDlgItemText(hDlg, IDC_MAILINFO, GetString(hInst, IDS_GETTINGMSGS));
	 RequestReadMail();
	 return TRUE;

      case IDC_SEND:
	 UserSendMail();
	 return TRUE;

      case IDC_REPLY:
      case IDC_REPLYALL:
	 /* Find message number for currently selected message */
	 if (!ListViewGetCurrentData(hList, &index, &msg_num))
	    return TRUE;

	 UserMailReply(msg_num, (Bool) (GET_WM_COMMAND_ID(wParam, lParam) == IDC_REPLYALL));
	 return TRUE;

      case IDCANCEL:
	 /* Note:  This code is also used by the WM_CLOSE message */
	 MailDeleteMessageList();
	 DestroyWindow(hDlg);
	 return TRUE;
      }
      break;
   }
   return FALSE;
}
コード例 #6
0
static INT_PTR CALLBACK ConsoleDlgProc(HWND hwndDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message) {
	case WM_INITDIALOG:
	{
		TCHAR title[MAX_PATH];
		TCHAR name[MAX_PATH] = {0};
		TCHAR path[MAX_PATH] = {0};

		hTabs = GetDlgItem(hwndDlg, IDC_TABS);

		//TabCtrl_SetMinTabWidth(hTabs, 100);

		// restore position
		Utils_RestoreWindowPositionEx(hwndDlg,RWPF_HIDDEN,NULL,"Console","Console");

		CallService(MS_DB_GETPROFILENAMET,(WPARAM)SIZEOF(name),(LPARAM)name);

		CallService(MS_DB_GETPROFILEPATHT,(WPARAM)SIZEOF(path),(LPARAM)path);

		mir_sntprintf(title, SIZEOF(title), _T("%s - %s\\%s"), TranslateT("Miranda Console"), path, name);

		SetWindowText(hwndDlg, title);
		SendMessage(hwndDlg,WM_SETICON,ICON_BIG,(LPARAM)hIcons[0]);

		hwndConsole = hwndDlg;
		SendMessage(hwndDlg, HM_ADD, 0, 0);
		PostMessage(hwndDlg, WM_SIZE, 0, 0);
		break;
	}
	case HM_DUMP:
	{
		// lParam = DUMPMSG
		int idx;
		LOGWIN *lw;
		LOGWIN lw2;
		DUMPMSG *dumpMsg = (DUMPMSG*)lParam;

		if (!pActive) {
			mir_free(dumpMsg);
			break;
		}

		if (!gSingleMode)
		{
			lw2.Module = dumpMsg->szModule;
			if (!List_GetIndex(&lModules, &lw2, &idx))
				SendMessage(hwndDlg, HM_ADD, (WPARAM)idx, (LPARAM)dumpMsg->szModule);

			lw = (LOGWIN*)lModules.items[idx];
		}
		else
			lw = pActive;

		if (lw->hwnd)
			SendMessage(lw->hwnd, HM_DUMP, wParam, lParam);
		else
			PostMessage(hwndDlg, HM_DUMP, wParam, lParam); // loop msg until window will be ready

		return TRUE;
	}
	case HM_ADD:
	{
		// wParam = index, lParam = module name
		LOGWIN *lw;
		COLORREF col;
		TCITEM tci = {0};
		int idx = (int)wParam;
		char *str = (char*)lParam;

		if (!str) str = ""; // startup window

		lw = (LOGWIN*)mir_calloc( sizeof(LOGWIN));
		lw->Module = (char*)mir_strdup(str);
		List_Insert(&lModules, lw, idx);

		if (!gSingleMode && lParam)
		{
			tci.mask = TCIF_PARAM | TCIF_TEXT;
			tci.lParam = (LPARAM)lw;

			tci.pszText = mir_a2u(lw->Module);
			idx = TabCtrl_InsertItem(hTabs, tabCount, &tci);
			mir_free(tci.pszText);

			tabCount++;
		}

		GetClientRect(hTabs, &rcTabs);
		TabCtrl_AdjustRect(hTabs, FALSE, &rcTabs);

		CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_LOG), hwndDlg, LogDlgProc, (LPARAM)lw);
		ShowWindow(lw->hwnd, (tabCount > 1)?SW_HIDE:SW_SHOWNOACTIVATE);

		if (pActive)
		{
			col = ListView_GetBkColor(pActive->hList);
			ListView_SetBkColor(lw->hList, col);
			ListView_SetTextBkColor(lw->hList, col);

			col = ListView_GetTextColor(pActive->hList);
			ListView_SetTextColor(lw->hList, col);

			if (hfLogFont)
				SendMessage(lw->hList, WM_SETFONT, (WPARAM)hfLogFont, TRUE);
		}

		// hide startup window
		if (tabCount == 1)
		{
			ShowWindow(pActive->hwnd, SW_HIDE);
			PostMessage(pActive->hwnd, WM_CLOSE, 0, 0);
			pActive = lw;
		}

		if (!pActive)
			pActive = lw;

		return TRUE;
	}
	case HM_REMOVE:
	{
		// lParam = LOGWIN
		LOGWIN *lw = (LOGWIN*)lParam;

		if (!lw) break;

		if (lw == pActive)
		{
			int tab = TabCtrl_GetCurSel(hTabs);
			if (tab >= 0)
			{
				TCITEM tci={0};

				TabCtrl_DeleteItem(hTabs, tab);
				tabCount--;
				if (tabCount)
				{
					tab--;
					if (tab < 0 ) tab = 0;
					TabCtrl_SetCurSel(hTabs, tab);

					tci.mask = TCIF_PARAM;
					TabCtrl_GetItem(hTabs, tab, &tci);
					pActive = (LOGWIN*)tci.lParam;
					SendMessage(pActive->hwnd, WM_SIZE, 0, 0);
					ScrollDown(pActive);
					ShowWindow(pActive->hwnd, SW_SHOWNOACTIVATE);
					SetFocus(pActive->hList);
				}
				else
					pActive = NULL;
			}
		}

		List_RemovePtr(&lModules, lw);
		mir_free(lw->Module);
		mir_free(lw);
		return TRUE;
	}
	case HM_SETFONT:
	{
		// wParam = font, lParam = font color
		int i;
		LOGWIN *lw;
		for ( i = 0; i < lModules.realCount; i++ )
		{
			lw = (LOGWIN*)lModules.items[i];
			ListView_SetTextColor(lw->hList, (COLORREF)lParam);
			if (wParam)
				SendMessage(lw->hList, WM_SETFONT, wParam, TRUE);
		}
		return TRUE;
	}
	case HM_SETCOLOR:
	{
		// wParam = font, lParam = background color
		int i;
		LOGWIN *lw;
		for ( i = 0; i < lModules.realCount; i++ )
		{
			lw = (LOGWIN*)lModules.items[i];
			ListView_SetBkColor(lw->hList, (COLORREF)lParam);
			ListView_SetTextBkColor(lw->hList, (COLORREF)lParam);
			if (wParam)
				SendMessage(lw->hList, WM_SETFONT, wParam, TRUE);
		}
		return TRUE;
	}
	case HM_PAUSEALL:
	{
		// lParam = 1 to pause, 0 to start
		int i;
		LOGWIN *lw;
		for ( i = 0; i < lModules.realCount; i++ )
		{
			lw = (LOGWIN*)lModules.items[i];
			if (lw->Paused != (int)lParam)
				SendMessage(lw->hwnd, WM_COMMAND, IDC_PAUSE, 0);
		}
		return TRUE;
	}
	case HM_RESTART:
	{
		if (pActive)
		{
			pActive = NULL;
			PostMessage(hwndDlg, HM_RESTART, 0, 0);
			return TRUE;
		}
		// close all tabs
		if (!lParam)
		{
			LOGWIN *lw;
			TabCtrl_DeleteAllItems(hTabs);
			while ( lModules.realCount )
			{
				lw = (LOGWIN*)lModules.items[0];
				SendMessage(lw->hwnd, WM_CLOSE, 0, 0);
			}
			tabCount = 0;
			PostMessage(hwndDlg, HM_RESTART, 0, 1);
			return TRUE;
		}

		LoadSettings();
		SendMessage(hwndDlg, HM_ADD, 0, 0);
		PostMessage(hwndDlg, WM_SIZE, 0, 0);
		return TRUE;
	}
 	case WM_SETFOCUS:
		if (pActive) {
			SetFocus(pActive->hList);
		}
		return TRUE;
	case WM_NOTIFY:
		switch(wParam) {
		case IDC_TABS:
			{
				LPNMHDR lpnmhdr = (LPNMHDR)lParam;
				if (lpnmhdr->code == TCN_SELCHANGE)
				{
					int newTab = TabCtrl_GetCurSel(hTabs);
					if (newTab >= 0 )
					{
						TCITEM tci={0};
						HWND hOld = pActive->hwnd;

						tci.mask = TCIF_PARAM;

						if (!TabCtrl_GetItem(hTabs, newTab, &tci)) break;

						pActive = (LOGWIN*)tci.lParam;

						SendMessage(pActive->hwnd, WM_SIZE, 0, 0);
						ScrollDown(pActive);
						ShowWindow(hOld, SW_HIDE);
						ShowWindow(pActive->hwnd, SW_SHOWNOACTIVATE);
						SetFocus(pActive->hList);
					} else
						SendMessage(pActive->hwnd, WM_SIZE, 0, 0);
				}
				break;
			}
		}
		break;
	case WM_SIZE:
	{
		UTILRESIZEDIALOG urd={0};
		urd.cbSize=sizeof(urd);
		urd.hInstance=hInst;
		urd.hwndDlg=hwndDlg;
		urd.lpTemplate=MAKEINTRESOURCEA(IDD_CONSOLE);
		urd.pfnResizer=ConsoleResize;
		CallService(MS_UTILS_RESIZEDIALOG,0,(LPARAM)&urd);

		GetClientRect(hTabs, &rcTabs);
		TabCtrl_AdjustRect(hTabs, FALSE, &rcTabs);

		if ( pActive )
			SendMessage(pActive->hwnd, WM_SIZE, 0, 0);
		break;
	}
	case WM_GETMINMAXINFO:
	{
		MINMAXINFO *mmi=(MINMAXINFO*)lParam;
		mmi->ptMinTrackSize.x=400;
		mmi->ptMinTrackSize.y=200;
		break;
	}
	case WM_CLOSE:
		if ( lParam != 1 ) {
			Utils_SaveWindowPosition(hwndDlg,NULL,"Console","Console");
			ShowConsole(0);
			return TRUE;
		} else
			DestroyWindow(hwndDlg);
		break;
	case WM_DESTROY:
		pActive = NULL;
		if (hfLogFont) DeleteObject(hfLogFont);
		PostQuitMessage(0);
		break;
	}

	return FALSE;
}
コード例 #7
0
ファイル: picker.cpp プロジェクト: crazii/mameui
// Re/initialize the ListControl Columns
static void Picker_InternalResetColumnDisplay(HWND hWnd, BOOL bFirstTime)
{
	LV_COLUMN   lvc;
	int         i = 0;
	int         nColumn = 0;
	int         *widths;
	int         *order;
	int         *shown;
	//int shown_columns;
	LVCOLUMN col;
	struct PickerInfo *pPickerInfo;
	HRESULT res = 0;
	BOOL b_res = 0;

	pPickerInfo = GetPickerInfo(hWnd);

	widths = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*widths));
	order = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*order));
	shown = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*shown));
	if (!widths || !order || !shown)
		goto done;

	memset(widths, 0, pPickerInfo->nColumnCount * sizeof(*widths));
	memset(order, 0, pPickerInfo->nColumnCount * sizeof(*order));
	memset(shown, 0, pPickerInfo->nColumnCount * sizeof(*shown));
	pPickerInfo->pCallbacks->pfnGetColumnWidths(widths);
	pPickerInfo->pCallbacks->pfnGetColumnOrder(order);
	pPickerInfo->pCallbacks->pfnGetColumnShown(shown);

	if (!bFirstTime)
	{
		DWORD style = GetWindowLong(hWnd, GWL_STYLE);

		// switch the list view to LVS_REPORT style so column widths reported correctly
		SetWindowLong(hWnd, GWL_STYLE, (GetWindowLong(hWnd, GWL_STYLE) & ~LVS_TYPEMASK) | LVS_REPORT);

		// Retrieve each of the column widths
		i = 0;
		memset(&col, 0, sizeof(col));
		col.mask = LVCF_WIDTH;
		while(ListView_GetColumn(hWnd, 0, &col))
		{
			nColumn = Picker_GetRealColumnFromViewColumn(hWnd, i++);
			widths[nColumn] = col.cx;
			b_res = ListView_DeleteColumn(hWnd, 0);
		}

		pPickerInfo->pCallbacks->pfnSetColumnWidths(widths);

		// restore old style
		SetWindowLong(hWnd, GWL_STYLE, style);
	}

	nColumn = 0;
	for (i = 0; i < pPickerInfo->nColumnCount; i++)
	{
		if (shown[order[i]])
		{
			lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM | LVCF_TEXT;
			lvc.pszText = (LPTSTR) pPickerInfo->ppszColumnNames[order[i]];
			lvc.iSubItem = nColumn;
			lvc.cx = widths[order[i]];
			lvc.fmt = LVCFMT_LEFT;
			if (lvc.pszText[0] > 0) // column name cannot be blank
			{
				res = ListView_InsertColumn(hWnd, nColumn, &lvc);
				pPickerInfo->pnColumnsOrder[nColumn] = order[i];
				//dprintf("Visible column %d: Logical column %d; Width=%d\n", nColumn, order[i], widths[order[i]]);
				nColumn++;
			}
		}
	}

	//shown_columns = nColumn;

	/* Fill this in so we can still sort on columns NOT shown */
	for (i = 0; i < pPickerInfo->nColumnCount && nColumn < pPickerInfo->nColumnCount; i++)
	{
		if (!shown[order[i]])
		{
			pPickerInfo->pnColumnsOrder[nColumn] = order[i];
			nColumn++;
		}
	}

	if (GetListFontColor() == RGB(255, 255, 255))
		b_res = ListView_SetTextColor(hWnd, RGB(240, 240, 240));
	else
		b_res = ListView_SetTextColor(hWnd, GetListFontColor());

done:
	if (widths)
		free(widths);
	if (order)
		free(order);
	if (shown)
		free(shown);
	res++;
	b_res++;
}
コード例 #8
0
			void ListView::SetTextColor(const uint color) const
			{
				ListView_SetTextColor( control, color );
			}
コード例 #9
0
ファイル: mhmenu.c プロジェクト: yzh/yzhack
void SetMenuListType(HWND hWnd, int how)
{
	PNHMenuWindow data;
	RECT rt;
	DWORD dwStyles;
	char buf[BUFSZ];
	TCHAR wbuf[BUFSZ];
	int nItem;
	int i;
	HWND control;
	LVCOLUMN lvcol;
	LRESULT fnt;
	SIZE wnd_size;

	data = (PNHMenuWindow)GetWindowLong(hWnd, GWL_USERDATA);
	if( data->type != MENU_TYPE_MENU ) return;

	data->how = how;

	switch(how) {
	case PICK_NONE: 
		dwStyles = WS_VISIBLE | WS_TABSTOP | WS_BORDER | WS_CHILD 
			| WS_VSCROLL | WS_HSCROLL | LVS_REPORT
			| LVS_OWNERDRAWFIXED | LVS_SINGLESEL; 
		break;
	case PICK_ONE: 
		dwStyles = WS_VISIBLE | WS_TABSTOP | WS_BORDER | WS_CHILD 
			| WS_VSCROLL | WS_HSCROLL | LVS_REPORT
			| LVS_OWNERDRAWFIXED | LVS_SINGLESEL; 
		break;
	case PICK_ANY: 
		dwStyles = WS_VISIBLE | WS_TABSTOP | WS_BORDER | WS_CHILD 
			| WS_VSCROLL | WS_HSCROLL | LVS_REPORT
			| LVS_OWNERDRAWFIXED | LVS_SINGLESEL; 
		break;
	default: panic("how should be one of PICK_NONE, PICK_ONE or PICK_ANY");
	};
	if( strlen(data->menu.prompt)==0 ) {
		dwStyles |= LVS_NOCOLUMNHEADER ;
	}

	GetWindowRect(GetDlgItem(hWnd, IDC_MENU_LIST), &rt);
	DestroyWindow(GetDlgItem(hWnd, IDC_MENU_LIST));
	control = CreateWindow(WC_LISTVIEW, NULL, 
		dwStyles,
		rt.left,
		rt.top,
		rt.right - rt.left,
		rt.bottom - rt.top,
		hWnd,
		(HMENU)IDC_MENU_LIST,
		GetNHApp()->hApp,
		NULL );
	if( !control ) panic( "cannot create menu control" );
	
	/* install the hook for the control window procedure */
	wndProcListViewOrig = (WNDPROC)GetWindowLong(control, GWL_WNDPROC);
	SetWindowLong(control, GWL_WNDPROC, (LONG)NHMenuListWndProc);

	/* set control font */
	fnt = SendMessage(hWnd, WM_GETFONT, (WPARAM)0, (LPARAM)0);
	SendMessage(control, WM_SETFONT, (WPARAM)fnt, (LPARAM)0);

	/* set control colors */
	ListView_SetBkColor(control, mswin_get_color(NHW_MENU, MSWIN_COLOR_BG));
	ListView_SetTextBkColor(control, mswin_get_color(NHW_MENU, MSWIN_COLOR_BG));
	ListView_SetTextColor(control, mswin_get_color(NHW_MENU, MSWIN_COLOR_FG));

	/* add column to the list view */
	mswin_menu_window_size(hWnd, &wnd_size);

	ZeroMemory(&lvcol, sizeof(lvcol));
	lvcol.mask = LVCF_WIDTH | LVCF_TEXT;
	lvcol.cx = max( wnd_size.cx, GetSystemMetrics(SM_CXSCREEN));
	lvcol.pszText = NH_A2W(data->menu.prompt, wbuf, BUFSZ);
	ListView_InsertColumn(control, 0, &lvcol);

	/* add items to the list view */
	for(i=0; i<data->menu.size; i++ ) {
		LVITEM lvitem;
		ZeroMemory( &lvitem, sizeof(lvitem) );
		sprintf(buf, "%c - %s", max(data->menu.items[i].accelerator, ' '), data->menu.items[i].str );

		lvitem.mask = LVIF_PARAM | LVIF_STATE | LVIF_TEXT;
		lvitem.iItem = i;
		lvitem.iSubItem = 0;
		lvitem.state = data->menu.items[i].presel? LVIS_SELECTED : 0;
		lvitem.pszText = NH_A2W(buf, wbuf, BUFSZ);
		lvitem.lParam = (LPARAM)&data->menu.items[i];
		nItem = SendMessage(control, LB_ADDSTRING, (WPARAM)0, (LPARAM) buf); 
		if( ListView_InsertItem(control, &lvitem)==-1 ) {
			panic("cannot insert menu item");
		}
	}
	SetFocus(control);
}