皮皮网
皮皮网

【易语言 excel 源码】【html 公告 源码】【bottle 源码分析】窗体 c 源码_窗体代码

来源:易语crc源码 发表时间:2024-12-28 20:50:25

1.���� c Դ��
2.c#怎么实现打印windows窗体代码
3.C#隐藏和显示窗体

窗体   c  源码_窗体代码

���� c Դ��

       呵呵,窗体一年半前我和你一样,码窗码也处于这个状态,体代如果你做windows的窗体程序设计的话,编程像windows这样的码窗码窗口化的软件,你必须接触VS,体代易语言 excel 源码旗下的窗体VC++或VC#,你学完c和c++先接触VC++的码窗码MFC较为容易,使用MFC APP向导可以直接生成你所说的体代windows这样窗口程序,刚开始你是窗体不知道如何生成的,为此你需要边学windows程序设计,码窗码建议使用《windows程序设计》,体代里面介绍了一个基本窗体生成的窗体html 公告 源码原理和步骤。如果你要学VC#,码窗码那你得先学C#,体代离做一个windows这样窗口程序比较远,而且也不知道它生成的原理,当然既然c和c++学的不错的话,c#入门也不难。bottle 源码分析

       如下是一个窗体生成的windows源码:

       /*--------------------------------------

       CLOCK.C -- Analog Clock Program

       (c) Charles Petzold, 

       --------------------------------------*/

       #include <windows.h>

       #include <math.h>

       LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

       int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

                           PSTR szCmdLine, int iCmdShow)

       {

        static TCHAR szAppName[] = TEXT ("Clock") ;

        HWND         hwnd;

        MSG          msg;

        WNDCLASS     wndclass ;

       

        wndclass.style         = CS_HREDRAW | CS_VREDRAW ;

        wndclass.lpfnWndProc   = WndProc ;

        wndclass.cbClsExtra    = 0 ;

        wndclass.cbWndExtra    = 0 ;

        wndclass.hInstance     = hInstance ;

        wndclass.hIcon         = NULL ;

        wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;

        wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

        wndclass.lpszMenuName  = NULL ;

        wndclass.lpszClassName = szAppName ;

       

        if (!RegisterClass (&wndclass))

        {

        MessageBox (NULL, TEXT ("Program requires Windows NT!"), 

        szAppName, MB_ICONERROR) ;

        return 0 ;

        }

       

        hwnd = CreateWindow (szAppName, TEXT ("GDI Test"),

        WS_OVERLAPPEDWINDOW,

        CW_USEDEFAULT, CW_USEDEFAULT,

        CW_USEDEFAULT, CW_USEDEFAULT,

        NULL, NULL, hInstance, NULL) ;

       

        ShowWindow (hwnd, iCmdShow) ;

        UpdateWindow (hwnd) ;

       

        while (GetMessage (&msg, NULL, 0, 0))

        {

        TranslateMessage (&msg) ;

        DispatchMessage (&msg) ;

        }

        return msg.wParam ;

       }

       LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

       {

        static HDC hdc;

        static PAINTSTRUCT ps;

        static COLORREF color;

        static UINT ixClient,iyClient;

        static RECT rtWindow , rtClient;

        switch (message)

        {

        case WM_CREATE :

        GetWindowRect( hwnd , &rtWindow );

        GetClientRect( hwnd , &rtClient );

        return 0 ;

        case WM_NCPAINT:

        hdc = GetWindowDC( hwnd );

        color = GetPixel( hdc ,  , 5 );

        SetBkColor( hdc , color );

        SetTextColor( hdc , RGB(,0,0) );

        TextOut( hdc ,  ,  , 

        "Editor : CM" , strlen("Editor : CM") );

        ReleaseDC( hwnd , hdc );

        return 0;

        case WM_SIZE :

        ixClient = LOWORD( wParam );

        iyClient = HIWORD( wParam );

        return 0 ;

       

        case WM_TIMER :

        return 0 ;

       

        case WM_PAINT :

        hdc = BeginPaint (hwnd, &ps) ; 

        TextOut( hdc ,  ,  , "Editor : CM" , strlen("Editor : CM") );

        EndPaint (hwnd, &ps) ;

        return 0 ;

       

        case WM_DESTROY :

        PostQuitMessage(0);

        return 0 ;

        }

        return DefWindowProc (hwnd, message, wParam, lParam) ;

       }

c#怎么实现打印windows窗体代码

       使用控件执行打印。实现打印的主要组件是“PrintDocument”控件。使用这个控件调用“Print”函数实现“PrintPage”事件。如下是常规命令:

       打印事件:

       private void tsmiPrint_Click(object sender, EventArgs e){

        printDialog1.Document = ThePrintDocument;

        string strTest = this.richTextBox1.Text;

        myReader = new StringReader(strTest);

        if (printDialog1.ShowDialog() == DialogResult.OK){

        this.ThePrintDocument.Print();

        }

       }

       打印页事件:

       private void ThePrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e){

        float linesPerPage = 0;

        float yPosition = 0;

        int count = 0;

        float leftMargin = e.MarginBounds.Left;

        float topMargin = e.MarginBounds.Top;

        string line = null;

        Font printFont = this.richTextBox1.Font;

        SolidBrush myBrush = new SolidBrush(Color.Black);

        linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics);

        while (count < linesPerPage && ((line = myReader.ReadLine()) != null)){

        yPosition = topMargin + (count * printFont.GetHeight(e.Graphics));

        e.Graphics.DrawString(line, printFont, myBrush, leftMargin, yPosition,

        new StringFormat());

        count++;

        }

        if (line != null)

        e.HasMorePages = true;

        else

        e.HasMorePages = false;

        myBrush.Dispose();

       }

        点击“Print”菜单将调用“PrintFile_Click”。这条线路首先访问PrintDialog对象以便文档准备打印。使用“ShowDialog”对话框以便用户能够设置打印属性并决定是服务 供求 源码否需要打印。在调用“ThePrintDocument.Print方法”后将开始打印过程。系统自动调用“PrintPage”事件打印需要的页面信息。“PrintPageEventArgs”参数“ev”包含打印设备内容,“ev.Graphics”用户绘制打印机。在这个例子中我们将从Rich Text Edit控件中使用StringReader逐行读取信息。 “StringReader”类类似“stream”一样处理字符串并可以以使用ReadLine方法从text edit控件中逐行读取信息。在线报警源码可以根据边框接收位置及字体的大小。我们感兴趣的是记事本可以预览打印机的字体长度,通过使用GetHeight方法(printFont.GetHeight(ev.Graphics()))获得打印机设备内容。因为在屏幕上字体的象素和打印机上的象素是不同的。“PrintPageEventArg”的“HasMorepages”表示连续读取“PrintPage”事件中读取在textbox中比当前页面多的行。

       打印预览:

       private void tsmiPrintView_Click(object sender, EventArgs e){

        try{

        string strText = this.richTextBox1.Text;

        myReader = new StringReader(strText);

        PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();

        printPreviewDialog1.Document = this.ThePrintDocument;

        printPreviewDialog1.ShowDialog();

        }catch (Exception exp){

        Console.WriteLine(exp.Message.ToString());

        }

       }

       示例及详细代码:/index.php?topic=.0

C#隐藏和显示窗体

       结论:在C#编程中,隐藏和显示窗体有多种方法,但推荐避免使用直接控制父窗体的显示隐藏,因为它可能导致用户体验不佳。以下是两种常见的操作方式:

       首先,一种常见的方法是让窗体A自行控制隐藏。在A的按钮事件中,可以编写如下代码:

       csharp

       this.Visible = false;

       Form2 f2 = new Form2();

       f2.ShowDialog(); // 不推荐使用 f2.Show(),因为这会导致父窗体A也显示

       this.Visible = true; // 当Form2关闭后,A窗体恢复可见

       另一种方法是让窗体B控制A的隐藏,A作为参数传递给B。在B中,创建一个显示方法ShowMe:

       csharp

       private Form fm = null;

       public void ShowMe(Form f)

       {

        fm = f;

        fm.Visible = false;

        this.Show();

       }

       // 在Form2的FormClose事件中,恢复父窗体A的可见性

       private void Form2_FormClose(object sender, FormCloseEventArgs e)

       {

        fm.Visible = true;

       }

       在A的按钮事件中,调用B的ShowMe方法:

       csharp

       Form2 f2 = new Form2();

       f2.ShowMe(this);

       然而,这种方式并不推荐用于实际项目,因为它可能导致用户界面操作不直观,不如使用向导类的方法更为优雅,能更好地处理这类窗口间的交互问题。

相关栏目:休闲