|
======================================================== [ ▲PR ] ==== 今ハ・ヤ・リの共同購入。がっ!・・・・・【T-select】は二味違う♪ Tシャツ Audition → http://216.71.100.246/b/a.cgi?k0730m0469 ======================================================== [ ▲PR ] ==== 発行部数:MagMag 2313 Pubzine 312 カプライト209 Melten 31 E-Magazine 54 ここでメール 146 Macky 153 Melma 224 総発行部数:3446 ▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼ ------------------------------------------------------------ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ■CからはじめるWindowsDirectXへの道 ■ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ホーム:<http://www.geocities.co.jp/SiliconValley-Bay/3125> ┌─────────────────────────────┐ ■第2章 Windows(文字処理 2回編) └─────────────────────────────┘ さて、Winndows編もはや14回に突入しました. しかし、まだまだです。10分の1も終わっていません. Windows編完了はいつになるでしょう. ◎ さて、今回から自分の勉強もかねて通信関係の用語の 解説も載せていきます.(勉強中) ─────────────────────────────── 通信 IPアドレス とは? 住所という感じですね。 表記: 2進数で表されているものを10進数に直します. 10101100 00010000 00000010 00010110 は、 「172.16.2.22」 になります。 このようなIPアドレスは、各国のNIC が重複のないように 管理を行なっています. ◎)NIC network information center の略 日本は,JPNICですね。<http://www.nic.ad.jp/index-j.html> IPアドレスは,「ネットワーク部」と「ホスト部」に分けて使用します. このうち「ネットワーク部」は、組織のネットワーク全体を示し, 「ホスト部」は組織がパソコンやルーターなどに割り振ることが できる部分です. また、組織のネットワークを示す場合には,172.98.0.0 のように、ホスト部をすべて0にしたもので表記します. IPアドレス・クラス IPアドレスには、5種類のクラスがあります. ネットワーク部が8ビットのクラスA、16ビットのクラスB、24ビットのクラスC があります。 また、クラスD,クラスEもありますが,ユーザーが実際に利用できるのは, A,B,Cです。 クラスによって何が違うかというと, 接続できるパソコンの数が違います. クラスA 約1700万台 クラスB 約6万5000台 クラスC 約254台 です。 と、ここまで説明してき他のですが,長くなってきましたので 簡単にこれ以降を説明します. 今現在では,Aクラスなどは割り当てられることはほとんどなく, たとえば接続しているときのみIPアドレスを割り当てるといったことが 行なわれています. (プライベートアドレスとグローバルアドレス) また、クラスの細分化も行なわれています.(クラスレス) 以上,初歩のIPアドレスでした. 間違えなどを発見した方は,私宛にメールを下さい. 次回に、訂正を載せたいと思います. また、この講座への意見・ご要望もお待ちしております. メール:<mailto:rain2000@geocities.co.jp> ─────────────────────────────── ==== [ ▼PR ] ======================================================== ―― 初歩から学んでプロのJAVAプログラマーを目指す本格講座 ―― ◆ 「はじめて学ぶJAVAプログラミング」の著者が直接指導 ◆+◆ 東京・お茶の水に10月開講 ≪ドットネット≫ ◆ JAVAプログラミング本科コース(平日昼間週2回:6ヶ月)他 資料請求はこちら: http://216.71.100.246/a/a.cgi?k0911m0469 ─────────────────────────────── ホームページ メルマガ専用掲示板を開設しました. めるまがから掲示板と行くと,たどり着きます. 趣味のほうの掲示板は、雑談です. 追加:ダウンロードをHTML−HELPを使用したものに変更しました. 以前の形より見やすくまた、使いやすくなりました. ─────────────────────────────── メルマガ いや,最近の広告もこってきましたね. しかし、レートから見てみますと, まぐまぐの広告のクリック率0.16%です。 広告にどれくらいの効果を得られるのかは, 疑問ですね. 毎回、コムズショップを載せています。 利益還元率:リンクスタッフ 1000円 でした。 ─────────────────────────────── ┌─────────────────────────────┐ 電話加入権激安!ISDNライトなら9800円で電話が引ける!?(株)コムズ ↓詳しくはここをクリック! <http://www.comzz.co.jp/cgi-bin/cookie/set.cgi?t=top&id=2543> └─────────────────────────────┘ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● 文字処理 2回 ● 今回は、文字処理 2回 について触れていきます. 関数などの説明は、サンプルのあとに乗せていきます。 ┌─────────────────────────────┐ では、まず ( WIN14.H )のソースです. ┌─────────────────────────────┐ #define IDC_EDIT1 101 #define IDC_EDIT2 102 #define IDC_CAT 103 #define IDC_COPY 104 #define IDC_Compare 105 #define IDC_Comparei 106 #define IDC_PREV 107 #define IDC_NEXT 108 #define IDC_Ascii 109 #define IDC_WChar 110 #define IDC_sChar 111 #define IDC_END 113 └─────────────────────────────┘ つぎに、( WIN14.RC ) のソースです. ┌─────────────────────────────┐ #include <windows.h> #include "win14.h" Win13Dlg DIALOG MOVEABLE DISCARDABLE 20,20,200,150 STYLE DS_MODALFRAME | WS_POPUP |WS_VISIBLE|WS_CAPTION| WS_SYSMENU CAPTION "EditBox編" FONT 8,"Italic" BEGIN EDITTEXT IDC_EDIT1,10,10,80,20,WS_TABSTOP EDITTEXT IDC_EDIT2,100,10,80,20,WS_TABSTOP PUSHBUTTON "連結",IDC_CAT,10,30,40,20 PUSHBUTTON "コピー",IDC_COPY,60,30,40,20 PUSHBUTTON "比較1",IDC_Compare,110,30,40,20 PUSHBUTTON "比較2",IDC_Comparei,160,30,40,20 PUSHBUTTON "*PREV",IDC_PREV,10,55,40,20 PUSHBUTTON "*NEXT",IDC_NEXT,60,55,40,20 PUSHBUTTON "Ascii",IDC_Ascii,110,60,40,20 PUSHBUTTON "WChar",IDC_WChar,160,60,40,20 PUSHBUTTON "sChar",IDC_sChar,10,80,80,20 PUSHBUTTON "終了",IDC_END,10,110,40,20 END └─────────────────────────────┘ ─────────────────────────────── 次に,メインソースファイルです. ┌─────────────────────────────┐ #include <windows.h> #include "win14.h" #define FLAG 2 #undef WindowsName #define WindowsName "Windows" #if FLAG==1 /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Dialog------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ HINSTANCE hInst; HWND hwndMain; LRESULT CALLBACK DlgProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); #else /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Window------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ HWND hwndSub; LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); #endif int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { WNDCLASSEX wc; wc.hInstance =hInstance; wc.lpszClassName=WindowsName; wc.lpszMenuName=WindowsName; #if FLAG==1 /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Dialog------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ wc.lpfnWndProc =NULL; #else /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Window------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ wc.lpfnWndProc =WndProc; #endif wc.cbSize =sizeof(WNDCLASSEX); wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_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)) { return 0; } MSG msg; #if FLAG==1 /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Dialog------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ hInst=hInstance; hwndMain = CreateDialog( hInst, "Win13Dlg" , hwndMain, (DLGPROC)DlgProc ) ; if( hwndMain != NULL ) { ShowWindow( hwndMain, nCmdShow ) ; UpdateWindow( hwndMain ) ; } #else /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Window------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ hwndSub=CreateWindow(WindowsName,WindowsName,WS_OVERLAPPED,100,100,300,300,NULL,NULL,hInstance,NULL); if (hwndSub!=NULL){ ShowWindow(hwndSub,nCmdShow); UpdateWindow(hwndSub); } #endif while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } #if FLAG==1 /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Dialog------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ LRESULT CALLBACK DlgProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) { int i; char buf[256]; char buf2[256]; WCHAR wbuf[256]; TCHAR tbuf[256]; switch (message) { case WM_CREATE: break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_EDIT1: break; case IDC_EDIT2: break; case IDC_CAT://連結 GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); GetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf2,lstrlen(buf2)); lstrcat(buf,buf2); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf); break; case IDC_COPY://コピー GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); lstrcpy(buf2,buf); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf); break; case IDC_Compare:// 比較 GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); GetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf2,lstrlen(buf2)); if (lstrcmp(buf,buf2)==0) SetWindowText(hwnd,"一致"); else SetWindowText(hwnd,"不一致"); break; case IDC_Comparei://比較 NOT 大文字 小文字 GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); GetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf2,lstrlen(buf2)); if (lstrcmpi(buf,buf2)==0) SetWindowText(hwnd,"一致"); else SetWindowText(hwnd,"不一致"); break; case IDC_PREV://*++; GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); for (i=0;i<3;i++) CharNext(buf); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),CharPrev(buf,buf)); break; case IDC_NEXT://*--; GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); for (i=0;i<lstrlen(buf);i++) SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),CharNext(buf)); break; case IDC_Ascii://Ascii取得 break; case IDC_WChar://WideChar GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,buf,-1,wbuf,255); wsprintf(buf,"%s",wbuf); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf); break; case IDC_sChar://CharWide GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,buf,-1,wbuf,255); WideCharToMultiByte(CP_ACP,0,wbuf,-1,tbuf,255,NULL,NULL); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),tbuf); break; case IDC_END://終了 PostQuitMessage(0); break; } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,message,wParam,lParam); } return 0; } #else /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Window------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) { char buf[256]; HDC hdc; BYTE key[256]; WORD dwRet; switch(message) { case WM_CREATE: break; case WM_KEYDOWN: GetKeyboardState(key); hdc=GetDC(hwnd); wsprintf(buf,"%d",ToAscii(wParam,(lParam>>16) & 0xff,key,&dwRet,0)); TextOut(hdc,0,0,buf,lstrlen(buf)); wsprintf(buf,"[%c]",(TCHAR)dwRet & 0xff); TextOut(hdc,0,20,buf,lstrlen(buf)); ReleaseDC(hwnd,hdc); if (LOWORD(wParam)==VK_ESCAPE) DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,message,wParam,lParam); } return 0; } #endif ==== [ ▼PR ] ======================================================== ★−★−★−★−★ クリックして夢をget! ★−★−★−★−★ ┏━━━━━━┓ 『えっ?こんなものが買えるの!?』 ┃夢get宝島┃ 夢getに隊員登録をすると、数々のおトクな権利が。 ┗━━━━━━┛ http://216.71.100.246/a/a.cgi?k0960m0469 ★−★−★ みんなも宝島に上陸してみて!いいことあるよ。 ★−★−★ ======================================================== [ ▲PR ] ==== ==== [ ▼PR ] ======================================================== [∽--∽--∽ 三菱商事で始める純金・プラチナ積立 ∽--∽--∽] 安定した資産運用をお考えのあなたに。月々3,000から貯蓄感覚で積立てし、 貯まった地金は、売却の他、ジュエリーやコインにも等価交換できます。 http://216.71.100.246/a/a.cgi?k0855m0469 [∽--∽--∽ 資料のご請求は、こちらからどうぞ。 ∽--∽--∽] ======================================================== [ ▲PR ] ==== ┌─────────────────────────────┐ それでは、ソースの説明をしていきます. ────────────────────────────── 今回のプログラムの説明 ────────────────────────────── さて、今回は #if を用いて, Windowの作成も行なっています. なぜか、プロセス・スレッド.・フック どれに対しても、触れていないためです. では、説明です. EDITBOXを2つつくり、片方の値を 変化させたものを、もうひとつのEDITBOXに 入れています. また、WINDOWSでは、押されたキーが 何かを判別しています. /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Dialog------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ ────────────────────────────── 変数宣言 ────────────────────────────── int i; char buf[256]; char buf2[256]; WCHAR wbuf[256]; TCHAR tbuf[256]; ────────────────────────────── WCHAR 2バイト文字の取得に使用. TCHAR 使用としては,CHAR型に似ています. ────────────────────────────── case IDC_CAT://連結 GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); GetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf2,lstrlen(buf2)); lstrcat(buf,buf2); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf); break; ────────────────────────────── ここでは、EDIT1と、EDIT2の文字を 連結して,EDIT2に渡しています. ────────────────────────────── LPTSTR lstrcat( LPTSTR lpString1, 文字列 LPCTSTR lpString2 追加する文字列 ); ────────────────────────────── case IDC_COPY://コピー GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); lstrcpy(buf2,buf); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf); break; ───────────────────────────── ここでは、EDIT1の文字をEDIT2にコピーしています. ───────────────────────────── LPTSTR lstrcpy( LPTSTR lpString1, // コピー先 LPCTSTR lpString2 // コピー元 ); 関連:lstrcpyn , lstrcpyWn ,lstrcpyW ───────────────────────────── case IDC_Compare:// 比較 GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); GetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf2,lstrlen(buf2)); if (lstrcmp(buf,buf2)==0) SetWindowText(hwnd,"一致"); else SetWindowText(hwnd,"不一致"); break; ────────────────────────────── ここでは、文字列の比較を行なっています. EDIT1、とEDIT2の比較です. ────────────────────────────── 2 つの文字列を比較します。大文字小文字を区別します。 int lstrcmp( LPCTSTR lpString1, LPCTSTR lpString2 ); 戻り値: 負 lpString1 が指す文字列は、lpString2 が指す文字列よりも小さい。 0 lpString1 が指す文字列は、lpString2 が指す文字列と等しい。 正 lpString1 が指す文字列は、lpString2 が指す文字列よりも大きい。 ────────────────────────────── case IDC_Comparei://比較 NOT 大文字 小文字 GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); GetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf2,lstrlen(buf2)); if (lstrcmpi(buf,buf2)==0) SetWindowText(hwnd,"一致"); else SetWindowText(hwnd,"不一致"); break; ────────────────────────────── 2 つの文字列を比較します。大文字小文字の違いを区別しません。 int lstrcmpi( LPCTSTR lpString1, // address of first string LPCTSTR lpString2 // address of second string ); 戻り値: 負 lpString1 が指す文字列は、lpString2 が指す文字列よりも小さい。 0 lpString1 が指す文字列は、lpString2 が指す文字列と等しい。 正 lpString1 が指す文字列は、lpString2 が指す文字列よりも大きい。 ────────────────────────────── case IDC_PREV://*++; GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); for (i=0;i<3;i++) CharNext(buf); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),CharPrev(buf,buf)); break; ────────────────────────────── ポインタないの文字列を移動させています. ────────────────────────────── 文字列中の次の文字へのポインタを取得します。 LPTSTR CharNext( LPCTSTR lpsz // 文字列へのポインタ ); ────────────────────────────── case IDC_NEXT://*--; GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); for (i=0;i<lstrlen(buf);i++) SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),CharNext(buf)); break; ────────────────────────────── ポインタないの文字列を移動させています. ────────────────────────────── 文字列中の 1 つ前の文字へのポインタを取得します。 LPTSTR CharPrev( LPCTSTR lpszStart, // 最初の文字へのポインタ LPCTSTR lpszCurrent // 現在の文字へのポインタ ); ────────────────────────────── case IDC_WChar://WideChar GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,buf,-1,wbuf,255); wsprintf(buf,"%s",wbuf); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),buf); break; ────────────────────────────── 文字列をワイド文字列(Unicode)にマップします。 この関数によってマップした文字列がマルチバイト文字セットに含まれるとは限りません。 int MultiByteToWideChar( UINT CodePage, // コードページ DWORD dwFlags, // 文字の種類を指定するフラグ LPCSTR lpMultiByteStr, // マップ元文字列のアドレス int cchMultiByte, // マップ元文字列のバイト数 LPWSTR lpWideCharStr, // マップ先ワイド文字列を入れるバッファのアドレス int cchWideChar // バッファのサイズ ); CP_ACP ANSI コード 詳しくは,MSDNを参照ください. ────────────────────────────── case IDC_sChar://CharWide GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,lstrlen(buf)); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,buf,-1,wbuf,255); WideCharToMultiByte(CP_ACP,0,wbuf,-1,tbuf,255,NULL,NULL); SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),tbuf); break; ────────────────────────────── ワイド文字列を新しい文字列にマップします。 新しい文字列がマルチバイト文字セットから構成されるとは限りません。 int WideCharToMultiByte( UINT CodePage, // コードページ DWORD dwFlags, // 処理速度とマッピング方法を決定するフラグ LPCWSTR lpWideCharStr, // ワイド文字列のアドレス int cchWideChar, // ワイド文字列の文字数 LPSTR lpMultiByteStr, // 新しい文字列を受け取るバッファのアドレス int cchMultiByte, // 新しい文字列を受け取るバッファのサイズ LPCSTR lpDefaultChar, // マップできない文字の既定値のアドレス LPBOOL lpUsedDefaultChar // 既定の文字を使ったときにセットするフラグのアドレス ); 詳しくは,MSDNを参照ください. ────────────────────────────── ==== [ ▼PR ] ======================================================== ■■今までになかった新しい求職・求人サービス![アクティブウェブ]■■ 日本初の本格的求職広告(匿名無料)でお仕事探しを応援します!応募はもち ろん、企業からの勧誘が受けられる双方向の新サービス!ホームページと無料 メルマガのダブル広告で効果大!転職、就職、SOHO、契約、派遣等もOK 求人広告も多数。★★ < http://216.71.100.246/a/a.cgi?k0325m0469 > ★★ ======================================================== [ ▲PR ] ==== /*-----------------------------------------------------------------------------------------------------*/ /*-----------------------------------------Window------------------------------------------------------*/ /*-----------------------------------------------------------------------------------------------------*/ ────────────────────────────── 変数宣言 ────────────────────────────── char buf[256]; HDC hdc; BYTE key[256]; WORD dwRet; ────────────────────────────── BYTE GetKeyboradState()に使用. WORD ToAscii() に使用. ────────────────────────────── メッセージ部 ────────────────────────────── case WM_KEYDOWN: GetKeyboardState(key); hdc=GetDC(hwnd); wsprintf(buf,"%d",ToAscii(wParam,(lParam>>16) & 0xff,key,&dwRet,0)); TextOut(hdc,0,0,buf,lstrlen(buf)); wsprintf(buf,"[%c]",(TCHAR)dwRet & 0xff); TextOut(hdc,0,20,buf,lstrlen(buf)); ReleaseDC(hwnd,hdc); if (LOWORD(wParam)==VK_ESCAPE) DestroyWindow(hwnd); break; ────────────────────────────── ここでは、キーが押されたときにどのキーが押されたのかを 判別しています. ────────────────────────────── ToAscii(wParam,(lParam>>16) & 0xff,key,&dwRet,0) ────────────────────────────── int ToAscii( UINT uVirtKey, // 仮想キーコード UINT uScanCode, // スキャンコード PBYTE lpKeyState, // キー状態配列 LPWORD lpChar, // 変換されたキーに対するバッファ UINT uFlags // アクティブメニューフラグ ); 値 意味 0 指定された仮想キーでは、現在のキーボード状態に対する変換はありません。 1 バッファに1つの文字がコピーされました。 2 バッファに2つの文字がコピーされました。 これは通常、キーボードレイアウトに格納されたデッドキー文字(アクセントまたは区別的発音符) が指定された仮想キーと組み合せて1文字を構成できないことを表します。 関連項目:ToAsciiEx ────────────────────────────── 今回は、だいぶ長くなりました. WideChar 漢字 問題は,結構多いですね. たとえば,パソコンのユーザー名によるバグとか ありますね。 NEW!! 前回から、ソースファイル類を私のページの メールマガジンバックナンバーからダウンロードできるように しました. それでは。 └─────────────────────────────┘ なお、以上のプログラムは、私の動作環境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 また、登録解除などの手続きに関しましては,上記の ホームにてお願いします. 私宛にメールをいただいても、解除はおよび登録は いたしません. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ==== [ ▼PR ] ======================================================== ■アジアネットの夏。 http://216.71.100.246/a/a.cgi?k0871m0469 プロフェッショナルのためのリクルーティングサイト・アジアネットでは、 夏期限定のキャンペーンを実施中です。 ■━━━━┓ 転職をお考えの方は、この機会にぜひご登録下さい。 ┃夏期限定┃ キャンペーンの受付は8月31日まで。ご登録はお早めに!!┗━━━━■ ======================================================== [ ▲PR ] ==== |