VB.NETを咥えてWindows.Formsをつつく1-足りないものは愛(コード)♪
Imports System
Imports System.Windows.Forms
Public Class FormProgram
Public Shared Sub Main()
Dim frm As Form = New Form()
frm.Show()
Application.Run(frm) 'ここに注目!
End Sub
End Class
じゃーん。たった1行のコードを加えるだけで何時もの挙動のフォームが表示されたピヨ♪やったね♪最近の若い人はこの感動分かるかな?分からないだろうなー?ということで、この1行がどれ程の意味をこめているのか分かってもらうためにWin32でフォームを表示するプログラムをお見せするピヨ♪覚悟はいい?心臓が悪いVBプログラマは注意してね。
#include
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM );
int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR lpCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS form;
static TCHAR appName[] = TEXT( "FormPiyo♪" );
TCHAR title[] = TEXT( "画面ピヨ♪" );
// ウィンドウ・クラスの登録
ZeroMemory( &form, sizeof( form ) );
form.lpfnWndProc = WndProc;
form.hInstance = hInst;
form.hIcon = LoadIcon( 0, IDI_APPLICATION);
form.hCursor = LoadCursor( 0, IDC_ARROW);
form.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
form.lpszClassName = appName;
if( !RegisterClass( &form) ) return 0;
// メイン・ウィンドウの作成
hWnd = CreateWindow(
appName,
title,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,
0,
hInst,
NULL);
ShowWindow( hWnd, nCmdShow);
UpdateWindow( hWnd );
// メッセージ・ループ
while( GetMessage( &msg, 0, 0, 0) ){
DispatchMessage( &msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch( uMsg){
case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hWnd, uMsg, wParam, lParam);
}
嗚呼、懐かしい。眩暈がしそうな量のコードだよね♪これを数行で実行できるなんてVB.NETは凄い生産だね。これもオブジェクト指向のお陰と言ってもいいとボクは思うピヨ♪ちなみに、このCのコードの方がいいと思ったVBプログラマが居たら今すぐC系言語をつつく事をお勧めするピヨ♪実はボクもこのCプログラムを見てときめいたからC系言語を楽習したんだ。
それはさておき、この生産性がオブジェクト指向のお陰といった理由は・・・次回へ続く♪