小编Jon*_*ury的帖子

检测桌面是否已锁定

可能重复:
如何以编程方式确定我的工作站是否已锁定?

确定桌面是否为当前登录用户锁定的最佳方法是什么?我查看了MSDN,找不到任何API调用来检测它.我错过了什么,或者我可以使用没有简单的电话?

winapi desktop

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

C#图像绘制颜色不正确

我有一个1x1的源位图,我试图拍摄该图像并将其绘制到一个新的位图.源位图全部为红色,但由于某种原因,新位图以渐变结束(参见图像).使用下面的代码,新的位图不应该是完全红色的吗?从哪里获得白色/ alpha?

alt text http://www.binaryfortress.com/Temp/Error.jpg

private void DrawImage()
{
    Bitmap bmpSOURCE = new Bitmap(1, 1, PixelFormat.Format32bppArgb);
    using (Graphics g = Graphics.FromImage(bmpSOURCE))
    {
        g.Clear(Color.Red);
    }

    Bitmap bmpTest = new Bitmap(300, 100, PixelFormat.Format32bppArgb);
    using (Graphics g = Graphics.FromImage(bmpTest))
    {
        g.CompositingMode = CompositingMode.SourceCopy;
        g.CompositingQuality = CompositingQuality.AssumeLinear;
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        g.PageUnit = GraphicsUnit.Pixel;
        g.PixelOffsetMode = PixelOffsetMode.None;
        g.SmoothingMode = SmoothingMode.None;

        Rectangle rectDest = new Rectangle(0, 0, bmpTest.Width, bmpTest.Height);
        Rectangle rectSource = new Rectangle(0, 0, 1, 1);
        g.DrawImage(bmpSOURCE, rectDest, rectSource, GraphicsUnit.Pixel);
    }

    pictureBox1.Image = bmpTest;
}
Run Code Online (Sandbox Code Playgroud)

c# drawing gdi+ winforms

4
推荐指数
1
解决办法
1103
查看次数

GetWindowLong与C#中的GetWindowLongPtr

我像这样使用GetWindowLong:

[DllImport("user32.dll")]
private static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);
Run Code Online (Sandbox Code Playgroud)

但根据MSDN文档,我应该使用GetWindowLongPtr与64位兼容. http://msdn.microsoft.com/en-us/library/ms633584(VS.85).aspx

GetWindowLongPtr的MSDN文档说我应该像这样定义它(在C++中):

LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex);
Run Code Online (Sandbox Code Playgroud)

我曾经使用IntPtr作为返回类型,但是我将使用什么来替代LONG_PTR?我也看到在C#中将GetWindowLong定义为:

[DllImport("user32.dll")]
private static extern long GetWindowLong(IntPtr hWnd, int nIndex);
Run Code Online (Sandbox Code Playgroud)

什么是正确的,我如何确保正确的64位兼容性?

c# getwindowlong

3
推荐指数
2
解决办法
7250
查看次数

TfrmMain和TApplication - 这些是为了什么?

我是Delphi新手,但我正在尝试使用Spy ++理解TApplication和TfrmMain窗口之间的关系.看起来TfrmMain窗口是具有正确屏幕坐标的真实窗口,但TApplication窗口是Windows任务栏中显示的窗口.而且,它们似乎根本没有相互关联.一个不是另一个的父窗口,那么窗口如何链接在一起?为什么非UI窗口是获取Windows任务栏按钮的窗口?任何Delphi专家都可以帮我理解这个吗?

delphi

3
推荐指数
1
解决办法
1616
查看次数

是否可以显示所有方法及其访问修饰符?

我正在对一些大类库进行代码审查,我想知道是否有人知道一种简单易行的方法来生成所有方法(也可能是属性/变量)及其访问修饰符的列表.例如,我想要这样的事情:

private MyClass.Method1()
internal MyClass.Method2()
public MyOtherClass.Method1()
Run Code Online (Sandbox Code Playgroud)

有点像C++头文件,但对于C#.这会将所有内容放在一个地方以便快速查看,然后我们可以调查是否真的需要将某些方法标记为内部/公共.

c# methods

3
推荐指数
1
解决办法
758
查看次数

C#中事件处理的首选方法是什么?

哪个是在.NET中处理事件的首选/推荐方式:

this.Load += new EventHandler(Form1_Load);
private void Form1_Load(object sender, EventArgs e)
{ }
Run Code Online (Sandbox Code Playgroud)

要么

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
}
Run Code Online (Sandbox Code Playgroud)

每种方法的优缺点是什么?多年来我一直使用这两种方法,并且通常更倾向于第一种方法,因为这是Visual Studio自动创建的用于处理事件的方法.我错过的第二种方法有什么好处吗?

c# event-handling winforms

3
推荐指数
2
解决办法
942
查看次数

Visual Studio 2008中的"查找和替换"速度很慢

我有一个只有一个项目的解决方案,大约有30个类文件.如果我使用"查找和替换"来搜索当前打开的文档,它会很快,但如果我尝试搜索整个解决方案,则每个结果之间似乎需要3-4秒.即使我可以看到彼此相邻的比赛,仍然有3-4秒的滞后.硬盘驱动器没有做任何事情,CPU处于空闲状态 - 可能导致这种失速?

visual-studio-2008

3
推荐指数
1
解决办法
2032
查看次数

对Web应用程序中的无限重定向进行故障排除

我有一个试图在循环中重定向的Web应用程序,Firefox告诉我它正在停止,因为请求永远不会完成.有没有一种好的方法(在Firefox中)看到在这个永无止境的循环中请求了什么URL?地址似乎没有出现在地址栏中.是否有任何插件可以帮助解决这个问题?

redirect

2
推荐指数
1
解决办法
3482
查看次数

奇怪的Javascript错误与字符串

我正在使用此代码获得"未终止的字符串文字" Javascript错误:

var test = '<script type="text/javascript">var s = document.createElement(\'SCRIPT\');</script></div>'; 
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?我正在逃避单引号,但它似乎没有什么区别.但是,此代码确实有效:

var test = 'var s = document.createElement(\'SCRIPT\');</div>';
Run Code Online (Sandbox Code Playgroud)

有什么区别?我必须在这里遗漏一些东西.

javascript string

2
推荐指数
1
解决办法
135
查看次数

在C#中将结构数组编组到指针

我试图调用一个看起来像这样的非托管函数(DATA是我的C#结构):

[DllImport("data.dll")]
internal static unsafe extern int MyExternalFunction(DATA* pData, uint numElements);
Run Code Online (Sandbox Code Playgroud)

这就是我从C#调用函数的方式:

DATA[] data = new DATA[64];
fixed (DATA* pData = data )
{
    MyExternalFunction(pData, 64);
}

[StructLayout(LayoutKind.Sequential)]
internal struct DATA
{
    internal uint a;
    internal uint b;
    internal uint c;
    internal POINT pos;
}

[StructLayout(LayoutKind.Sequential)]
internal struct POINT 
{
    internal int x;
    internal int y;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是我收到了这个错误:"无法编组'参数#1':指针不能引用封送结构."

如果它有任何区别,我的DATA结构中有嵌套的结构.我无法控制外部方法的设计方式.调用此函数并接收结构数组的正确方法是什么?

c# pinvoke interop

2
推荐指数
1
解决办法
3788
查看次数