windows编程技术18C_窗体编程
用c语言编写一个windows窗口,Windows窗口创建代码(C语言)
⽤c语⾔编写⼀个windows窗⼝,Windows窗⼝创建代码(C语⾔)这是⼀个使⽤C语⾔创建空⽩窗⼝的基本框架代码案例。
#include#include//窗体备⽤HWND g_hwnd;HINSTANCE g_hInstance;//过程函数LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){switch (uMsg){case WM_DESTROY://销毁窗体PostQuitMessage(0);break;default:return DefWindowProc(hwnd, uMsg, wParam, lParam);}return 0;}//主函数int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrecInstance, LPSTR lpCmdLine, int nCmdShow){//定义填充窗⼝WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_VREDRAW | CS_HREDRAW;wcex.lpfnWndProc = WinProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);wcex.lpszMenuName = NULL;wcex.lpszClassName = TEXT("WinApp");wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);//注册窗⼝类if (!RegisterClassEx(&wcex)){return 0;}g_hInstance = hInstance;//创建窗⼝HWND hwnd;if (!(hwnd = CreateWindowEx(0, TEXT("WinApp"), TEXT("HelloWord"), WS_OVERLAPPEDWINDOW, 0, 0, 800, 600, NULL, NULL, hInstance, NULL))){return 0;}g_hwnd = hwnd;//显⽰更新窗⼝ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);//消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}。
Windows界面编程
GUI程序执行环境 7.3 GUI程序执行环境
在GUI(图形用户界面)中,用户与计算机 GUI(图形用户界面) 通过图形图像以及文本进行交互。 通过图形图像以及文本进行交互。在Windows 系统中,GUI程序显示出特定的窗口 图标、 程序显示出特定的窗口、 系统中,GUI程序显示出特定的窗口、图标、按 对话框等对象, 钮、对话框等对象,而用户通过鼠标或键盘控 操作这些对象。 制、操作这些对象。
模式 r w 打 开 方 式 a r+ w+ a+ 类 型 t b 说 明
以只读方式打开文件。 以只读方式打开文件。不能对该文件执行写操作 以只写方式打开文件。 以只写方式打开文件。文件中的原有内容被清除 以添加方式打开文件。文件中的原有内容被保留,在文件后面添加数据 以添加方式打开文件。文件中的原有内容被保留, 以读写方式打开文件。 以读写方式打开文件。文件必须存在 以读写方式打开文件。 以读写方式打开文件。文件中的原有内容被清除 同“a”,可以读文件 , 文件类型为二进制文件 文件类型为文本文件
利用线程能够并发运行的特点,可以将一 利用线程能够并发运行的特点, 个应用程序内的具体操作分成若干个线程。 个应用程序内的具体操作分成若干个线程。 因此,采用多线程能够提高CPU CPU的使用效率 因此,采用多线程能够提高CPU的使用效率 发挥多CPU 超线程、多核系统的优势。 CPU、 ,发挥多CPU、超线程、多核系统的优势。
7.3.1 窗口
1. 窗口的创建 2. 窗口的销毁 3. 创建、销毁窗口的汇编语言程序 创建、
7.3.2 菜单
1. 2. 3. 4. 在资源文件中描述菜单内容 创建窗口类指定菜单名 处理菜单消息 编译连接
7.3.3 对话框
1. 对话框的子窗口控件 2. 子窗口控件之间的控制 3. 消息处理
用c语言创建windows窗口
⽤c语⾔创建windows窗⼝耐得住寂寞,禁得起诱惑,这就是程序⼈⽣步骤:1.在WinMain中定义各种变量2.注册窗⼝类RegisterClass3.创建窗⼝CreateWindow4.显⽰窗⼝和更新窗⼝ShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ;5.消息循环while (GetMessage (&msg, NULL, 0, 0)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}1 #include <windows.h>2345 LRESULT CALLBACK MyProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);6789int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )1011 {1213 MSG msg;1415 HWND hwnd;1617static TCHAR szAppName[] = "hl";18192021 WNDCLASS wndclass;2223 wndclass.style = CS_HREDRAW | CS_VREDRAW;2425 wndclass.cbClsExtra = 0;2627 wndclass.cbWndExtra = 0;2829 wndclass.lpfnWndProc = MyProc;3031 wndclass.hInstance = hInstance;3233 wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);3435 wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);3637 wndclass.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);3839 wndclass.lpszMenuName = NULL;4041 wndclass.lpszClassName= szAppName;42434445if(!RegisterClass(&wndclass))4647 {4849 MessageBox(NULL,TEXT("error"),TEXT("title"),MB_ICONERROR);5051return0;5253 }5455 hwnd = CreateWindow(szAppName,5657 TEXT("Hello"),5859 WS_OVERLAPPEDWINDOW,6061 CW_USEDEFAULT,6263 CW_USEDEFAULT,6465 CW_USEDEFAULT,6667 CW_USEDEFAULT,6869 NULL,7071 NULL,7273 hInstance,7475 NULL7677 );7879 ShowWindow(hwnd,nShowCmd);8081 UpdateWindow(hwnd);82838485while(GetMessage(&msg,hwnd,0,0))8687 {8889 TranslateMessage(&msg);9091 DispatchMessage(&msg);9293 }9495return msg.wParam;9697 }9899100101 LRESULT CALLBACK MyProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) 102103 {104105106107switch(message)108109 {110111case WM_DESTROY:112113 PostQuitMessage(0);114115return0;116117 }118119return DefWindowProc(hwnd,message,wParam,lParam);120121 }。
windows程序设计概论
windows程序设计概论Windows程序设计概论Windows程序设计是指在Windows操作系统上开发应用程序的过程。
Windows操作系统是目前全球使用最广泛的操作系统之一,因此Windows程序设计也是非常重要的一项技能。
Windows程序设计的基础是掌握Windows操作系统的基本知识,包括Windows操作系统的架构、文件系统、进程管理、内存管理、网络通信等方面的知识。
此外,还需要掌握Windows API的使用方法,Windows API是Windows操作系统提供的一组函数和数据结构,可以用来访问操作系统的各种功能。
在Windows程序设计中,常用的编程语言包括C++、C#、Visual Basic等。
其中,C++是一种面向对象的编程语言,可以使用Windows API和MFC(Microsoft Foundation Classes)等框架进行Windows程序设计;C#是一种基于.NET框架的编程语言,可以使用Windows Forms和WPF(Windows Presentation Foundation)等框架进行Windows程序设计;Visual Basic是一种基于COM (Component Object Model)的编程语言,可以使用Windows Forms和WPF等框架进行Windows程序设计。
在Windows程序设计中,常见的应用程序包括桌面应用程序、游戏、多媒体应用程序、网络应用程序等。
桌面应用程序是指在Windows桌面上运行的应用程序,如文本编辑器、图像处理软件、办公软件等;游戏是指在Windows上运行的各种游戏,如角色扮演游戏、射击游戏、赛车游戏等;多媒体应用程序是指在Windows上播放音频和视频的应用程序,如音乐播放器、视频播放器等;网络应用程序是指在Windows上进行网络通信的应用程序,如浏览器、邮件客户端等。
Windows程序设计的开发工具包括Visual Studio、Code::Blocks、Dev-C++等。
c语言编写窗体程序
c语言编写窗体程序C语言编写窗体程序序号:1窗体程序是一种图形用户界面(GUI)应用程序,它通过使用窗口、按钮、文本框等可视化元素来与用户进行交互。
C语言是一种通用的编程语言,它也可以用于编写窗体程序。
虽然C语言相对于其他专门用于GUI开发的语言来说,可能会更加复杂一些,但是通过使用合适的库和工具,我们仍然能够编写出功能强大且高质量的窗体程序。
本文将介绍如何使用C语言编写窗体程序,并探讨一些相关的主题和概念。
序号:2编写窗体程序需要选择一个适合的库或框架。
在C语言中,有一些常用的库可以用于GUI开发,例如GTK+、Qt和WinAPI等。
这些库为我们提供了创建窗体、按钮等控件以及处理用户输入的功能。
需要根据自己的需求和偏好选择合适的库。
序号:3一种常用的库是GTK+,它是一个跨平台的GUI库,可以在多个操作系统上运行。
使用GTK+编写窗体程序可以很容易地创建各种控件,并通过信号和回调函数处理用户输入。
GTK+库的安装和配置相对简单,可以在Linux、Windows和Mac等平台上使用。
接下来是一个使用GTK+库编写的简单窗体程序的示例:```c#include <gtk/gtk.h>static void on_button_clicked(GtkWidget *widget, gpointer data) {g_print("Hello, World!\n");}int main(int argc, char *argv[]){gtk_init(&argc, &argv);GtkWidget *window;GtkWidget *button;window = gtk_window_new(GTK_WINDOW_TOPLEVEL);button = gtk_button_new_with_label("Click Me");g_signal_connect(button, "clicked",G_CALLBACK(on_button_clicked), NULL);g_signal_connect(window, "destroy",G_CALLBACK(gtk_main_quit), NULL);gtk_container_add(GTK_CONTAINER(window), button);gtk_widget_show_all(window);gtk_main();return 0;}```序号:4在上述示例中,我们首先包含了GTK+库的头文件,并定义了一个按钮点击事件的回调函数`on_button_clicked`。
C_Winform程序设计1Windows窗体介绍
创建窗体 为窗体添加控件 创建继承窗体 组织窗体上的控件 窗体的用途:自定义窗口 窗体的用途:创建多文档界面应用程序
Windows 窗体和 Web 窗体
创建窗体 设置窗体属性 窗体生命周期 处理窗体事件 Windows 窗体设计器生成的代码
特点
部署 图形
平台 编程模型 安全性
在其代码访问安全性实现中使用 通过验证请求者的凭据, 粒度权限,以保护计算机资源和 按URL控制获得访问Web应用 敏感信息 程序资源的授权
创建一个新的项目的同 时也创建了一个窗体
创建一个新窗体
1.
在解决方案资源管理 器中右键点击 “项 目”
单击“添加” 单击“添加Windows 窗体”
Windows窗体
可不必改注册表运行 GDI+
Web窗体
不需要下载和安装 交互或动态图形的更新需 要往返于服务器
响应
为需要交互的应用程序提供最快 可以利用浏览器的动态 的响应速度 HTML(DHTML)功能来创建丰 富的用户界面(UI)
要求在客户计算机上运行 .NET Framework 基于客户端Win32消息模式 只需浏览器 通过HTTP调用应用程序组 件
SDI
MDI
只有一个文档是可见的 打开一个文档之前,你必须关 闭另一个
同时显示多个文档 每个文档显示在它自己的窗口 中
• 创建一个父窗体
– 创建一个新项目 – 设置IsMdiContainer属性为True – 添加一个菜单项,来触发子窗体
• 创建一个子窗体
– 向项目添加一个新的窗体
• 从父窗体调用子窗体
2. 3.
窗体名:项目中窗体的名称
用C语言写windows窗体程序
很多学C的朋友认为C语言只能写DOS程序,而不能像C#那样写windows窗体的程序,这你可就打错特错了,今天我来简单掩饰下C语言怎么利用windows提供出来的API写windows窗体程序。
开发工具VC6.0,开发平台windows7。
首先第一步,打开VC,新建工程,选择win32 application,如下图然后新建一个C语言源文件,这个就不截图了,如果这也不会的话相信你也不会来看这篇帖子~呵呵建好文件以后把一下代码输入进去。
编译即可~代码讲解会下帖子下方1.#include <windows.h>2.3.LRESULT CALLBACK Windo WP roc(4. HWND hwnd, //handle to window5. UINT uMsg, //message identifier6. WPARAM wParam, //first message parameter7. LPARAM lParam //second message parameter8. );9.10.11.int WINAPI WinMain(HINSTANCE hInstance,12. HINSTANCE hPrevInstance,13. L PS TR lpCmdLine,14. int nShowCmd15. )//入口函数16.{17. WNDCLASS wndclass;18. HWND wndhwnd;19. MSG msg;20. wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载图标21. wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//加载鼠标样式22. wndclass.style=CS_VREDRAW | CS_HREDRAW;//窗口样式23. wndclass.lpfnWndProc=WindowProc;//窗口过程回调函数24. wndclass.cbClsExtra=0;//类额外内存25. wndclass.cbWndExtra=0;//窗口额外内存26. wndclass.hInstance=hInstance;//27. wndclass.hbrBackground=(HBRUSH)GetStockObject(SYSTEM_FONT);//窗口颜色28. wndclass.lpszMenuName=NULL;//窗口菜单29. wndclass.lpszClassName="testWindow";//窗口类名30.31. RegisterClass(&wndclass);32. wndhwnd=CreateWindow("testWindow","windows",WS_OVERLAPPEDWINDOW& ~WS_MAXIMIZEBOX,33. CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,34. NULL,NULL,hInstance,NULL);35. ShowWindow(wndhwnd,SW_SHOWNORMAL);36. UpdateWindow(wndhwnd);37. while(GetMessage(&msg,NULL,0,0))38. {39. TranslateMessage(&msg);40. DispatchMessage(&msg);41. }42.43. return 0;44.}45.46.LRESULT CALLBACK WindowProc(47. HWND hwnd, //handle to window48. UINT uMsg, //message identifier49. WPARAM wParam, //first message parameter50. LPARAM lParam //second message parameter51. )52.{53. HDC hdc,hDC;54. PAINTSTRUCT ps;55. char szchar[20];56. static int i=0;57. switch (uMsg)58. {59. case WM_PAINT://窗口重绘消息,窗口加载和重绘的时候产生该消息60. hdc=BeginPaint(hwnd,&ps);61. TextOut(hdc,0,0,"窗口加载完成",strlen("窗口加载完成"));//往窗口输出文本62. //MessageBox(hwnd,"Hello World","Hi",MB_OK);63. EndPaint(hwnd,&ps);64.65. break;66. case WM_CHAR://处理键盘按键消息67. sprintf(szchar,"char is %c",wParam);68. MessageBox(hwnd,szchar,"提示",MB_OK);69. break;70. case WM_LBUTTONDOWN://处理鼠标左键按下消息71. MessageBox(hwnd,"mouse click","提示",MB_OK);72. hDC=GetDC(hwnd);73. TextOut(hDC,0,50,"鼠标事件处理时显示文字",strlen("鼠标事件处理时显示文字"));74. ReleaseDC(hwnd,hDC);75. break;76. case WM_CLOSE://窗口关闭消息77. if(IDYES==MessageBox(hwnd,"你确定要关闭吗?","提示",MB_YESNO))78. DestroyWindow(hwnd);79. break;80. case WM_DESTROY:81. PostQuitMessage(0);82. break;83. default:84. return DefWindowProc(hwnd,uMsg,wParam,lParam);//使用缺省值来调用窗口过程函数85. }86. return 0;87.}复制代码要说明的事,windows程序必须包含的头文件就是windows.h,而程序的入口函数叫做WinMain(dos的入口函数叫main),如果搞不清有几个参数,参数怎么写,可以查阅MSDN,WindowProc函数是窗口过程函数,也就是处理窗口消息的函数;先来看winamin函数内部,首先定义了一个WNDCLASS类型的数据,这个类型是windows 提供出来的结构体,他里面有10个成员。
WINDOWS程序设计
WINDOWS程序设计Windows程序设计是一门非常重要的计算机科学领域,用于开发运行在Windows操作系统上的应用程序。
它可以涵盖从简单的桌面应用程序到复杂的企业级应用程序的开发。
在过去的几十年中,Windows程序设计已经取得了巨大的发展和进步,为我们的日常生活和工作提供了方便和便利。
首先,我们来了解一些Windows程序设计的基本概念和原理。
Windows操作系统提供了一系列的应用程序编程接口(API),开发者可以通过这些API来获取操作系统的功能和资源。
这些API包括图形用户界面(GUI)API、文件和存储管理API、网络通信API等。
通过使用这些API,开发者可以实现用户界面的设计、文件的读写、数据库的操作、网络通信等功能。
在进行Windows程序设计时,开发者需要了解Windows操作系统的基本架构和工作原理。
Windows操作系统由内核(Kernel)和系统服务(System Services)组成。
内核负责管理计算机硬件和操作系统的核心功能,而系统服务则提供了更高级的功能,如内存管理、进程管理、文件系统等。
开发者可以通过使用Windows API来与内核和系统服务进行交互,实现自己的应用程序需求。
Windows程序设计的开发过程通常包括需求分析、系统设计、编码实现和测试等阶段。
需求分析阶段是在与用户和项目相关人员交流的基础上,明确应用程序的功能和需求。
系统设计阶段则是根据需求分析的结果来设计应用程序的结构和模块。
编码实现阶段是将设计的方案转化为实际的源代码,即编写程序。
测试阶段是通过对程序进行测试,验证其功能和性能是否符合预期。
除了以上的基本概念和原理之外,Windows程序设计还涉及到一些高级的技术和概念。
例如,多线程编程可以提高程序的并发性和响应能力。
用户界面设计可以提升应用程序的易用性和用户体验。
网络编程可以实现应用程序之间的通信和数据交换。
安全编程可以确保应用程序的安全性和可靠性。
Windows窗体程序的开发实验报告
精通C#与.NET4.0数据库开发实验报告实验题目:Windows窗体程序的开发专业计算机科学与技术学生XX班级学号教师指导单位日期一、实验目的1.学会在Visual Studio 2021中创立和运行窗体程序。
2.掌握Windows窗体的根本操作。
3.学会使用常用的Windows控件。
4.学会使用菜单和工具栏以及通用对话框。
二、实验环境.NET框架开发环境Visual Studio 2021三、实验内容例5-1、2:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid AddInputToLog(string input){this.tbLog.AppendText("\r\n" + input);this.tbLog.ScrollToCaret( );}privatevoid btnSubmit_Click(object sender, EventArgs e) {string input = this.tbInput.Text;this.AddInputToLog(input);this.tbInput.Clear( );}}例5-3、4:源代码:publicpartialclass FrmMain : Form{public FrmMain( ){Initializeponent( );}privatevoid btnSetProp_Click(object sender, EventArgs e){this.Text = "测试对话框";this.FormBorderStyle = FormBorderStyle.FixedDialog;this.BackColor = Color.Gray;this.WindowState = FormWindowState.Normal; this.MinimizeBox = false;this.Height = 200;this.Width = 400;this.TopMost = true;}private FrmMain _CurrFrm = null;privatevoid btnCreate_Click(object sender, EventArgs e){if(this._CurrFrm == null){this._CurrFrm = new FrmMain( );this._CurrFrm.Show( );}else{this._CurrFrm.Activate( );}}privatevoid btnClose_Click(object sender, EventArgs e){if (this._CurrFrm !=null){this._CurrFrm.Close( );this._CurrFrm = null;}}privatevoid FrmMain_Load(object sender, EventArgs e){}}例5-5:源代码:// label1参数设置bel1.AutoSize = true;bel1.BackColor = System.Drawing.Color.Red;bel1.Font = new System.Drawing.Font("楷体_GB2312",12F, System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));bel1.ForeColor = System.Drawing.Color.White;bel1.Location = new System.Drawing.Point(68, 43); = "label1";bel1.Size = new System.Drawing.Size(232, 16);bel1.TabIndex = 0;bel1.Text = "红底白字,楷体小四号, 无边框";bel1.Click += new System.EventHandler(bel1_Click);// label2参数设置bel2.AutoSize = true;bel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;bel2.Font = new System.Drawing.Font("幼圆",15F,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point,((byte)(134)));bel2.Location = new System.Drawing.Point(49, 79); = "label2";bel2.Size = new System.Drawing.Size(289, 22);bel2.TabIndex = 1;bel2.Text = "幼圆小三粗体, Single边框";bel2.Click += new System.EventHandler(bel2_Click); 例5-6:源代码:publicpartialclass Form1 : Form{privateint _Value = 0;//btnShowMsg的Click事件处理函数privatevoid btnShowMsg_Click(object sender, EventArgs e) {MessageBox.Show(string.Format("现在需要: {0} ", this._Value));}//“多一点〞按钮Click事件处理函数privatevoid btnAdd_Click(object sender, EventArgs e){this._Value++;this.lbRes.Text = string.Format("现在需要: {0} ", this._Value);}//“少一点〞按钮Click事件处理函数privatevoid btnSub_Click(object sender, EventArgs e){this._Value--;this.lbRes.Text = string.Format("现在需要: {0} ", this._Value);}}例5-7:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid buttons_CheckedChanged(object sender, EventArgs e) {string weeks = "";weeks += ckbWeek1.Checked ? "星期一" :"";weeks += ckbWeek2.Checked ? "星期二" : "";weeks += ckbWeek3.Checked ? "星期三" : "";weeks += ckbWeek4.Checked ? "星期四" : "";weeks += ckbWeek5.Checked ? "星期五" : "";weeks += ckbWeek6.Checked ? "星期六" : "";weeks += ckbWeek7.Checked ? "星期日" : "";string sport = "";sport += rbSword.Checked ? "击剑" : "";sport += rbJump.Checked ? "跳水" : "";sport += rbTiCao.Checked ? "体操" : "";string jiangpai = "";jiangpai += rbGold.Checked ? "金牌" : "";jiangpai += rbSliver.Checked ? "银牌" : "";jiangpai += rbTong.Checked ? "铜牌" : "";this.lbHint.Text = weeks + sport + jiangpai;}}例5-8:源代码:publicpartialclass Form1 : Form{privatevoid Form1_Load(object sender, EventArgs e){this.mtbMobile.Mask = ""; //手机:13后面9个必填数字this.mtbPhone.Mask = "00"; //:4位必填区号,7或8位?this.tbName.Text = "";this.tbUsers.Text = "";}privatevoid btnAdd_Click(object sender, EventArgs e){string usr = string.Format("<{0}>:<{1}>:<{2}>", //产生用户信息this.tbName.Text,this.mtbPhone.Text,this.mtbMobile.Text);//添加到用户记录文本框¨°this.tbUsers.AppendText(usr + System.Environment.NewLine);this.mtbMobile.Text = ""; //清空用户信息this.mtbPhone.Text = "";this.tbName.Text = "";}}例5-9:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid Form1_Load(object sender, EventArgs e){//设置cmbHouXuan只能从boBox中的已有候选值选择this bHouXuan.DropDownStyle = boBoxStyle.DropDownList; //lstResult只能执行单项选择,并且对所有值进展排序this.lstResults.SelectionMode = SelectionMode.One;this.lstResults.Sorted = true;this.GeneratebItems( ); //产生boBox中D的可选项}privatevoid GeneratebItems( ){this bHouXuan.Items.Clear( ); //移除原有的数据Random rd = new Random();for (int i = 0; i < 10; i++) //随机生成10个新的数据{string item = string.Format("Item-{0:X8}", rd.Next( ));this bHouXuan.Items.Add(item); //添加到boBox中}this bHouXuan.SelectedIndex = 0; //默认选中第一条}//重新生成boBox中的侯选项privatevoid btnFresh_Click(object sender, EventArgs e){this.GeneratebItems( ); //重新生成bBox中的候选项}//将bBox中选中值¦添加到ListBox中Dprivatevoid btnAddOne_Click(object sender, EventArgs e){//通过boBox.SelectedItem获取当前选中的候选项,然后添加到ListBox中Dstring item = (string)this bHouXuan.SelectedItem;this.lstResults.Items.Add(item);}//从ListBox中移除当前选中项privatevoid btnRemoveOne_Click(object sender, EventArgs e){if (this.lstResults.SelectedIndex >= 0) //如果当前ListBox中有选中条目,移除它{this.lstResults.Items.RemoveAt(this.lstResults.SelectedIndex);}}//从ListBox中移除所有项privatevoid btnRemovAll_Click(object sender, EventArgs e){this.lstResults.Items.Clear( );}}例5-10:源代码:privatevoid btnMsgBox_Click(object sender, EventArgs e){MessageBox.Show("这是第一个消息框,只有确认按钮");//显示最简单的MessageBoxMessageBox.Show("这是二个消息框¨,有标题,只有确认按钮", "第二个消息框");//显示有文本和标题的MessageBox//显示具有文本、标题、确定和取消按钮的MessageBoxMessageBox.Show("这是第三个消息框¨,有标题,只有确认和¨取消按钮","第三个消息框", MessageBoxButtons.OKCancel);//显示具有文本、标题、确定和¨取消按钮、告警图标的MessageBox MessageBox.Show("这是第四个消息框¨,有标题,只有确认和取消按钮,告警图标", "第四个消息框", MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);}例5-11:源代码:private void btnOpenFile_Click(object sender, EventArgs e){OpenFileDialog ofdlg = new OpenFileDialog( );//创立OpenFileDialog对象ofdlg.Filter = "文本文件(*.txt)|*.TXT|Word文件(*.doc)|*.DOC"; //只选择TXT和DOC 扩展名文件ofdlg.Title = "选择文本文件或Word文件"; //设置对话框的标题if(ofdlg.ShowDialog() == DialogResult.OK) //显示对话框,并等待返回{this.tbOpenFileName.Text = ofdlg.FileName; //如果用户选择了文件那么显示到界面}else{this.tbOpenFileName.Text = "还没有选择要翻开的文件"; //没有选择文件,那么显示默认提示}}例5-12:源代码:private void btnSetColor_Click(object sender, EventArgs e){ColorDialog cdlg = new ColorDialog( ); //创立ColorDialog对象cdlg.Color = btnSetColor.ForeColor; //设置默认颜色为btnSetColor当前前风光if (cdlg.ShowDialog( ) == DialogResult.OK) //显示对话框,并等待返回{this.btnSetColor.ForeColor = cdlg.Color; //选择了新的颜色,那么更新btnSetColor前风光}}例5-13:源代码:private void btnSetFont_Click(object sender, EventArgs e){FontDialog fdlg = new FontDialog( ); //创立FontDialog对象fdlg.Font = btnSetFont.Font; //设置默认字体为btnSetFont当前字体if (fdlg.ShowDialog( ) == DialogResult.OK) //显示对话框,并等待返回{this.btnSetFont.Font = fdlg.Font; //选择了新的字体,那么更新btnSetFont的字体}}四、实验总结通过此次实验,我学会了在Visual Studio 2021中创立和运行窗体程序;也掌握了Windows窗体的根本操作;学习使用了常用的Windows控件;同时学会了使用菜单和工具栏以及通用对话框。
c#Windows窗体应用程序设计
一个Windows应用程序可以包含多个窗体。
窗体类型 在C#中,窗体分为如下两种类型: (1)普通窗体,也称为单文档窗体(SDI),前面所有创建的窗体均为普
通窗体。普通窗体又分为如下两种: ● 模式窗体。这类窗体在屏幕上显示后用户必须响应,只有在它关闭后才
Program.cs文件 :
using System; using System.Collections.Generic; using System.Windows.Forms; namespace Proj8_1 { static class Program
{ /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); //启动窗体为Form1 }
///否则为false。</param>
protected override void Dispose(bool disposing) //重写基类Dispose()方法
{ if (disposing && (components != null))
{
components.Dispose();
} base.Dispose(disposing); //调用基类的Dispose()方法
windows窗体应用程序设计实验报告
windows窗体应用程序设计实验报告Windows窗体应用程序设计实验报告一、实验目的本次实验的主要目的是让学生掌握Windows窗体应用程序的设计方法和技巧,了解Windows窗体应用程序的基本结构和运行原理,能够熟练使用Visual Studio等开发工具进行程序设计和调试。
二、实验内容本次实验的主要内容包括以下几个方面:1. 熟悉Windows窗体应用程序的基本结构和运行原理。
2. 学习使用Visual Studio等开发工具进行程序设计和调试。
3. 设计一个简单的Windows窗体应用程序,实现基本的界面设计和功能实现。
三、实验步骤1. 熟悉Windows窗体应用程序的基本结构和运行原理。
Windows窗体应用程序是一种基于Windows操作系统的图形用户界面应用程序,它采用了Windows窗体技术,可以实现丰富的用户界面和交互功能。
Windows窗体应用程序的基本结构包括窗体、控件、事件等,其中窗体是应用程序的主界面,控件是窗体中的各种元素,事件是控件与用户交互的响应动作。
Windows窗体应用程序的运行原理是通过.NET Framework提供的Windows Forms 类库实现的,它可以在Windows操作系统上运行,并且可以与其他.NET应用程序进行交互。
2. 学习使用Visual Studio等开发工具进行程序设计和调试。
Visual Studio是一款强大的集成开发环境,可以支持多种编程语言和应用程序类型的开发。
在本次实验中,我们使用Visual Studio 进行Windows窗体应用程序的设计和调试。
具体步骤如下:(1)打开Visual Studio,选择“新建项目”,选择“Windows 窗体应用程序”,命名为“HelloWorld”。
(2)在窗体中添加一个标签控件,设置其文本为“Hello World!”。
(3)在窗体中添加一个按钮控件,设置其文本为“点击我”。
(4)在按钮的Click事件中添加代码,使得点击按钮时标签的文本发生变化。
Windows窗体界面设计
= "Form3";
fm.Show();
}
6
1.2 单文档窗体(SDI)与多文档窗体(MDI)
(5) 添加“关闭Form2”、“关闭Form3”事件: private void 关闭Form2ToolStripMenuItem_Click(……) { Form[] mdiChildren = this.MdiChildren; foreach(Form fm in mdiChildren) { if ( == "Form2") fm.Close(); } } private void 关闭Form3ToolStripMenuItem_Click(……) { Form[] mdiChildren = this.MdiChildren; foreach (Form fm in mdiChildren) { if ( == "Form3") fm.Close(); } }
2 Windows窗体基本控件
9
2.1 控件中常用的属性和方法 1.常用基本属性
除了书上讲的属性外,还要注意以下属性的用法: 1) (Name):指定控件的名称,它是控件在当前应用程序中的
唯一标识,代码通过该属性来访问控件 2) Enabled:决定控件是否可用,取值为true时可用,取值
为false时不可用 3)Anchor属性:保持控件与边框的距离不变 4)Dock属性:让控件始终紧靠边框
label1.Parent = pictureBox1; pictureBox2.Parent = pictureBox1; 则label1和PictureBox2相对于PictureBox1是透明的, 而PictureBox1相对于窗体Form1是透明的。
使用C进行Windows桌面应用程序开发
使用C进行Windows桌面应用程序开发Windows桌面应用程序是指能够在Windows操作系统上运行的软件应用程序,通常具有图形用户界面(GUI)且能够提供丰富的功能和交互性。
开发Windows桌面应用程序可以使用多种编程语言,其中C语言是一种常用且强大的选择。
本文将介绍使用C语言进行Windows桌面应用程序开发的基本步骤和相关注意事项。
一、Windows桌面应用程序开发环境的准备在进行Windows桌面应用程序开发之前,首先需要搭建相应的开发环境。
以下是搭建C语言开发环境的基本步骤:1. 安装C编译器:C语言是一种编译型语言,因此需要安装相应的C编译器。
常用的C编译器有GCC和Visual Studio等。
GCC是一款开源的免费编译器,而Visual Studio是微软官方提供的一套集成开发环境(IDE),其中包含了C编译器。
2. 配置开发环境:根据选择的C编译器进行相应的环境配置。
对于GCC,可以通过在命令行中输入gcc命令来进行编译和链接操作。
对于Visual Studio,可以在IDE中创建一个新的C项目,并在项目设置中进行相关配置。
二、Windows桌面应用程序的开发流程在搭建好开发环境后,可以开始进行Windows桌面应用程序的开发。
下面是一个基本的开发流程:1. 确定应用程序需求:在开始开发之前,首先需要明确应用程序的需求和功能。
考虑应用程序的用途、目标用户以及所需的功能和界面设计,有助于后续的开发工作。
2. 编写代码:使用C语言编写应用程序的功能代码。
在编写代码时,可以利用C语言的丰富库函数来实现各种功能,比如文件操作、网络通信、图形界面等。
同时,还可以使用相关的开发工具和框架来简化开发过程。
3. 进行编译和调试:使用C编译器对代码进行编译,并进行调试。
编译过程会将源代码转换为可执行文件,检查并修复代码中的错误和问题。
调试过程是为了定位并解决代码中的BUG(程序错误),可以通过逐步执行、设置断点和查看变量值等方式进行。
CSharp窗体编程
项 目 目 录 还 自 动 包 含 了 一 个 存 放 项 目 属 性 的 Proporties 目 录 , 包 含 如 下 文 件 : Settings.settings(项目设置,XML 文件)、Resources.resx(资源)、AssemblyInfo.cs(程序集 代码)和 Resources.Designer.cs(资源设计代码)。
Component
{ static class Program
Control
{ /// <summary> /// 应用程序的主入口点。
ScrollableControl ContainerControl
/// </summary> [STAThread]
Form
static void Main() {
MarshalByRefObject
ColorDialog FontDialog
Pen Component
CommonDialog
PrintDialog FileDialog
HatchBrush TextureBrush SolidBrush Control Timer ToolStripItem OpenFileDialog
的重载版为:public static void Run (Form mainForm) Exit 或 ExitThread ——停止消息循环。常用的重载版为:public static void Exit () EnableVisualStyles ——此方法为应用程序启用可视样式。如果控件和操作系统支
C#弹出窗体教程
弹出窗口杀手是一个可以自动关闭IE弹出窗口的程序,它工作在系统的托盘中,按照一定的间隔来检测IE窗口,然后关闭弹出窗体。
最后,还提供了用热键来杀掉弹出窗口的功能。
虽然已经有类似的用C++写的程序,但是本文讲述的是用C#来实现这些功能,并且本文所讲的方案在查找窗口上的方法要比更快一些。
这是一个崭新的话题,在Internet上我们还可以看到许多类似的程序。
但是我也还是要借这个机会来讲述一些下面的技术在C#中如何实现:系统托盘程序切换计时控件查找窗口系统热键生成一个系统托盘程序首先,产生一个新的C# Windows Form程序,将NotifyIcon控件从工具箱中拖到窗体中,如下图所示:在C# windows Form程序中添加托盘为了保证系统托盘的图标和应用程序的图标一致,我们用一个共同的图标文件a.ico来设置系统托盘的图标和应用程序的图标。
为了使程序不显示在工具栏上,我们可以设置窗体的visible属性为false. 这个可以在窗体属性窗口中直接实现。
this.ShowInTaskbar = false;到目前为止,系统托盘已基本好了,但是我们还没有设置右键菜单,也没有使程序显示和隐藏的功能。
程序切换首先,程序的主窗体可以根据不同的状态来选择显示或者是隐藏,除此之外,我们可以用WindowState设置窗体的状态:public void HideApp(){this.WindowState = FormWindowState.Minimized;Hide();}public void ShowApp(){Show();this.WindowState = FormWindowState.Normal;}一个非常有趣的功能是让用户关闭窗体的时候程序并不是退出,为了实现这个功能,我们必须要重写窗体的OnClosing事件。
protected override void OnClosing(CancelEventArgs e){// 用最小化来代替关闭操作de.Cancel = true;// 最小化,并且隐藏窗体this.WindowState = FormWindowState.Minimized;Hide();}当然,我们必须要提供一个必须的退出方法.这个可以在托盘的右键菜单的exit中实现,private void menu_App_Exit(object sender,System.EventArgs e){NativeWIN32.UnregisterHotKey(Handle,100);//隐藏托盘notifyIcon1.Visible = false;Application.Exit();}添加右键菜单添加一个右键菜单和添加托盘基本一样,从工具箱中添加context menu就可以.右键菜单在你鼠标右键按下的时候是会自动弹出的。
c++窗体应用程序实例
c++窗体应用程序实例一、概述本文档旨在介绍如何使用C语言和Windows窗体框架开发一个简单的窗体应用程序。
通过本实例,您将学习如何创建窗体、添加控件、设置属性、编写事件处理程序等基本操作。
二、开发环境1. 安装Visual Studio开发环境。
2. 确保已安装C语言编译器,如GCC或Clang。
三、步骤1. 创建新项目:打开Visual Studio,选择“文件”->“新建”->“项目”,选择“Windows窗体应用程序”。
为项目命名并设置存储位置,然后点击“创建”。
2. 设计窗体:在解决方案资源管理器中,双击窗体以打开设计器。
根据需要添加控件,如标签、文本框、按钮等。
3. 设置控件属性:使用属性面板或直接在代码中设置控件的属性,如位置、大小、字体、颜色等。
4. 编写事件处理程序:为控件的单击、双击、焦点改变等事件编写处理程序。
可以在设计器中直接为控件添加事件处理程序,或使用代码添加。
5. 添加代码逻辑:在事件处理程序中编写应用程序的逻辑,如数据验证、用户输入的处理等。
6. 调试与运行:使用调试器测试应用程序,确保其正常运行并达到预期效果。
点击“启动调试”运行应用程序。
7. 保存并发布:完成开发后,保存项目并选择发布方式(本地发布或在线发布)。
四、示例代码以下是一个简单的窗体应用程序的示例代码,包含一个标签、一个文本框和一个按钮。
当按钮被单击时,将显示文本框中的文本。
```c// Form1.h#pragma onceusing namespace System;using namespace System::Windows::Forms;public ref class Form1 : public Form{public:Form1(){// 初始化控件label1->Text = "输入文本:";textBox1->Location = Point(10, 10);textBox1->Multiline = true;button1->Location = Point(10, textBox1->Height + 10);button1->Text = "显示文本";button1->Click += gcnew EventHandler(this,&Form1::Button1_Click);}private:void Button1_Click(Object^ sender, EventArgs^ e){// 获取用户输入的文本String^ text = textBox1->Text;// 显示文本MessageBox::Show(text);}};[STAThread]int main(){Application::EnableVisualStyles();Application::Run(gcnew Form1());return 0;}```五、总结通过本实例,您学习了如何使用C语言和Windows窗体框架开发一个简单的窗体应用程序。
Windows编程基础(新手入门)
Windows编程基础(新手入门)Windows编程基础第1章基于Windows的编程方式有两种。
一种是使用Windows的API (Application Programming Interface,应用程序编程接口)函数,通常用C/C++语言按相应的程序框架进行编程。
这些程序框架往往就程序应用提供相应的文档、范例和软件开发工具包(Software Development Kit,SDK),所以这种编程方式有时又称为SDK方式。
另一种是使用“封装”方式,例如Visual C++的MFC方式,它是将SDK中的绝大多数函数、数据等按C++“类”的形式进行封装,并提供相应的应用程序框架和编程操作。
事实上,无论是哪种编程方式,人们最关心的内容有三个:一是程序入口,二是窗口、资源等的创建和使用,三是键盘、鼠标等所产生的事件或消息的接收和处理。
本章就来讨论这些内容。
学习编程往往从简单的例子入手,例如一个C程序常有下列简单的框架代码:#include <stdio.h>int main(){printf("Hello World!\n");return 0;} /* 输出 */ /* 指定返回值 */事实上,该程序已包括C程序中最常用的#include指令、必须的程序入口main函数、库函数printf调用和return语句。
由于此程序是在早期的DOS(Disk Operating System,磁盘操作系统)环境的字符模型下运行的,因而printf函数所输出的都是字符流,也就是说,它在屏幕上输出一行文本“Hello World!”。
在Windows环境下,这里的屏幕就由控制台窗口来兼作,而基于Windows的上述C程序代码框架肯定是有所不同的。
特别地,由于目前所在的Windows环境基本上都是32位,所以这里的Windows程序平台就是Win32,Windows编程可直接理解为是Win32编程。
Windows 控制面板编程
Windows 控制面板编程一、什么是控制面板打开Windows的控制面板会看到类似的图像图一双击其中的一个图标,会显示对话框,让用户来完成相应的软硬件设置工作。
这就是我们看到的控制面板。
那么如何开发控制面板程序呢?带着疑问在MSDN和google里搜索关键字“Control Panel”,就会找到相关的技术文章。
这是我工作的方法:借鉴已有的资源。
但实际情况是那样吗?我们可以跟着MSDN的讲述来一步一步深入下去。
经过挖掘,发现并不是exe文件(Windows Vista下支持exe的控制面板应用程序,并且微软建议做成exe文件),而是有着cpl后缀名的文件,在windows->system32下可以找到这样的文件。
如果借助工具,Dependency Walker for Win32 (x86) 或dumpbin等就可以看到该文件导出了一些函数。
图二多观察几个这样的文件,发现导出的函数虽有差异,但其中都有CPLApplet函数被导出。
这些特征与DLL的特征吻合。
去MSDN上查阅CPLApplet函数的说明证明我们的猜测是正确的。
可以说控制面板应该程序就是以CPL为后缀名并且一定要导出CPLApplet函数的dll文件。
对于具体的描述可以参考:/en-us/library/bb776838(VS.85).aspx二、明确几个概念l控制面板管理程序:用于管理控制面板的程序,在桌面windows版本是CONTROL.EXE,在windows CE版本是CTLPNL.EXE,它们负责管理控制面板里的控制面板条目。
简单的说,我们打开控制面板时,这些管理程序就在运行了。
只不过我们看到的是挂上了Shell外观而已(注:这是我的猜测,还没有找到依据)。
l控制面板条目(Control Panel Item):在控制面板里看到的每个图标所对应的就是一个控制面板条目。
l控制面板应用程序(Control Panel Application):就是最终看到的CPL文件,一个控制面板应用程序可以实现几个控制面板条目。
C语言窗口程序设计简介
C语言的窗口程序设计简介窗口程序设计是依赖操作系统平台的,以下分别介绍基于Windows平台和Linux平台的C语言窗口程序设计。
在Windows中,窗口是嵌入到内核的,编程时,使用自己平台独有的函数。
因此Windows程序都只能在Windows平台上运行。
Windows的C语言窗口程序设计使用Windows SDK。
/***********************************************文件名:Message.c*一个简单的消息提示框**********************************************///Windows程序都包含这个头文件#include <windows.h>//所有Windows程序的主函数入口 WinMain()函数,//相当于一般C语言程序的入口 main()函数int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow){//调用提示信息窗口APIMessageBox(NULL, //没有父窗口"在迷茫中追逐……\n在追逐中迷茫……", //提示信息内容"人生寂寞啊", //标题栏MB_OK | MB_ICONEXCLAMATION); //按钮和图标//退出程序return 0;} //==============WinMain函数结束==============使用wxDev-C++编译Windows的SDK程序,直接新建源文件,在连接器命令中输入:-lgdi32 –mwindows其中,gdi32是Windows SDK的链接库,-mwindows用来关闭命令行(DOS)窗口显示的。
运行结果:在Linux下,窗口是一个程序,而不是嵌入内核的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
18.1 创建窗体
下面我们以一个简单的窗体交互绘图程序FormDraw为例(参见图18-2),介绍用C# 编写简单窗体程序的全过程。
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
this.Text = "Form1";
}
#endregion
}
}
4.Application类
密封类Application也位于System.Windows.Forms.Form命名空间中,直接派生于System.Object。下面是它的定义:
18.1.1 创建窗体项目
打开“新建项目”对话框(参见图18-3),选左边“已安装的模板”栏的“其他语言\Visual C#”项,再选中间栏的“Windows窗体应用程序”模板。选择父目录位置后,输入项目名称“FormDraw”,去选“为解决方案创建目录”复选框,按“确定”钮关闭对话框。
图18-1 窗体编程中常用.NET类型的层次结构
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private ponentModel.IContainer components = null;
/// <summary>
using System.Windows.Forms;
namespace FormDraw
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
using System.Linq;
using System.Windows.Forms;
namespace FormDraw
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
作为应用程序的基本单元,窗体实质上只是一个(类似于对话框的)简单框架窗口,内含一块空白板(客户区)。开发人员可通过添加控件(包括菜单条、工具条、状态条、计时器和公用对话框等)来创建用户界面,并通过编写代码来操作数据,从而填充这个空白板。为此,Visual Studio提供了一个有助于编写代码的集成开发环境,以及一个针对.NET框架编程的丰富的控件集。通过使用代码来补充这些控件的功能,可以方便快捷地开发所需要的解决方案。
Application.Run(new Form1());
}
}
}
该文件中的代码主要是定义了Program类,它包含Main入口主程序。Main方法中最重要的语句为:
Application.Run(new Form1());
它创建窗体Form1对象,并以其为程序界面(主框架窗口)来运行窗体应用程序。
由于时间有限,本章只介绍C# 窗体编程一些基本内容。
相关帮助文档的位置:
* 窗体编程:“库主页\Visual Studio 2010\Visual Studio \创建基于Windows的应用程序\Windows 窗体”。
* .NET类库:“库主页\Visual Studio 2010\.NET Framework类库”中的System、System.Windows.Forms和System.Drawing等命名空间。
2.用户界面与工具箱 ห้องสมุดไป่ตู้
IDE会自动打开一个默认的名为“Form1”的空白窗体(Form1.cs[设计]),并打开对应的“工具箱”窗口,供程序员进行窗体设计,参见图18-4。
图18-4 C# 窗体编程界面
窗体设计所用的工具箱内容丰富,除了VB动力包(Visual Basic PowerPacks)栏(5种)、“报表”栏(1种)和“WPF互操作性”栏(1种)的工具外,其余所有可用的工具位于“所有Windows窗体”栏中(只是缺少了“数据”栏中VS2010新增加的“图表”工具),共有66种。其下各栏将这些工具分门别类地列出,包括:“公共控件”(21种)、“容器”(6种)、“菜单和工具栏”(5种)、“数据”(5种)、“组件”(14种)、“打印”(5种)和“对话框”(5种),共计62种,参见图18-5。只有DomainUpDown(域上下)、PropertyGrid(属性网格)、Splitter(拆分条)、HScrollBar(水平滚动条)、VScrollBar(垂直滚动条)和TrackBar(跟踪条)这5种工具没有包含在这些分类栏中。另外,在窗体编程中,工具栏的“对话框编辑器”栏和“常规”栏为空。
1)Program.cs
自动生成的Program.cs代码为:
a) 公共控件、容器 b) 菜单和工具栏、数据、组件 c) 打印、对话框、WPF互操作性、
报表、VB动力包
图18-5 窗体工具箱
using System;
using System.Collections.Generic;
* Exit 或 ExitThread ——停止消息循环。常用的重载版为:public static void Exit ()。
* EnableVisualStyles ——此方法为应用程序启用可视样式。如果控件和操作系统支持视觉样式,则控件将以视觉样式进行绘制。若要使EnableVisualStyles生效,必须在应用程序中创建任何控件之前调用它;EnableVisualStyles 通常是Main函数的第一行。当调用EnableVisualStyles时,无需单独的清单即可启用可视化样式。语法为:public static void EnableVisualStyles ()。
项目目录还自动包含存放项目的目标代码的obj目录和可执行程序的bin目录,这两个目录中都可包含Debug和/或Realse目录,分别存放具体的调试版和/或发行版的二进制程序代码。
项目目录还自动包含了一个存放项目属性的Proporties目录,包含如下文件:Settings.settings(项目设置,XML文件)、Resources.resx(资源)、AssemblyInfo.cs(程序集代码)和Resources.Designer.cs(资源设计代码)。
2)Form1.cs
代码文件Form1.cs包含了窗体部分类Form1的一部分定义,用于程序员编写事件处理代码,也是我们今后工作的主要对象。可以在“解决方案资源管理器”页中,选中“Form1.cs”项后,按鼠标右键,在弹出的浮动菜单中选“查看代码(C)”菜单项,来以源代码方式打开该文件。下面是该文件的初始代码:
第18章 C# 窗体编程
Windows窗体(Form,形状/表单)原来是Visual Basic程序的用户界面,后来成为.NET程序的GUI,被Visual Studio中的C#、Visual Basic、F#、MC++和C++/CLI等开发语言工具所使用,后来又从Visual C++ 2005起被引入到MFC编程中。
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
}
}
}
3)Form1.Designer.cs
代码文件Form1.Designer.cs包含了窗体部分类Form1的另一部分定义,用于存放系统自动生成的窗体设计代码。下面是该文件的初始代码:
namespace FormDraw
{
partial class Form1
1.项目目录和文件
Visual Studio会自动创建名为FormDraw的项目目录,在项目目录中,自动创建的文件有:项目文件——FormDraw.sln(解决方案)和FormDraw.csproj(C# 项目),代码文件——Program.cs(程序入口)、Form1.cs(窗体编程)和Form1.Designer.cs(窗体设计)。
{
ponents =
new ponentModel.Container();
this.AutoScaleMode =
System.Windows.Forms.AutoScaleMode.Font;
字体和颜色标明类型所在的命名空间,正常:System、粗体:System.Windows.Forms、
斜体:System.Drawing、粗斜体:System.Drawing.Drawing2D、灰色:ponentModel
图18-2 交互式窗体绘图程序