form1,form2,form3是form0的子表單。 主表單form0的工具列toolbar1中有三個按鈕Toolbutton1,Toolbutton2,Toolbutton3; 點擊Toolbutton1開啟form1子表單,點擊Toolbutton2開啟form2子表單,點擊Toolbutton3開啟form3子表單; 要加入什麼代碼,可以實現這樣的功能:
在我的《MDI表單相互調用一》文章中已經說明白了如何讓MDI視窗之間相互調用了。但是在上篇文章中使用的方法是用到了”參考型別“的基本特性,下面這種方法,我用類的定義來完成上述功能。一般來說,我不贊成大家使用我的第二種方法,這裡寫道的第二中方法只是和大家一起探討!我的第二種方法是(假設主視窗為Form1,子視窗為Form2)在主表單中什麼都不需要變化仍然使用如下代碼實現子表單顯示時,主表單隱藏:Form2 form2=new Form2(this);
我們在做winform應用的時候,大部分情況下都會碰到使用多線程式控制制介面上控制項資訊的問題。然而我們並不能用傳統方法來做這個問題,下面我將詳細的介紹。 首先來看傳統方法:public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender,
隱式類型轉換1. 混合算術運算中,最寬的類型為目標轉換類型 int x = 2.32+2; //2被提升為double型2. 賦值運算中,被賦值對象為目標轉換類型 int x = 2.32+2 //2被提升為double型後,相加為4.32 double再轉換為int, 賦值給x, 注意小數位直接捨去。3. 函數調用參數中 double sqrt(double); sqrt(2); //會將2轉為double型4. 函數調用傳回值中 double
指標要注意類型的對應,不要出現類似 int * 轉向 int 的操作。int **p = 0; //指向指標的指標,不讓它指向任何地方int *p1 = *p;int array[10];int *p1 = array; //數組名指定數組首地址int *p1 = &array[0]; //指向第一個元素對應的地址字串的常見操作:遍曆串int string_length(const char *st){ int cnt = 0; if(st)
string是C++標準類中的字串類,可以用它代替C風格的字串操作,來減少指標等底層因素引起的錯誤。使用string類,標頭檔引用#i nclude <iostream>#i nclude <string.h>#if _MSC_VER > 1020using namespace std;#endif 其中,主要是要引用std名字空間。定義string str;string str = "abcd";string str("abcd");string str2(
自己總是用VC平台來開發東西,但是有時候總是出這樣那樣的問題,在這裡把Visual C++開發工具與調試技巧整理摘錄如下,希望對大家有用,省去大家再去搜尋的煩惱。 1.如何在Release狀態下進行調試 Project->Setting=>ProjectSetting對話方塊,選擇Release狀態。C/C++標籤中的Category選General,Optimizations選Disable(Debug),Debut info選Program
#include<iostream>using namespace std;void quicksort(int a[],int low,int high){ int povit=a[low];//中樞標籤 int i,j; i=low; j=high; if(i>=j)//用於判斷退出 return; while(i<j) { while(i<high && povit<a[j])j--;
為了對一個類進行執行個體化,通常使用這個類的構成函數,但是有時候出現這類情況:幾個類實現了同一個介面,具有同樣的操作、返回了同樣的抽象類別型,不知道該為哪個類型建立對象,因為需要根據條件來控制對哪個類進行執行個體化,並且此時類的數量可能增減,介面卻是穩定的。我們需要Factory 方法模式! 我們遇見一個.NET中的經典執行個體就是列舉程式。Enumerator的 GetEnumerator()的方法是一個用了Factory
#include <string>//c:\Program Files\Common Files\System\ADO\msado15.dll#import "msado15.dll" no_namespace rename("EOF", "EndOfFile") using namespace std;int _tmain(int argc, _TCHAR* argv[]){ ::CoInitialize(NULL); _ConnectionPtr
轉自:http://hi.baidu.com/gaocher/item/e5aca502dade2898a2df4341string link = File.ReadAllText("database.txt");conn = new SqlConnection(link); try { conn.Open(); SqlCommand cmd = conn.CreateCommand();
函數指標是一個指向函數的指標,可以如下定義:int (*pfunc)(int, int);對這條語句的解釋是:先解釋(*pfunc),所以pfunc首先是一個指標;再解釋(int, int),pfunc指向一個函數,該函數的參數有兩個,都是整形;最後是傳回值。因此,如果定義了一個函數int max(int a, int b),我們就可以這樣使用函數指標了:pfunc = max; // 注意二者的傳回型別,需要一致函數指標與指標函數是不一樣的,後者是一個函數,其傳回值是一個指標,比如char *
平面中,兩直線不相交就平行,相交中又分垂直相交和非垂直相交,兩直線重合可認為是特殊的平行。C語言代碼如下:/* 兩直線的關係 * 平面中,兩直線不相交就平行 */int TwoLines(Line m, Line n){// 平行:A1/B1 = A2/B2if (m.A * n.B == m.B * n.A){// 兩直線斜率相同if (m.C * n.B == m.B * n.C)return 1;// 重合else return 2;// 平行}// 相交else{if (m.A * n.
忘了在那看到的了,寫到這,記錄一下 1)access2)fopen3)stat fstat?>>>>>應當使用函數access,標頭檔是io.h,原型: int access(const char *filename, int amode); amode參數為0時表示檢查檔案的存在性,如果檔案存在,返回0,不存在,返回-1。 這個函數還可以檢查其它檔案屬性: 06 檢查讀寫權限 04 檢查讀許可權
static_cast<目標類型>(標示符) 靜態類型轉換 char->int 隱式轉換 int->char 靜態轉換 多數情況下將void*轉換為其他指標dynamic_cast<目標類型>(標示符) 動態類型轉換 在具有多態特性的父子類之間進行轉換reinterpret_cast<目標類型>(標示符) 重解釋類型轉換 在任意類型的指標或類型之間進行轉換,甚至可以在指標和整型之間進行轉換const_cast<目標類型>(標示符)
ODBC(Open Database Conectivity)即開放式資料庫互聯,作為Windows開放性結構的一個重要部分已經為很多的Windows程式員所熟悉,ODBC的工作依賴於資料庫製造商提供的驅動程式,使用ODBC API的時候,Windows的ODBC管理程式,把資料庫訪問的請求傳遞給正確的驅動程式,驅動程式再使用SQL語句指示DBMS完成資料庫訪問工作,因此,ODBC的存在為我們開發應用程式資料庫程式提供了非常強大的能力和靈活性。----
#i nclude <stdio.h>#i nclude <dos.h>#i nclude <conio.h>#i nclude <graphics.h>#i nclude <stdlib.h> #ifdef __cplusplus #define __CPPARGS ...#else#define __CPPARGS#endif#define MINBOXSIZE 15 /* 最小方塊的尺寸 */#define BGCOLOR 7
求點P(x0, y0)關於直線Ax+Bx+C=0的對稱點M(x1, y1),滿足兩個條件:(1)線段PM的中點在直線上(2)PM與直線垂直/* 點關於直線的對稱點 */Point SymmetricalPoint(Point p, Line l){Point s;double tmp = l.A * l.A + l.B * l.B;s.x = (l.B *l.B*p.x - l.A*l.A*p.x - 2*l.A*l.B*p.y - 2*l.A*l.C) / tmp;s.y =
求平面中兩直線的交點,當兩直線不平行時,必定只有一個交點。/* 返回兩直線的交點 */Point LinesIntersection(Line m, Line n, int *flag){double d = n.A * m.B - m.A * n.B;if (d == 0){*flag = 0;return;}Point i;i.x = (n.B * m.C - m.B * n.C) / d;i.y = (m.A * n.C - n.A * m.C) / d;*flag = 1;return