API(Win32)入門/ウィンドウの表示
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
''[[FrontPage]]''
* ウィンドウの生成と表示 [#g80f30a7]
Windowsアプリケーションの基本。~
** 制約 [#t16660bc]
.NET関数・MFCを使用しないこと。~
#include <tchar.h>
#include <windows.h>
#include <commdlg.h>
#define PROC_NG -1
#define FUNC_NG_NEGATIVE -1
#define FUNC_NG 0
#define END_MSG 0
#define PROCESS_OK 0
#define RET_OK 0
#define RET_NG -1
typedef unsigned char u1b;
LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wp...
u1b wndRootin ( HINSTANCE de_hInst, HWND* de_hWnd );
int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst...
{
HWND hWnd; ...
MSG msg; ...
u1b rtnCod = RET_OK; ...
...
for ( ; ; ) ...
{ ...
rtnCod = wndRootin( hInst, ...
&hWnd ); ...
if( RET_OK != rtnCod ) ...
{ ...
break; ...
} ...
...
ShowWindow( hWnd, SW_SHOW ); ...
UpdateWindow( hWnd ); ...
...
for( ; ; ) ...
{ ...
BOOL ret = GetMessage( &msg, NULL, 0, 0 ); ...
if( FUNC_NG == ret || END_MSG == ret ) ...
{ ...
break; ...
} ...
else ...
{ ...
TranslateMessage( &msg ); ...
DispatchMessage( &msg ); ...
} ...
} ...
...
break; ...
} ...
...
return ( rtnCod ); ...
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wp...
{ ...
switch( msg ) ...
{ ...
case WM_DESTROY: ...
PostQuitMessage( END_MSG ); ...
return PROCESS_OK; ...
} ...
...
return DefWindowProc( hWnd, msg, wp, lp ); ...
...
}
u1b wndRootin ( HINSTANCE de_hInst, HWND* de_hWnd )
{ ...
WNDCLASSEX wc; ...
u1b rtnCod = RET_OK; ...
...
for ( ; ; ) ...
{ ...
wc.cbSize = sizeof( wc ); ...
wc.style = CS_HREDRAW | CS_VREDRAW; ...
wc.lpfnWndProc = WndProc; ...
wc.cbClsExtra = 0; ...
wc.cbWndExtra = 0; ...
wc.hInstance = de_hInst; ...
wc.hIcon = ( HICON )LoadImage( ...
NULL, MAKEINTRESOURCE( IDI_APPLICATION ), IMAGE...
0, 0, LR_DEFAULTSIZE | LR_SHARED ); ...
...
wc.hIconSm = wc.hIcon; ...
wc.hCursor = (HCURSOR)LoadImage( ...
NULL, MAKEINTRESOURCE(IDC_ARROW), IMAGE_CURSO...
0, 0, LR_DEFAULTSIZE | LR_SHARED ); ...
...
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_B...
wc.lpszMenuName = NULL; ...
wc.lpszClassName = _T("Menu"); ...
...
if( FUNC_NG == RegisterClassEx( &wc ) ) ...
{ ...
MessageBox(NULL, "ウィンドウクラスの登録失敗", ...
rtnCod = RET_NG; ...
break; ...
} ...
...
*de_hWnd = CreateWindow( ...
wc.lpszClassName, ...
_T("StyleMod"), ...
WS_OVERLAPPEDWINDOW, ...
CW_USEDEFAULT, ...
CW_USEDEFAULT, ...
CW_USEDEFAULT, ...
CW_USEDEFAULT, ...
NULL, ...
NULL, ...
de_hInst, ...
NULL ); ...
...
if( NULL == *de_hWnd ) ...
{ ...
MessageBox(NULL, "ウィンドウの作成失敗", "Style...
rtnCod = RET_NG; ...
break; ...
} ...
...
break; ...
} ...
...
return ( rtnCod ); ...
}
*** 参考ページ [#zdc1ccd2]
http://www.geocities.jp/ky_webid/win32c/index.html~
http://lets-go.hp.infoseek.co.jp/c_setting08.html~
終了行:
''[[FrontPage]]''
* ウィンドウの生成と表示 [#g80f30a7]
Windowsアプリケーションの基本。~
** 制約 [#t16660bc]
.NET関数・MFCを使用しないこと。~
#include <tchar.h>
#include <windows.h>
#include <commdlg.h>
#define PROC_NG -1
#define FUNC_NG_NEGATIVE -1
#define FUNC_NG 0
#define END_MSG 0
#define PROCESS_OK 0
#define RET_OK 0
#define RET_NG -1
typedef unsigned char u1b;
LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wp...
u1b wndRootin ( HINSTANCE de_hInst, HWND* de_hWnd );
int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst...
{
HWND hWnd; ...
MSG msg; ...
u1b rtnCod = RET_OK; ...
...
for ( ; ; ) ...
{ ...
rtnCod = wndRootin( hInst, ...
&hWnd ); ...
if( RET_OK != rtnCod ) ...
{ ...
break; ...
} ...
...
ShowWindow( hWnd, SW_SHOW ); ...
UpdateWindow( hWnd ); ...
...
for( ; ; ) ...
{ ...
BOOL ret = GetMessage( &msg, NULL, 0, 0 ); ...
if( FUNC_NG == ret || END_MSG == ret ) ...
{ ...
break; ...
} ...
else ...
{ ...
TranslateMessage( &msg ); ...
DispatchMessage( &msg ); ...
} ...
} ...
...
break; ...
} ...
...
return ( rtnCod ); ...
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wp...
{ ...
switch( msg ) ...
{ ...
case WM_DESTROY: ...
PostQuitMessage( END_MSG ); ...
return PROCESS_OK; ...
} ...
...
return DefWindowProc( hWnd, msg, wp, lp ); ...
...
}
u1b wndRootin ( HINSTANCE de_hInst, HWND* de_hWnd )
{ ...
WNDCLASSEX wc; ...
u1b rtnCod = RET_OK; ...
...
for ( ; ; ) ...
{ ...
wc.cbSize = sizeof( wc ); ...
wc.style = CS_HREDRAW | CS_VREDRAW; ...
wc.lpfnWndProc = WndProc; ...
wc.cbClsExtra = 0; ...
wc.cbWndExtra = 0; ...
wc.hInstance = de_hInst; ...
wc.hIcon = ( HICON )LoadImage( ...
NULL, MAKEINTRESOURCE( IDI_APPLICATION ), IMAGE...
0, 0, LR_DEFAULTSIZE | LR_SHARED ); ...
...
wc.hIconSm = wc.hIcon; ...
wc.hCursor = (HCURSOR)LoadImage( ...
NULL, MAKEINTRESOURCE(IDC_ARROW), IMAGE_CURSO...
0, 0, LR_DEFAULTSIZE | LR_SHARED ); ...
...
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_B...
wc.lpszMenuName = NULL; ...
wc.lpszClassName = _T("Menu"); ...
...
if( FUNC_NG == RegisterClassEx( &wc ) ) ...
{ ...
MessageBox(NULL, "ウィンドウクラスの登録失敗", ...
rtnCod = RET_NG; ...
break; ...
} ...
...
*de_hWnd = CreateWindow( ...
wc.lpszClassName, ...
_T("StyleMod"), ...
WS_OVERLAPPEDWINDOW, ...
CW_USEDEFAULT, ...
CW_USEDEFAULT, ...
CW_USEDEFAULT, ...
CW_USEDEFAULT, ...
NULL, ...
NULL, ...
de_hInst, ...
NULL ); ...
...
if( NULL == *de_hWnd ) ...
{ ...
MessageBox(NULL, "ウィンドウの作成失敗", "Style...
rtnCod = RET_NG; ...
break; ...
} ...
...
break; ...
} ...
...
return ( rtnCod ); ...
}
*** 参考ページ [#zdc1ccd2]
http://www.geocities.jp/ky_webid/win32c/index.html~
http://lets-go.hp.infoseek.co.jp/c_setting08.html~
ページ名: