标签: windows-controls

如何检测控制台是否支持Python中的ANSI转义码?

为了检测控制台,正确sys.stderr还是sys.stdout,我正在做以下测试:

if hasattr(sys.stderr, "isatty") and sys.stderr.isatty():
   if platform.system()=='Windows':
       # win code (ANSI not supported but there are alternatives)
   else:
       # use ANSI escapes
else:
   # no colors, usually this is when you redirect the output to a file
Run Code Online (Sandbox Code Playgroud)

现在,通过IDE(如PyCharm)运行此Python代码时,问题变得更加复杂.最近PyCharm添加了对ANSI的支持,但第一次测试失败:它具有isatty属性但设置为False.

我想修改逻辑,以便正确检测输出是否支持ANSI着色.一个要求是在任何情况下我都不应该在输出重定向到文件时输出一些东西(对于控制台,它是可以接受的).

更新

通过https://gist.github.com/1316877添加了更复杂的ANSI测试脚本

python console stdout ansi-escape windows-controls

32
推荐指数
3
解决办法
8670
查看次数

Win32 - 将文本附加到编辑控件

尝试将文本附加到对话框内的编辑控件.我无法正确追加_tcscat_s.它崩溃并说一些关于缓冲区太小或关于空终止字符串的事情.

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    return DialogBox( hInstance, MAKEINTRESOURCE( IDD_MAIN ), NULL, DlgProc );
}

BOOL CALLBACK DlgProc( HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam ) 
{
    switch( Message )
    {
        case WM_INITDIALOG:
            OpenAndReadFile( hwnd );
            return TRUE;
        case WM_COMMAND:
            switch( LOWORD( wParam ) )
            {
                case IDSTART:
                    EndDialog( hwnd, IDSTART );
                    break;
                case IDQUIT:
                    EndDialog( hwnd, IDQUIT );
                    break;
            }
            break;
        case WM_CLOSE:
            EndDialog( hwnd, 0 );
            break;
        default: …
Run Code Online (Sandbox Code Playgroud)

c c++ winapi windows-controls

8
推荐指数
2
解决办法
2万
查看次数

Windows窗体中的Flowlayout和Tablelayout

Windows窗体中Flowlayout和Tablelayout有什么区别?我知道我可以谷歌,但我的时间有点短.

我的要求也是,当表单调整大小时.调整窗体大小不应该弄乱控件的对齐,它应该对分辨率的变化做出反应.

.net c# tablelayoutpanel flowlayoutpanel windows-controls

8
推荐指数
1
解决办法
1万
查看次数

如何获取动态添加到Windows窗体c#中的控件的值?

我读了一些文章并且没有管理解决了我的问题,我的问题是在我尝试获取动态添加到Windows窗体中的控件(CheckBox和ComboBox)的值时,我需要知道何时选中CheckBox(或取消选中) )当按下按钮时,如果ComboBox为空(或不是),则此按钮调用一种方法,在该方法中我验证所有组件是否为空,我按以下方式添加控件:

 CheckBox box;
 ComboBox cmBox;
 for (int i = 1; i <= sumOfRegisters; i++)
 {
    box = new CheckBox();
    box.Name = "CheckBox" + i;
    box.Text = "Some text";
    box.AutoSize = true;
    box.Location = new Point(10, i * 25); //vertical

    cmBox = new ComboBox();
    cmBox.Name = "ComboBox" + i;
    cmBox.Size = new System.Drawing.Size(302, 21);
    cmBox.TabIndex = i;
    cmBox.Text = "Some Text";
    cmBox.Location = new Point(270, i * 25);

    this.groupBox.Controls.Add(cmBox);
    this.groupBox.Controls.Add(box);
}
Run Code Online (Sandbox Code Playgroud)

"我在ComboBox的情况下添加数据库中的值,我省略了这一部分."

我尝试用foreach获取值:

foreach (Control ctrl in groupBox.Controls)
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何检查Control(CheckBox和ComboBox)是否被检查或为空(视情况而定).

非常感谢您的帮助,感谢您的时间.

c# checkbox combobox winforms windows-controls

7
推荐指数
1
解决办法
911
查看次数

Windows窗口类区分大小写吗?

MS文档显然是泥浆(并且类名称字符串没有经常引用),我想知道Win32 窗口类类名是否实际上区分大小写?

windows winapi win32gui windows-controls

7
推荐指数
1
解决办法
302
查看次数

在WinForms中具有复选框的ComboBox

我正在尝试实现一个CheckBox ComboBox。我按照此链接作为参考

http://www.codeproject.com/Articles/31105/A-ComboBox-with-a-CheckedListBox-as-a-Dropdown?msg=4152597#xx4152597xx

但是此示例存在一些问题。

1)显示下拉列表后,单击鼠标第一次更改所选项目的检查状态总会失败,但是可以单击成功。似乎第一次点击就被吞没了。我做了一些跟踪工作,但找不到答案。

2)当列表打开时,表单失去焦点。

c# combobox winforms windows-controls drop-down-menu

5
推荐指数
0
解决办法
3万
查看次数

如何通过Tab键及时启用WinForm按钮以获得焦点

Visual Studio 2010,C#

我有ComboBox一个DropDown,AutoComplete设置SuggestAppendAutoCompleteSource距离ListItems.用户将数据键入其中,直到具有正确的条目.如果数据与列表项之一匹配,则组合框旁边的按钮被禁用.

如果用户点击Tab键,则自动完成功能会接受当前建议.它还会移动到启用的选项卡序列中的下一个控件.当然,因为我希望它转到disbabled按钮,我需要在验证条目后立即启用它.

问题是,没有我试过事件,PreviewKeyDown,LostFocus,SelectedIndexChanged让我使按钮的时间它被处理连线和接收焦点.它始终以Tab键顺序进入下一个按钮,该按钮始终处于启用状态.

我准备好让按钮保持启用状态,如果太快按下它就会出错,但我不想这样做.我也不想进入特殊模式标志来跟踪这些控件何时获得焦点.验证似乎是正常的事情,但我被困住了.

如果在SelectedIndexChanged用户进行匹配时工作,这将很容易.当盒子清除时,或者当找到类型匹配时,它不会触发.

c# events winforms windows-controls

5
推荐指数
1
解决办法
1171
查看次数

同步滚动组件Delphi

我试图在VCL Forms应用程序中同步滚动两个TDBGrid组件,我很难拦截每个网格组件的WndProc而没有一些堆栈问题.我尝试在滚动事件下发送WM_VSCROLL消息,但这仍然导致不正确的操作.它需要用于单击滚动条,以及突出显示单元格或向上或向下鼠标按钮.整个想法是让两个网格彼此相邻,显示一种匹配对话框.

试着

SendMessage( gridX.Handle, WM_VSCROLL, SB_LINEDOWN, 0 );
Run Code Online (Sandbox Code Playgroud)

procedure TForm1.GridXCustomWndProc( var Msg: TMessage );
begin
Msg.Result := CallWindowProc( POldWndProc, gridX.Handle, Msg.Msg, Msg.wParam, Msg.lParam );

   if ( Msg.Msg = WM_VSCROLL ) then 
   begin
      gridY.SetActiveRow( gridX.GetActiveRow );
      gridY.Perform( Msg.Msg, Msg.wParam, Msg.lParam );
      SetScrollPos( gridY.Handle, SB_VERT, HIWORD( Msg.wParam ), True );
   end;
end;
Run Code Online (Sandbox Code Playgroud)

procedure TForm1.GridxCustomWndProc( var Msg: TMessage );
begin
   if ( Msg.Msg = WM_VSCROLL ) then 
   begin
      gridY.SetActiveRow( gridX.GetActiveRow );
      gridY.Perform( Msg.Msg, Msg.wParam, Msg.lParam );
      SetScrollPos( gridY.Handle, SB_VERT, HIWORD( …
Run Code Online (Sandbox Code Playgroud)

delphi scroll windows-controls

5
推荐指数
1
解决办法
5323
查看次数

从全屏模式最小化后,AxMSTSCLib 显示在任务栏中消失

我正在AxMSTSCLib开发用于创建 RDP 连接的 Windows 应用程序。

下面列出的步骤导致我的远程桌面显示消失:

  1. 以全屏模式启动 RDP 连接
  2. 从连接栏中单击“还原”按钮
  3. 再次点击“最大化”按钮重新进入全屏模式
  4. 点击“最小化”按钮
  5. 然后我的应用程序消失了,我在任务栏中看不到它(但仍然在任务管理器中列出/运行)

在此处输入图片说明

如果我跳过第 2 步和第 3 步,当我从连接栏中单击“最小化”按钮时它不会消失,这真的很奇怪。

我在这里发布了我的部分代码,希望任何人都可以帮助我找出问题所在。

public partial class RdpShowForm : Form
{
  public AxMSTSCLib.AxMsRdpClient9NotSafeForScripting oRemote;
  public RdpShowForm()
  {
    InitializeComponent();
    oRemote = new AxMSTSCLib.AxMsRdpClient9NotSafeForScripting();
    ((System.ComponentModel.ISupportInitialize)(this.oRemote)).BeginInit();
    oRemote.Dock = System.Windows.Forms.DockStyle.Fill;
    oRemote.Enabled = true;
    oRemote.Name = "WindowsVM";
    this.Controls.Add(oRemote); // Controls contains 'panel1' and 'oRemote'
    ((System.ComponentModel.ISupportInitialize)(this.oRemote)).EndInit();            
    oRemote.CreateControl();
    this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
  }

  private void RdpShowForm_Load(object sender, EventArgs e)
  {
    NewRdpConnectionInstance();
  }

  private void NewRdpConnectionInstance()
  {
    oRemote.Server = 'xxx';
    ...
    oRemote.FullScreen …
Run Code Online (Sandbox Code Playgroud)

c# rdp mstsc winforms windows-controls

5
推荐指数
0
解决办法
75
查看次数