|
==== [ ▼PR ] ======================================================== ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ =★英会話・CPA・IT関連のスクールを【無料】受講できる★= =★キャリアアップ・ソリューション・キャンペーン実施中★= 有力企業からの求人情報も満載!キャリアアップを実現するチャンス =★プロフェッショナルのためのリクルーティングサイト:アジアネット★= http://216.71.100.246/b/a.cgi?k0530m0469 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ======================================================== [ ▲PR ] ==== 発行部数:MagMag 2278 Pubzine 312 カプライト211 Melten 30 E-Magazine 55 ここでメール 146 Macky 151 Melma 224 総発行部数:3410 ▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼ ------------------------------------------------------------ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ■CからはじめるWindowsDirectXへの道 Vol33■ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┌─────────────────────────────┐ ■第2章 Windows(情報 編) └─────────────────────────────┘ 今回は,簡単な情報の取得を行います. 次回からは,標準のコンボボックスなどの追加や取得などを 行っていきたいと思います. <<<<<<<<<< NEW >>>>>>>>>>>> また、今回からISDNや電話回線などを専門に扱う店の リンクを持ってきましたので,是非たずねてみてください. また、リンクスタッフなども募集されています. これからISDNやパソコンをルータにて接続する方には お勧めです.NTTの半額といった感じです. かなり安い価格に提供されています. ┌─────────────────────────────┐ 電話加入権激安!ISDNライトなら9800円で電話が引ける!?(株)コムズ ↓詳しくはここをクリック! <http://www.comzz.co.jp/cgi-bin/cookie/set.cgi?t=top&id=2543> └─────────────────────────────┘ ─────────────────────────────── ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● RGN 関連 ● 今回は、RGN について触れていきます. 関数などの説明は、サンプルのあとに乗せていきます。 それでは、コードを示していきたいと思います。 ┌─────────────────────────────┐ #include<windows.h> #undef WindowsName #define WindowsName "Windows" /* デバッグ用メッセージボックス */ void Mes(char*error); void Mes(char*error) { MessageBox(NULL,error,"Error",MB_OK); } HWND hwndMain; HINSTANCE hInst; BOOL fActive; LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { WNDCLASSEX wc; hInst=hInstance; wc.hInstance =hInstance; wc.lpszClassName=WindowsName; wc.lpszMenuName=WindowsName; wc.lpfnWndProc =WndProc; wc.cbSize =sizeof(WNDCLASSEX); wc.hbrBackground =(HBRUSH)GetStockObject(GRAY_BRUSH); wc.cbClsExtra =0; wc.cbWndExtra =0; wc.hIcon =(HICON)LoadIcon(NULL,IDI_APPLICATION); wc.hCursor=(HCURSOR)LoadCursor(NULL,IDC_ARROW); wc.style =CS_HREDRAW|CS_VREDRAW; wc.hIconSm =NULL; if(!(ATOM)RegisterClassEx(&wc)) { Mes("レジスタークラスに登録を失敗しました。または、WNDCLASSEXの初期化に失敗しました。") ; return 0; } hwndMain=CreateWindow( WindowsName, WindowsName, WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, 600, 320, NULL, NULL, hInstance, NULL); ShowWindow(hwndMain,nCmdShow); UpdateWindow(hwndMain); MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) { char strYourser[256]; char strTime[256]; DWORD dwBuf=256; PAINTSTRUCT ps; HDC hdc; SYSTEMTIME st; switch(message) { case WM_PAINT: hdc=BeginPaint(hwnd,&ps); GetUserName(strYourser,&dwBuf); TextOut(ps.hdc,0,0,strYourser,lstrlen(strYourser)); GetLocalTime(&st); wsprintf(strTime,TEXT("ローカル時刻 現在の日付=%d/%02d/%02d 現在の時刻=%02d:%02d:%02d"), st.wYear ,st.wMonth ,st.wDay,st.wHour ,st.wMinute ,st.wSecond ); TextOut(ps.hdc,0,50,strTime,lstrlen(strTime)); GetSystemTime(&st); wsprintf(strTime,TEXT("世界標準時刻 現在の日付=%d/%02d/%02d 現在の時刻=%02d:%02d:%02d"), st.wYear ,st.wMonth ,st.wDay,st.wHour ,st.wMinute ,st.wSecond ); TextOut(ps.hdc,0,100,strTime,lstrlen(strTime)); EndPaint(hwnd,&ps); break; case WM_KEYDOWN: if(LOWORD(wParam)==VK_ESCAPE) DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,message,wParam,lParam); } return 0; } └─────────────────────────────┘ -------------------------------------------------------相互広告--- あのMSXパソコンのイベント開催「MSX電遊ランド」 8/20 東京秋葉原 ヒロセムセン → http://imahi.com/dm.htm なつかしのMSX情報/無料相互広告マガジン情報/メル友サークル情報 などなど 計4誌発行中 → http://imahi.com/mailmag.htm ------------------------------------------------------ さて、説明を記していきます. ─────────────────────────────── char strYourser[256]; char strTime[256]; DWORD dwBuf=256; PAINTSTRUCT ps; HDC hdc; SYSTEMTIME st; ────────────────────────────── ここでは、変数を宣言しています. SYSTEMTIME 構造体は以下のように定義されています. ─────────────────────────────── SYSTEMTIME 構造体 SYSTEMTIME 構造体は、次の形式です。 typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME; SYSTEMTIME 構造体は、月、日、年、曜日、時、分、秒、ミリ秒の各メンバを使用し日付と時間を表します。 メンバ wYear 現在年。 wMonth 現在月。1 月は 1 です。 wDayOfWeek 現在の曜日。日曜が 0、月曜が 1、というように表します。 wDay 現在日。 wHour 現在時。 wMinute 現在分。 wSecond 現在秒。 wMilliseconds 現在のミリ秒。 ─────────────────────────────── GetUserName(strYourser,&dwBuf); TextOut(ps.hdc,0,0,strYourser,lstrlen(strYourser)); ───────────────────────────── GetUserName 現在のスレッドのユーザー名を取得します。 BOOL GetUserName( LPTSTR lpBuffer, // address of name buffer LPDWORD nSize // address of size of name buffer ); パラメータ lpBuffer バッファへのポインタを指定します。 このバッファに、ユーザー名が NULL で終わる文字列として格納されます。 バッファのサイズが足りなかったときは、関数は失敗します。 nSize バッファのサイズが入った DWORD 型変数へのポインタを指定します。 戻り値 関数が成功すると、0 以外の値が返ります。 また、lpBuffer パラメータに格納された文字数が、nSize パラメータが 指す変数に格納されます (終端の NULL 文字を含む)。 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 GetLastError 関数を使います。 解説 現在のスレッドがほかのクライアントを偽装している場合は、 偽装しているクライアントのユーザー名が返ります。 ─────────────────────────────── GetLocalTime(&st); wsprintf(strTime,TEXT("ローカル時刻 現在の日付=%d/%02d/%02d 現在の時刻=%02d:%02d:%02d"), st.wYear ,st.wMonth ,st.wDay,st.wHour ,st.wMinute ,st.wSecond ); TextOut(ps.hdc,0,50,strTime,lstrlen(strTime)); ─────────────────────────────── GetLocalTime 現在のローカル日時を取得します。 VOID GetLocalTime( LPSYSTEMTIME lpSystemTime // address of system time structure ); パラメータ lpSystemTime SYSTEMTIME 構造体へのポインタを指定します。 この構造体に、現在のローカル日時が格納されます。 戻り値 戻り値はありません。 ─────────────────────────────── GetSystemTime(&st); wsprintf(strTime,TEXT("世界標準時刻 現在の日付=%d/%02d/%02d 現在の時刻=%02d:%02d:%02d"), st.wYear ,st.wMonth ,st.wDay,st.wHour ,st.wMinute ,st.wSecond ); TextOut(ps.hdc,0,100,strTime,lstrlen(strTime)); ─────────────────────────────── GetSystemTime 現在のシステム時刻を取得します。 システム時刻は、グリニッジ標準時で表されます。 VOID GetSystemTime( LPSYSTEMTIME lpSystemTime // システム時間構造体へのポインタ ); パラメータ lpSystemTime 現在のシステム時刻を受け取る SYSTEMTIME 構造体へのポインタを指定します。 戻り値 戻り値はありません。 ─────────────────────────────── 今回のような、ユーザー名や時刻などの情報はあまり役に立たない カも知れませんが,何かの分野に置いては使う情報ともなります. └─────────────────────────────┘ なお、以上のプログラムは、私の動作環境VC++6.0 Win32 Application で確認済みです. ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ メールアドレス:<mailto:rain2000@geocities.co.jp> ホームページ :<http://www.geocities.co.jp/SiliconValley-Bay/3125> 発行者:rain2000 編集 :rain2000 このメールマガジンは,以下の発行者さんを通して発行してます. ●まぐまぐ: アドレス : http://www.mag2.com/ ID : 0000024922 ●クリックインカム: アドレス :http://clickincome.net/ ID : m00002885 ●Pubzine アドレス :Pubzine (http://www.pubzine.com/) ID :004293 ●ここでメール アドレス : http://mail.cocode.ne.jp/ ID : 0400100071 ●メルマガ天国 アドレス : http://melten.com/ ID : 300 ●E-magazine アドレス :http://www.emaga.com/ ID :cwindows ●Macky アドレス : http://macky.nifty.ne.jp/ ID : 2329 ●カプライト アドレス : http://kapu.cplaza.ne.jp/ ID : 234 また、登録解除などの手続きに関しましては,上記の ホームにてお願いします. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |