webブラウザを自作したい!(1)
今回はC#を用いてwebブラウザを作りたいと思います。
進捗があがり次第記事を書いていく形になると思いますし、完成形は考えて無いので(n)まで続きます。(どこまで続くかわからない)
それと、何故作るかというと...........作りたいからです。(理由はいらないですね)
基盤を作る
(1)なのでとりあえずは基盤というか、そんな感じのモノを作る。
今回作ったのは、実行したらgoogleに繋がるだけの代物。
UIなんて気にするな。↓の感じで。
タイトルバーの下のスペースはアドレスバーとか入れようかなって思って空けた。
ソースコード
using System; using System.Drawing; using System.Windows.Forms; namespace Webbrowser { class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run( new Browser() ); } } class Browser : Form { WebBrowser browser; public Browser() { browser = new WebBrowser() { Location = new Point( 0, 30 ), Size = new Size( 1200, 800 ) }; this.Controls.Add( browser ); this.Shown += new EventHandler( this.Browser_Load ); this.SizeChanged += new EventHandler( this.ReSized ); string url = "http://www.google.co.jp"; browser.Navigate( url ); } private void Browser_Load( object sender, EventArgs e ) { this.ClientSize = new Size( 1200, 830 ); this.Text = "My Browser"; } private void ReSized( object sender, EventArgs e ) { int width = this.ClientSize.Width; int height = this.ClientSize.Height; this.browser.Size = new Size( width, height - 30 ); } } }
こんな感じになった。クソコードっていうな
はい。
後々改造していくし、まだハリボテなので許して。
WebBrowser browser;
こいつはwebブラウザに必要な事(低レイヤの部分?)を全部まるっとやってくれるすごいやつだ!
これをAddするだけで表示ができちゃう!正直びっくりした。
コレに頼ればできちゃうけど、中身もちゃんと理解できるようになりたいですね.....。
まあ今は使えるものは使いましょっと^^
string url = "http://www.google.co.jp"; //urlをstring型変数に格納 browser.Navigate( url ); //urlをNavigateメソッドに渡す
WebBrowser.Navigate()は指定したURLに飛んでくれるメソッド。
圧倒的便利感。
//ウインドウのサイズが変更されたときに発火するメソッド private void ReSized( object sender, EventArgs e ) { int width = this.ClientSize.Width; //現在のウインドウの横幅を格納 int height = this.ClientSize.Height; //現在のウインドウの縦幅を格納 this.browser.Size = new Size( width, height - 30 ); //表示領域を現在のモノに更新 }
一応リサイズにも対応できるようにしたよ。