none
在线求助论坛上各大高手!!!VC#开发遇见问题 RRS feed

  • 问题

  • 在线求助:

    1\窗体项目里的某一个或多个Form调用另一个类项目里的方法,被调用的方法里如何实现OnPaint或WndProc等事件使用GDI在Form上绘制???

    2\Form除了WndProc方式实现可改变大小的无边框窗体???

    3\无边框Form使用SetWindowLong显示任务栏右键菜单后WndProc无效怎么办???

    环境:xp sp3 ,.net3.5 , vs2008.net ,C#语言

    2009年12月29日 2:53

答案

  • 你可以在每个form中override这两个方法 在重写方法中将这两个方法的参数传递给你说的另一个项目里的方法

    比如 protected override void OnPaint(PaintEventArgs e)
            {
                AnotherProject.TheClass.TheStaticMethod.OnPaint(e);
                base.OnPaint(e);
            }protected override void WndProc(ref Message m)
            {
                AnotherProject.TheClass.TheStaticMethod.WndProc(m);
                base.WndProc(ref m);
            }


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2009年12月30日 1:43
    版主

全部回复

  • 你好!
         1,不好意思,不是很理解你的意思,你的被调用方法是什么?而且OnPaint和WndProc是方法,不是事件啊!
         2,你把窗体的FormBorderStyle属性设置成None,窗体就没有边框了
         3,你重写CreateParams属性来指定样式和扩展样式!
    周雪峰
    2009年12月29日 4:23
    版主
  • 能用SendMessage将无边框窗体改变窗体大小吗???

    2009年12月29日 4:27
  • 窗体需要有输入焦点才能接收消息,否则接收不到消息!
    周雪峰
    2009年12月29日 4:44
    版主
  • 啥跟啥
    如果可以将Form的OnPaint或WncProc映射到类项目里就可以解决了
    2009年12月29日 15:10
  • 你可以在每个form中override这两个方法 在重写方法中将这两个方法的参数传递给你说的另一个项目里的方法

    比如 protected override void OnPaint(PaintEventArgs e)
            {
                AnotherProject.TheClass.TheStaticMethod.OnPaint(e);
                base.OnPaint(e);
            }protected override void WndProc(ref Message m)
            {
                AnotherProject.TheClass.TheStaticMethod.WndProc(m);
                base.WndProc(ref m);
            }


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2009年12月30日 1:43
    版主