Feature: Add configurable screen-preview quality levels menu
Add a "屏幕预览质量等级 (Screen Preview Quality Levels)" item to the "高级 (Advanced)" menu that opens a dialog to edit the six preset PreviewProfile levels (target encode width and JPEG quality) used by the double-click single-preview and loop-snapshot floating windows. The dialog edits a working copy in a full grid with per-field validation and a restore-defaults button; on OK it persists the values to the [preview] INI section. ChooseScreenPreviewParams now reads from GetPreviewProfileCfg instead of the hardcoded GetScreenPreviewProfile table, so preview requests sent after a change use the configured parameters. LoadPreviewProfilesFromCfg loads the saved levels at startup, falling back to the built-in defaults. Added en_US/de_DE/zh_TW translations for the new menu and dialog strings. Co-Authored-By: deepseek-v4-pro
This commit is contained in:
1 parent
033ff077ef
commit
32cc7af371
8 files changed
+209
-4
No files matched your search
Binary file not shown.
@@ -44,6 +44,7 @@
|
|||||||
#include "common/skCrypter.h"
|
#include "common/skCrypter.h"
|
||||||
#include "common/commands.h"
|
#include "common/commands.h"
|
||||||
#include "QualityLevelsDlg.h"
|
#include "QualityLevelsDlg.h"
|
||||||
|
#include "CPreviewLevelsDlg.h"
|
||||||
#include "McpServer.h"
|
#include "McpServer.h"
|
||||||
#include "McpSettingsDlg.h"
|
#include "McpSettingsDlg.h"
|
||||||
#include "common/md5.h"
|
#include "common/md5.h"
|
||||||
@@ -1015,6 +1016,7 @@ BEGIN_MESSAGE_MAP(CMy2015RemoteDlg, CDialogEx)
|
|||||||
ON_COMMAND(ID_TOOL_V2_PRIVATEKEY, &CMy2015RemoteDlg::OnToolV2PrivateKey)
|
ON_COMMAND(ID_TOOL_V2_PRIVATEKEY, &CMy2015RemoteDlg::OnToolV2PrivateKey)
|
||||||
ON_COMMAND(ID_MENU_NOTIFY_SETTINGS, &CMy2015RemoteDlg::OnMenuNotifySettings)
|
ON_COMMAND(ID_MENU_NOTIFY_SETTINGS, &CMy2015RemoteDlg::OnMenuNotifySettings)
|
||||||
ON_COMMAND(ID_TOOL_QUALITY_LEVELS, &CMy2015RemoteDlg::OnQualityLevels)
|
ON_COMMAND(ID_TOOL_QUALITY_LEVELS, &CMy2015RemoteDlg::OnQualityLevels)
|
||||||
|
ON_COMMAND(ID_TOOL_PREVIEW_LEVELS, &CMy2015RemoteDlg::OnPreviewLevels)
|
||||||
ON_COMMAND(ID_EXECUTE_TESTRUN, &CMy2015RemoteDlg::OnExecuteTestrun)
|
ON_COMMAND(ID_EXECUTE_TESTRUN, &CMy2015RemoteDlg::OnExecuteTestrun)
|
||||||
ON_COMMAND(ID_EXECUTE_GHOST, &CMy2015RemoteDlg::OnExecuteGhost)
|
ON_COMMAND(ID_EXECUTE_GHOST, &CMy2015RemoteDlg::OnExecuteGhost)
|
||||||
ON_COMMAND(ID_MASTER_TRAIL, &CMy2015RemoteDlg::OnMasterTrail)
|
ON_COMMAND(ID_MASTER_TRAIL, &CMy2015RemoteDlg::OnMasterTrail)
|
||||||
@@ -2409,6 +2411,7 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
|
|||||||
LoadThumbnailSettingsFromCfg();
|
LoadThumbnailSettingsFromCfg();
|
||||||
ApplyThumbnailSettings();
|
ApplyThumbnailSettings();
|
||||||
LoadQualityProfilesFromCfg();
|
LoadQualityProfilesFromCfg();
|
||||||
|
LoadPreviewProfilesFromCfg();
|
||||||
m_runNormal = THIS_CFG.GetInt("settings", "RunNormal", 0);
|
m_runNormal = THIS_CFG.GetInt("settings", "RunNormal", 0);
|
||||||
|
|
||||||
CMenu* SubMenu = m_MainMenu.GetSubMenu(2);
|
CMenu* SubMenu = m_MainMenu.GetSubMenu(2);
|
||||||
@@ -8797,7 +8800,7 @@ void CMy2015RemoteDlg::OnListSingleClick(NMHDR* pNMHDR, LRESULT* pResult)
|
|||||||
OpenLoopTip(ctx, anchor);
|
OpenLoopTip(ctx, anchor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 屏幕预览参数挑选:复用既有 GetTargetQualityLevel + GetScreenPreviewProfile
|
// 屏幕预览参数挑选:复用 GetTargetQualityLevel + GetPreviewProfileCfg(可配置的 6 档预览参数表)
|
||||||
// RTT 阈值表与屏幕共享共用(FRP 模式阈值更宽松);超清档(Ultra/High)+ 4K/超宽屏
|
// RTT 阈值表与屏幕共享共用(FRP 模式阈值更宽松);超清档(Ultra/High)+ 4K/超宽屏
|
||||||
// 时按 min(screenWidth/4, 1280) 自适应放大,避免高分屏被压成无信息缩略图
|
// 时按 min(screenWidth/4, 1280) 自适应放大,避免高分屏被压成无信息缩略图
|
||||||
void CMy2015RemoteDlg::ChooseScreenPreviewParams(context* ctx, WORD& maxWidth, BYTE& jpegQuality) const
|
void CMy2015RemoteDlg::ChooseScreenPreviewParams(context* ctx, WORD& maxWidth, BYTE& jpegQuality) const
|
||||||
@@ -8811,7 +8814,7 @@ void CMy2015RemoteDlg::ChooseScreenPreviewParams(context* ctx, WORD& maxWidth, B
|
|||||||
int rttForLevel = ping > 0 ? ping : 250;
|
int rttForLevel = ping > 0 ? ping : 250;
|
||||||
|
|
||||||
int level = GetTargetQualityLevel(rttForLevel, m_settings.UsingFRPProxy ? 1 : 0);
|
int level = GetTargetQualityLevel(rttForLevel, m_settings.UsingFRPProxy ? 1 : 0);
|
||||||
const PreviewProfile& prof = GetScreenPreviewProfile(level);
|
const PreviewProfile& prof = GetPreviewProfileCfg(level);
|
||||||
int base = prof.maxWidth;
|
int base = prof.maxWidth;
|
||||||
BYTE q = (BYTE)prof.jpegQuality;
|
BYTE q = (BYTE)prof.jpegQuality;
|
||||||
|
|
||||||
@@ -9205,6 +9208,58 @@ void CMy2015RemoteDlg::OnQualityLevels()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ===== 屏幕预览质量等级配置([preview] 节) =====
|
||||||
|
// 6 档 PreviewProfile 的读写入口。缺省值回落到 common/commands.h 的
|
||||||
|
// GetScreenPreviewProfile(),与内置预览参数表一致;用户改过的档位单独落盘到 INI。
|
||||||
|
|
||||||
|
void CMy2015RemoteDlg::LoadPreviewProfilesFromCfg()
|
||||||
|
{
|
||||||
|
// 先整体回落到内置默认,再逐字段覆盖,避免 INI 缺项时读到 0
|
||||||
|
for (int i = 0; i < QUALITY_COUNT; i++) {
|
||||||
|
m_PreviewProfiles[i] = GetScreenPreviewProfile(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < QUALITY_COUNT; i++) {
|
||||||
|
std::string sec = "preview" + std::to_string(i);
|
||||||
|
PreviewProfile& p = m_PreviewProfiles[i];
|
||||||
|
|
||||||
|
p.maxWidth = THIS_CFG.GetInt("preview", sec + "_maxWidth", p.maxWidth);
|
||||||
|
p.jpegQuality = THIS_CFG.GetInt("preview", sec + "_jpegQuality", p.jpegQuality);
|
||||||
|
|
||||||
|
// Clamp 到安全范围(防 INI 被手工编错)
|
||||||
|
if (p.maxWidth < 64) p.maxWidth = 64;
|
||||||
|
if (p.maxWidth > 2560) p.maxWidth = 2560;
|
||||||
|
if (p.jpegQuality < 1) p.jpegQuality = 1;
|
||||||
|
if (p.jpegQuality > 100) p.jpegQuality = 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMy2015RemoteDlg::SavePreviewProfilesToCfg() const
|
||||||
|
{
|
||||||
|
for (int i = 0; i < QUALITY_COUNT; i++) {
|
||||||
|
std::string sec = "preview" + std::to_string(i);
|
||||||
|
const PreviewProfile& p = m_PreviewProfiles[i];
|
||||||
|
THIS_CFG.SetInt("preview", sec + "_maxWidth", p.maxWidth);
|
||||||
|
THIS_CFG.SetInt("preview", sec + "_jpegQuality", p.jpegQuality);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const PreviewProfile& CMy2015RemoteDlg::GetPreviewProfileCfg(int level) const
|
||||||
|
{
|
||||||
|
if (level < 0 || level >= QUALITY_COUNT)
|
||||||
|
return GetScreenPreviewProfile(level); // 越界:与 common 默认表同源兜底
|
||||||
|
return m_PreviewProfiles[level];
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMy2015RemoteDlg::OnPreviewLevels()
|
||||||
|
{
|
||||||
|
CPreviewLevelsDlg dlg(m_PreviewProfiles, this);
|
||||||
|
if (dlg.DoModal() == IDOK) {
|
||||||
|
SavePreviewProfilesToCfg();
|
||||||
|
MessageBoxL("预览质量等级已保存,下次发送预览时生效。", "提示", MB_ICONINFORMATION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CMy2015RemoteDlg::ApplyThumbnailSettings()
|
void CMy2015RemoteDlg::ApplyThumbnailSettings()
|
||||||
{
|
{
|
||||||
// 任何已缓存的 HBITMAP 都是按"旧 ThumbWidth"渲染的,尺寸不再可信 —— 一律清空。
|
// 任何已缓存的 HBITMAP 都是按"旧 ThumbWidth"渲染的,尺寸不再可信 —— 一律清空。
|
||||||
|
|||||||
@@ -338,6 +338,15 @@ public:
|
|||||||
void SaveQualityProfilesToCfg() const; // m_QualityProfiles 落盘到 THIS_CFG
|
void SaveQualityProfilesToCfg() const; // m_QualityProfiles 落盘到 THIS_CFG
|
||||||
const QualityProfile& GetQualityProfileCfg(int level) const; // 供 ScreenSpyDlg 下发用
|
const QualityProfile& GetQualityProfileCfg(int level) const; // 供 ScreenSpyDlg 下发用
|
||||||
void OnQualityLevels(); // 高级→远程桌面质量等级
|
void OnQualityLevels(); // 高级→远程桌面质量等级
|
||||||
|
|
||||||
|
// ===== 屏幕预览质量等级配置(6 档 PreviewProfile) =====
|
||||||
|
// 双击主机单发预览 / 循环快照浮窗所用。持久化走 THIS_CFG [preview] 节。
|
||||||
|
// 仅 UI 线程访问;修改后下次发预览请求即生效。
|
||||||
|
PreviewProfile m_PreviewProfiles[QUALITY_COUNT];
|
||||||
|
void LoadPreviewProfilesFromCfg(); // 从 THIS_CFG 读到 m_PreviewProfiles(缺省回落 GetScreenPreviewProfile)
|
||||||
|
void SavePreviewProfilesToCfg() const; // m_PreviewProfiles 落盘到 THIS_CFG
|
||||||
|
const PreviewProfile& GetPreviewProfileCfg(int level) const; // 供 ChooseScreenPreviewParams 用
|
||||||
|
void OnPreviewLevels(); // 高级→屏幕预览质量等级
|
||||||
void SendThumbnailRequest(class context* ctx);// 发一次缩略图请求
|
void SendThumbnailRequest(class context* ctx);// 发一次缩略图请求
|
||||||
void CacheThumbnail(uint64_t clientID, const BYTE* jpeg, size_t bytes);
|
void CacheThumbnail(uint64_t clientID, const BYTE* jpeg, size_t bytes);
|
||||||
void ClearThumbnailCacheEntry(uint64_t clientID);
|
void ClearThumbnailCacheEntry(uint64_t clientID);
|
||||||
|
|||||||
@@ -0,0 +1,121 @@
|
|||||||
|
// CPreviewLevelsDlg.h
|
||||||
|
// 屏幕预览质量等级配置对话框:编辑 6 档 PreviewProfile(编码宽度 / JPEG 质量)。
|
||||||
|
// 纯主控端 UI 偏好,持久化由 CMy2015RemoteDlg::SavePreviewProfilesToCfg() 负责。
|
||||||
|
// 仅在 2015RemoteDlg.cpp 中 include 一次(头文件内联实现,勿多处包含)。
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "LangManager.h"
|
||||||
|
|
||||||
|
class CPreviewLevelsDlg : public CDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum { IDD = IDD_PREVIEW_LEVELS };
|
||||||
|
|
||||||
|
// profiles: 指向 6 元素 PreviewProfile 数组,确认后写回
|
||||||
|
CPreviewLevelsDlg(PreviewProfile* profiles, CWnd* pParent = NULL)
|
||||||
|
: CDialog(CPreviewLevelsDlg::IDD, pParent), m_profiles(profiles)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
PreviewProfile* m_profiles;
|
||||||
|
PreviewProfile m_working[QUALITY_COUNT];
|
||||||
|
|
||||||
|
static const char* LevelName(int i)
|
||||||
|
{
|
||||||
|
static const char* names[QUALITY_COUNT] = {
|
||||||
|
"Ultra", "High", "Good", "Medium", "Low", "Minimal"
|
||||||
|
};
|
||||||
|
return (i >= 0 && i < QUALITY_COUNT) ? names[i] : "?";
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadToControls()
|
||||||
|
{
|
||||||
|
CString s;
|
||||||
|
for (int i = 0; i < QUALITY_COUNT; i++) {
|
||||||
|
s.Format(_T("%d"), m_working[i].maxWidth);
|
||||||
|
SetDlgItemText(IDC_PLEVEL_WIDTH + i, s);
|
||||||
|
s.Format(_T("%d"), m_working[i].jpegQuality);
|
||||||
|
SetDlgItemText(IDC_PLEVEL_QUALITY + i, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ReadInt(int id, int& out)
|
||||||
|
{
|
||||||
|
CString s;
|
||||||
|
GetDlgItemText(id, s);
|
||||||
|
s.Trim();
|
||||||
|
if (s.IsEmpty()) return false;
|
||||||
|
|
||||||
|
int v = 0;
|
||||||
|
for (int k = 0; k < s.GetLength(); k++) {
|
||||||
|
TCHAR ch = s[k];
|
||||||
|
if (ch < _T('0') || ch > _T('9')) return false;
|
||||||
|
v = v * 10 + (ch - _T('0'));
|
||||||
|
}
|
||||||
|
out = v;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ReadFromControls(CString& err)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < QUALITY_COUNT; i++) {
|
||||||
|
int w, q;
|
||||||
|
if (!ReadInt(IDC_PLEVEL_WIDTH + i, w))
|
||||||
|
{ err.Format(_T("等级 %s 的最大宽度不是有效数字"), LevelName(i)); return false; }
|
||||||
|
if (!ReadInt(IDC_PLEVEL_QUALITY + i, q))
|
||||||
|
{ err.Format(_T("等级 %s 的 JPEG 质量不是有效数字"), LevelName(i)); return false; }
|
||||||
|
|
||||||
|
if (w < 64 || w > 2560)
|
||||||
|
{ err.Format(_T("等级 %s 的最大宽度需在 64~2560 之间"), LevelName(i)); return false; }
|
||||||
|
if (q < 1 || q > 100)
|
||||||
|
{ err.Format(_T("等级 %s 的 JPEG 质量需在 1~100 之间"), LevelName(i)); return false; }
|
||||||
|
|
||||||
|
m_working[i].maxWidth = w;
|
||||||
|
m_working[i].jpegQuality = q;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetToDefaults()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < QUALITY_COUNT; i++) {
|
||||||
|
m_working[i] = GetScreenPreviewProfile(i);
|
||||||
|
}
|
||||||
|
LoadToControls();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual BOOL OnInitDialog() override
|
||||||
|
{
|
||||||
|
CDialog::OnInitDialog();
|
||||||
|
|
||||||
|
for (int i = 0; i < QUALITY_COUNT; i++) {
|
||||||
|
m_working[i] = m_profiles[i];
|
||||||
|
}
|
||||||
|
LoadToControls();
|
||||||
|
TranslateDialog(this);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void OnOK() override
|
||||||
|
{
|
||||||
|
CString err;
|
||||||
|
if (!ReadFromControls(err)) {
|
||||||
|
MessageBox(err, _TR("提示"), MB_ICONWARNING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < QUALITY_COUNT; i++) {
|
||||||
|
m_profiles[i] = m_working[i];
|
||||||
|
}
|
||||||
|
CDialog::OnOK();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam) override
|
||||||
|
{
|
||||||
|
if (LOWORD(wParam) == IDC_PLEVEL_RESET && HIWORD(wParam) == BN_CLICKED) {
|
||||||
|
ResetToDefaults();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return CDialog::OnCommand(wParam, lParam);
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -2042,3 +2042,8 @@ Minimal
|
|||||||
最大宽度 0 表示原始分辨率;DIFF/RGB565 适合局域网,H264 适合跨网=Max. Breite 0 = Originalaufloesung; DIFF/RGB565 fuer LAN, H264 fuer WAN
|
最大宽度 0 表示原始分辨率;DIFF/RGB565 适合局域网,H264 适合跨网=Max. Breite 0 = Originalaufloesung; DIFF/RGB565 fuer LAN, H264 fuer WAN
|
||||||
恢复默认=Standard
|
恢复默认=Standard
|
||||||
质量等级已保存,下次打开远程桌面时生效。=Qualitaetsstufen gespeichert. Wirksam beim naechsten Oeffnen des Remote Desktops.
|
质量等级已保存,下次打开远程桌面时生效。=Qualitaetsstufen gespeichert. Wirksam beim naechsten Oeffnen des Remote Desktops.
|
||||||
|
屏幕预览质量等级(&P)=Vorschau &Qualitaetsstufen
|
||||||
|
屏幕预览质量等级=Vorschau Qualitaetsstufen
|
||||||
|
JPEG质量=JPEG Qualitaet
|
||||||
|
最大宽度为期望编码宽度;JPEG 质量 1~100=Max. Breite ist die Ziel-Codierbreite; JPEG Qualitaet 1~100
|
||||||
|
预览质量等级已保存,下次发送预览时生效。=Vorschau-Qualitaetsstufen gespeichert. Wirksam bei der naechsten Vorschau.
|
||||||
@@ -2042,3 +2042,8 @@ Minimal
|
|||||||
最大宽度 0 表示原始分辨率;DIFF/RGB565 适合局域网,H264 适合跨网=Max Width 0 = native resolution; DIFF/RGB565 for LAN, H264 for WAN
|
最大宽度 0 表示原始分辨率;DIFF/RGB565 适合局域网,H264 适合跨网=Max Width 0 = native resolution; DIFF/RGB565 for LAN, H264 for WAN
|
||||||
恢复默认=Restore Defaults
|
恢复默认=Restore Defaults
|
||||||
质量等级已保存,下次打开远程桌面时生效。=Quality levels saved. They take effect the next time you open Remote Desktop.
|
质量等级已保存,下次打开远程桌面时生效。=Quality levels saved. They take effect the next time you open Remote Desktop.
|
||||||
|
屏幕预览质量等级(&P)=Screen Preview &Quality Levels
|
||||||
|
屏幕预览质量等级=Screen Preview Quality Levels
|
||||||
|
JPEG质量=JPEG Quality
|
||||||
|
最大宽度为期望编码宽度;JPEG 质量 1~100=Max width is the target encode width; JPEG quality 1~100
|
||||||
|
预览质量等级已保存,下次发送预览时生效。=Preview quality levels saved. They take effect the next time a preview is sent.
|
||||||
@@ -2033,3 +2033,8 @@ Minimal
|
|||||||
最大宽度 0 表示原始分辨率;DIFF/RGB565 适合局域网,H264 适合跨网=最大寬度 0 = 原始解析度;DIFF/RGB565 適合區域網路,H264 適合跨網
|
最大宽度 0 表示原始分辨率;DIFF/RGB565 适合局域网,H264 适合跨网=最大寬度 0 = 原始解析度;DIFF/RGB565 適合區域網路,H264 適合跨網
|
||||||
恢复默认=恢復預設
|
恢复默认=恢復預設
|
||||||
质量等级已保存,下次打开远程桌面时生效。=品質等級已儲存,下次開啟遠端桌面時生效。
|
质量等级已保存,下次打开远程桌面时生效。=品質等級已儲存,下次開啟遠端桌面時生效。
|
||||||
|
屏幕预览质量等级(&P)=螢幕預覽品質等級(&P)
|
||||||
|
屏幕预览质量等级=螢幕預覽品質等級
|
||||||
|
JPEG质量=JPEG品質
|
||||||
|
最大宽度为期望编码宽度;JPEG 质量 1~100=最大寬度為期望編碼寬度;JPEG 品質 1~100
|
||||||
|
预览质量等级已保存,下次发送预览时生效。=預覽品質等級已儲存,下次傳送預覽時生效。
|
||||||
@@ -354,6 +354,7 @@
|
|||||||
#define IDC_DOT 2036
|
#define IDC_DOT 2036
|
||||||
#define IDD_AUDIO 2038
|
#define IDD_AUDIO 2038
|
||||||
#define IDD_QUALITY_LEVELS 3000
|
#define IDD_QUALITY_LEVELS 3000
|
||||||
|
#define IDD_PREVIEW_LEVELS 3001
|
||||||
#define IDI_AUDIO 2039
|
#define IDI_AUDIO 2039
|
||||||
#define IDC_LIST_REMOTE 2040
|
#define IDC_LIST_REMOTE 2040
|
||||||
#define IDC_LIST_LOCAL 2041
|
#define IDC_LIST_LOCAL 2041
|
||||||
@@ -1038,19 +1039,23 @@
|
|||||||
#define ID_ONLINE_HISTORY_ACTIVITY 33082
|
#define ID_ONLINE_HISTORY_ACTIVITY 33082
|
||||||
#define ID_EXIT_FULLSCREEN 40001
|
#define ID_EXIT_FULLSCREEN 40001
|
||||||
#define ID_TOOL_QUALITY_LEVELS 33083
|
#define ID_TOOL_QUALITY_LEVELS 33083
|
||||||
|
#define ID_TOOL_PREVIEW_LEVELS 33084
|
||||||
#define IDC_QLEVEL_FPS 2547
|
#define IDC_QLEVEL_FPS 2547
|
||||||
#define IDC_QLEVEL_WIDTH 2553
|
#define IDC_QLEVEL_WIDTH 2553
|
||||||
#define IDC_QLEVEL_ALGO 2559
|
#define IDC_QLEVEL_ALGO 2559
|
||||||
#define IDC_QLEVEL_BITRATE 2565
|
#define IDC_QLEVEL_BITRATE 2565
|
||||||
#define IDC_QLEVEL_RESET 2571
|
#define IDC_QLEVEL_RESET 2571
|
||||||
|
#define IDC_PLEVEL_WIDTH 2572
|
||||||
|
#define IDC_PLEVEL_QUALITY 2578
|
||||||
|
#define IDC_PLEVEL_RESET 2584
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 401
|
#define _APS_NEXT_RESOURCE_VALUE 401
|
||||||
#define _APS_NEXT_COMMAND_VALUE 33083
|
#define _APS_NEXT_COMMAND_VALUE 33085
|
||||||
#define _APS_NEXT_CONTROL_VALUE 2542
|
#define _APS_NEXT_CONTROL_VALUE 2585
|
||||||
#define _APS_NEXT_SYMED_VALUE 105
|
#define _APS_NEXT_SYMED_VALUE 105
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
Reference in new issue
Block a user