Microsoft365を利用している。昨夜まできちんと起動し表示していたが、急に起動はするが表示しなくなった。

どういうことかというと、起動しタスクバーに小さなウィンドウは表示される。しかし、クリックしても画面に表示されないのだ。クリックすると既に表示されているブラウザやWordにフォーカスが移るだけだ。

ちなみにExcelは表示されないがWordは表示されている。

Excelを再起動しても治らない。PCを再起動しても治らない。イベントビューアーを見るが特にアラートは出ていない。

いろいろと調べていると一つの解決方法を見つけた。

 [設定]-[アプリ]-[インストールされているアプリ]でMicrosoft365[Office]を探す。右横にある[・・・]ボタンをクリックする。表示の中で[詳細オプション]をクリックする。表示の中の[リセット]項目にある[修復]ボタンをクリック。

というものである。

 

その通りやると、治った。きちんと画面に表示されるようになった。

 

 

 

スマートフォンを機種交換した。その時の手続き。

スマートフォンはネットを購入した。宅配業者からスマートフォンとSIMカードが送られてきた。自分でスマートフォンにSIMカードを挿入し設定をする。

 

まずLineの引継ぎの設定する。[トークのバックアップ・復元]で[今すぐバックアップ]。[バックアップ頻度]を毎日にする。バックアップ用のPINコードを設定する。[アカウント引継ぎ]で[アカウントを引き継ぐ]をオンにする。関係ないが、PCでログインするために[アカウント]で[ログイン許可]をオンにし,[パスワードでログイン]をオンにする。

 

スマートフォンの回線切り替えをする。切り替えサイトにアクセスする。[WEB受注番号][生年月日][契約時に設定したメールアドレス]により認証する。即時に切り替えをする。

 

機種交換したが、元の機種に入っていたアプリやデータはBluetoothによりコピーできた。ともにBluetoothの設定をオンにする。そして二つのスマートフォンをペアに設定をする。その後、データをコピー、アプリをインストール?できた。元の機種とほぼ同じアプリがインストール?でき、データもコピーできた。

 

 

以前からAjaxの勉強をしていたが、いつも問題点があった。

 

それは、ローカルのサーバーで実行するといつも文字化けするのだ。

 

それもかならずシフトJISを示す。

 

UTF-8に変えると文字化けは直るのだが、実行時はかならず文字化けしシフトJISを示す。

 

レンタルサーバー上にファイルを送って実行すると文字化けしない。

 

何故なのだろうかとずっと悩んでいた。

 

ネットを見ていると、

 

同様にローカルサーバー上で実行すると文字化けが起きるという事が書かれていたので

 

そういうものかとも思っていた。

 

Ajaxを使用するプログラムはUTF-8で記述する。

 

何故なのだろうかと?

 

いろいろと調べみると原因が分かった。

 

ローカルサーバーはWindows版のApacheだが、

 

設定ファイルのhttpd.confにAddDefautCharsetというディレクティブがある。

 

これはデフォルトではコメントされているのだが、

 

私はコメントをはずしてshift_jisを設定していた。

 

多分、PerlやPHPのプログラムを書いているときに設定をシフトJISに設定したのだろう。

 

飛んだところで影響が及び悩むものだ。

AfxMessageBox(_T("リテラル文字列"));

AfxMessageBox(_TEXT("リテラル文字列"));

_T(_TEXT);

と、このように使うものらしい。


Shift_JIS   char型
Unicode    wchar_t型

_Tマクロで生成される文字列はTCHAR型に変換される。

TCHAR型の文字列はビルド時にchar型かwchar_t型に変換される。


CString cSample;

cSample = _T("Visual C++");

#include "windows.h"

 

int APIENTRY WinMain(HINSTANCE hInstance,
      HINSTANCE hPrevInstance,
      LPSTR lpCmdLine,
      int nCmdShow)
{

 MessageBox(NULL,"message","title",MB_OK);

 return 0;
 
}

#include "windows.h"

//関数のプロトタイプ宣言
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

//エントリポイント
int APIENTRY WinMain(HINSTANCE hInstance,
      HINSTANCE hPrevInstance,
      LPSTR lpCmdLine,
      int nCmdShow)
{
 WNDCLASSEX wcex; //ウィンドウクラス構造体
 HWND hWnd;   //ウィンドウハンドル
 MSG msg;   //メッセージ構造体

 //ウィンドウクラス構造体を設定します。
 wcex.cbSize        = sizeof(WNDCLASSEX);
 wcex.style         = CS_HREDRAW | CS_VREDRAW;
 wcex.lpfnWndProc   = (WNDPROC)WndProc;
 wcex.cbClsExtra    = 0;
 wcex.cbWndExtra    = 0;
 wcex.hInstance     = hInstance;
 wcex.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
 wcex.hCursor       = LoadCursor(NULL, IDC_ARROW);
 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
 wcex.lpszMenuName  = NULL;
 wcex.lpszClassName = "ModelApp";
 wcex.hIconSm       = LoadIcon(NULL,IDI_APPLICATION);

 //ウィンドウクラスを登録します。
 RegisterClassEx(&wcex);

 //ウィンドウを作成します。
 hWnd = CreateWindow(wcex.lpszClassName,
   "Windowsプログラムの雛形",
   WS_OVERLAPPEDWINDOW,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   NULL,
   NULL,
   hInstance,
   NULL);

 //ウィンドウを表示します。
 ShowWindow(hWnd,nCmdShow);
 UpdateWindow(hWnd);

 //メッセージループ
 while(GetMessage(&msg,NULL,0,0))
 {
   TranslateMessage(&msg);
   DispatchMessage(&msg);
 }


 //戻り値を返します。
 return msg.wParam;
}

//ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd,
       UINT message,
       WPARAM wParam,
       LPARAM lParam)
{
 //メッセージの種類に応じて処理を分散します。
 switch(message)
 {
  case WM_DESTROY:
   //ウィンドウが破壊されたときの処理
   PostQuitMessage(0);
   return 0;

  default:
   //デフォルトの処理
   return DefWindowProc(hWnd, message, wParam, lParam);
 }
}


C:\Program Files (x86)\Microsoft Visual Studio\VC98\Include\windows.h
C:\Program Files (x86)\Microsoft Visual Studio\VC98\MFC\SRC


エントリーポイント
_WinMain関数(appmodul.cpp)

_WinMain関数の中では、ただAfxWinMain関数を実行しその結果を返すのみ。


AfxWinMain関数(winmain.cpp)

AfxGetThread関数でスレッドのポインタを取得。
AfxGetApp関数でアプリケーションのオブジェクトのポインタを取得。
AfxWinInit関数でMFCを初期化する。


C:\Program Files (x86)\Microsoft Visual Studio\VC98\Include\winuser.h
MSG構造体

C:\Program Files (x86)\Microsoft Visual Studio\VC98\Include\wintype.h
Defineの定義


typedef struct tagMSG {
    HWND        hwnd;
    UINT        message;
    WPARAM      wParam;
    LPARAM      lParam;
    DWORD       time;
    POINT       pt;
#ifdef _MAC
    DWORD       lPrivate;
#endif
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;


//ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd,
       UINT message,
       WPARAM wParam,
       LPARAM lParam)
{
 //メッセージの種類に応じて処理を分散します。
 switch(message)
 {
  case WM_DESTROY:
   //ウィンドウが破壊されたときの処理
   PostQuitMessage(0);
   return 0;

  default:
   //デフォルトの処理
   return DefWindowProc(hWnd, message, wParam, lParam);
 }
}

http://www.masm32.com/

ここで最新版をダウンロードする。
masm32v11r.zip


16ビット版リンカ
http://origin2.download.microsoft.com/download/vc15/Update/1/WIN98/EN-US/Lnk563.exe
これを展開するとlink.exeが生成される。

c:\link16というディレクトリを作成し、ここに16ビット版link.exeを入れる。


パスの設定

32ビットプログラムのためのバッチファイル masm32_32set.bat
path %PATH%;c:\masm32\bin
set LIB=c:\masm32\lib

16ビットプログラムのためのバッチファイル masm32_16set.bat
path %PATH%;c:\link16;c:\masm32\bin


アセンブルの設定

com形式のアセンブル
ml /At test.asm  test.comが作成される。

exe形式のアセンブル

ml     test.asm  test.exeが作成される。


DOS窓でcommand.comと入力。16ビットDOS窓に切り替える。
exitと入力すると32ビットDOS窓に戻る。