約 5,277,107 件
https://w.atwiki.jp/opengl/pages/191.html
ツールバーを表示します。 resource.h #define IDR_MENU1 100 #define ID_EXIT 101 #define ID_TEST 102 #define ID_A 103 #define ID_B 104 #define ID_Menu 105 #define ID_Whats 106 #define ID_Help 107 #define ID_STATUS 108 #define IDM_NEW 1010 #define IDM_OPEN 1020 #define IDM_SAVE 1030 #define IDM_COPY 1040 #define IDM_PASTE 1050 #define IDM_DELETE 1060 #define IDM_CUT 1070 menu.rc #include resource.h IDR_MENU1 MENU BEGIN POPUP File BEGIN MENUITEM Exit , ID_EXIT END POPUP Test BEGIN MENUITEM てすつ , ID_TEST END POPUP Option BEGIN MENUITEM A , ID_A MENUITEM B , ID_B MENUITEM めにゅ~ , ID_Menu MENUITEM whats? , ID_Whats END MENUITEM ヘルプ , ID_Help END main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, comctl32.lib ) #include GL/freeglut/freeglut.h #include resource.h #include commctrl.h //CreateStatusWindow()のために必要 //FreeGlutのウインドウプロシージャを置き換える為の変数 WNDPROC WndProc=NULL; //元のウィンドウプロシージャ HWND hWnd2=NULL; //ウィンドウハンドル HMENU hMenu=NULL; //メニュー HWND hStatusbar; // ステータスバーのハンドル HWND hToolbar; //ツールバーのハンドル #define WIDTH 320 #define HEIGHT 240 //回転用 float anglex = 0.0f; //白 GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; //置き換えた後のプロシージャ LRESULT CALLBACK WndProc2(HWND hWnd , UINT msg , WPARAM wParam , LPARAM lParam){ switch( msg ){ case WM_SIZE SendMessage( hStatusbar, WM_SIZE, wParam, lParam ); SendMessage(hToolbar , msg , wParam , lParam); return 0; case WM_COMMAND switch (LOWORD(wParam)){ case IDM_NEW MessageBox(hWnd,TEXT( 新規作成 ),TEXT( 押したボタン ),MB_OK); break; case IDM_OPEN MessageBox(hWnd,TEXT( ファイルを開く ),TEXT( 押したボタン ),MB_OK); break; case IDM_SAVE MessageBox(hWnd,TEXT( ファイルを保存する ),TEXT( 押したボタン ),MB_OK); break; case IDM_COPY MessageBox(hWnd,TEXT( コピーする ),TEXT( 押したボタン ),MB_OK); break; case IDM_PASTE MessageBox(hWnd,TEXT( ペーストする ),TEXT( 押したボタン ),MB_OK); break; case IDM_DELETE MessageBox(hWnd,TEXT( 削除する ),TEXT( 押したボタン ),MB_OK); break; case IDM_CUT MessageBox(hWnd,TEXT( 切取り ),TEXT( 押したボタン ),MB_OK); break; case ID_EXIT PostQuitMessage(0); } return 0; case WM_DESTROY exit(0); break; default if(WndProc){ return CallWindowProc(WndProc,hWnd , msg , wParam , lParam); }else{ return DefWindowProc(hWnd,msg,wParam,lParam); } } } //ウィンドウの検索 BOOL CALLBACK enumWindowsProc(HWND hWnd,LPARAM lParam){ HANDLE hModule=(HANDLE)GetWindowLong(hWnd,GWL_HINSTANCE); if(GetModuleHandle(NULL)==hModule){ wchar_t ClassName[256]; GetClassNameW(hWnd,ClassName,sizeof(ClassName)/sizeof(ClassName[0])); if(wcsncmp(ClassName,L FREEGLUT ,wcslen(ClassName))==0){ hWnd2=hWnd; return FALSE; } } return TRUE; } void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(150.0,150.0,-150.0, 0.0,0.0,0.0, 0.0,1.0,0.0); glMaterialfv(GL_FRONT, GL_DIFFUSE, white); //回転 glRotatef(anglex,1.0f,0.0f,0.0f);//X軸を回転 glutSolidSphere(40.0,16,16); glutSwapBuffers(); } void idle(void){ anglex+=2.0f; Sleep(1); glutPostRedisplay(); } void Init(){ glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glEnable(GL_DEPTH_TEST); //ワイヤーフレーム glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); } bool main(int argc, char *argv[]){ glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( ツールバー ); //FreeGlutのウインドウハンドルとウインドウプロシージャを置き換える EnumWindows(enumWindowsProc,0); if(hWnd2){ WndProc=(WNDPROC)GetWindowLong(hWnd2,GWL_WNDPROC); SetWindowLong(hWnd2,GWL_WNDPROC,(LONG)WndProc2); }else{ return false; } //メニューを作成 hMenu=LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU1)); if(hMenu){ SetMenu(hWnd2,hMenu); }else{ return false; } // コモンコントロール関係の初期化 InitCommonControls(); // ステータスバーを作成 hStatusbar = CreateStatusWindowW(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, L ステータスバー ,hWnd2,ID_STATUS); TBBUTTON tbutton[] = { {STD_FILENEW, IDM_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_FILEOPEN, IDM_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_FILESAVE, IDM_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0}, {STD_COPY, IDM_COPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_PASTE, IDM_PASTE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_DELETE, IDM_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_CUT, IDM_CUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0} }; //ツールバーを作成 hToolbar = CreateToolbarEx(hWnd2, WS_CHILD | WS_VISIBLE, 0, 7, (HINSTANCE)HINST_COMMCTRL , IDB_STD_SMALL_COLOR , tbutton , 8 , 0 , 0 , 0 , 0 , sizeof (TBBUTTON)); glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); return true; }
https://w.atwiki.jp/win7life/pages/16.html
Home Basic Starter Home Premium Professional Enterprise Ultimate RC 32Bit ? ? ? ? ? ? ○ 64Bit ? ? ? ? ? ? ? 「スタート」ボタンを選択して、「コンロトールパネル」を選択する。 コントロールパネルの「デスクトップのカスタマイズ」を選択する。 「デスクトップのカスタマイズ」の「フォルダー オプション」を選択する。 「フォルダーオプション」ダイアログの「表示」タブを選択する。 「詳細設定」の「隠しファイル、隠しフォルダー、および隠しドライブを表示する」の項目を選択する。 「OK」ボタンを押して、「フォルダーオプション」ダイアログを閉じる。 「×」ボタンを押して、「デスクトップのカスタマイズ」ダイアログを閉じる。 名前 コメント
https://w.atwiki.jp/opengl/pages/59.html
DDS画像を読み込みます。 DDS画像とは Direct Draw Surface ファイルの事です。 GLEW を使うと S3TC(DXTC)圧縮 を解凍できるようです。 ↓こちらのサイトに読み込みプログラムがありましたので使わせて頂きます。http //asura.iaigiri.com/OpenGL/gl7.htmlちょこっと改変してGLEWの初期化位置を変えてみました。 ファイル main.cpp sample.dds main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, glew32.lib ) #include GL/glew.h #include GL/freeglut/freeglut.h #include string #define WIDTH 320 #define HEIGHT 240 //各種構造体 typedef struct _DDPixelFormat { GLuint size; GLuint flgas; GLuint fourCC; GLuint bpp; GLuint redMask; GLuint greenMask; GLuint blueMask; GLuint alphaMask; } DDPixelFormat; typedef struct _DDSCaps { GLuint caps; GLuint caps2; GLuint caps3; GLuint caps4; } DDSCaps; typedef struct _DDColorKey { GLuint lowVal; GLuint highVal; } DDColorKey; typedef struct _DDSurfaceDesc { GLuint size; GLuint flags; GLuint height; GLuint width; GLuint pitch; GLuint depth; GLuint mipMapLevels; GLuint alphaBitDepth; GLuint reserved; GLuint surface; DDColorKey ckDestOverlay; DDColorKey ckDestBlt; DDColorKey ckSrcOverlay; DDColorKey ckSrcBlt; DDPixelFormat format; DDSCaps caps; GLuint textureStage; } DDSurfaceDesc; //DDSクラス class DDSImage { protected GLenum format; GLuint internalFormat; GLuint bpp; GLuint numMipmaps; public GLuint ID; GLuint imageSize; GLubyte *imageData; GLuint width; GLuint height; DDSImage(); ~DDSImage(); void DecompressDDS(); bool ReadDDS(const char *filename); GLuint Load(const char *filename); }; //コンストラクタ DDSImage DDSImage() { imageSize = 0; imageData = NULL; format = GL_RGB; internalFormat = GL_RGB; width = 0; height = 0; bpp = 0; ID = 0; numMipmaps = 0; } //デストラクタ DDSImage ~DDSImage() { if ( imageData ) { delete [] imageData; imageData = NULL; } } //DDSファイルの読み込み bool DDSImage ReadDDS(const char *filename) { FILE *fp; char magic[4]; int mipmapFactor; long curr, end; DDSurfaceDesc ddsd; // ファイルを開く fp = fopen(filename, rb ); if ( !fp ) { printf( ファイルを開けませんでした\n ); return false; } // マジックを読み取り fread( magic, sizeof(char), 4, fp); // マジックをチェック if ( strncmp(magic, DDS , 4 ) != 0 ) { printf( DDSファイルではありません\n ); fclose(fp); return false; } // ヘッダーを読み取り fread( ddsd, sizeof(ddsd), 1, fp); // 幅・高さを格納 height = ddsd.height; width = ddsd.width; numMipmaps = ddsd.mipMapLevels; // フォーマット判別 switch ( ddsd.format.fourCC ) { case 1TXD // DXT1 format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; internalFormat = 3; mipmapFactor = 2; break; case 3TXD // DXT3 format = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; internalFormat = 4; mipmapFactor = 4; break; case 5TXD // DXT5 format = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; internalFormat = 4; mipmapFactor = 4; break; default printf( 未対応の形式です\n ); return false; } // テクセルデータのサイズを算出 curr = ftell(fp); fseek(fp, 0, SEEK_END); end = ftell(fp); fseek(fp, curr, SEEK_SET); imageSize = end - curr; imageData = new GLubyte [imageSize]; // ピクセルデータの読み込み fread(imageData, sizeof(GLubyte), imageSize, fp); // ファイルを閉じる fclose(fp); return true; } //S3TC圧縮の解凍作業 void DDSImage DecompressDDS() { int blockSize; int offset = 0; GLsizei mWidth = width, mHeight = height, mSize = 0; // DXT1 if ( format == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ) blockSize = 8; // DXT3, DXT5 else blockSize = 16; // 解凍 for ( int i=0; i (int)numMipmaps; i++ ) { mSize = ( (mWidth+3)/4 ) * ( (mHeight+3)/4 ) * blockSize; glCompressedTexImage2D(GL_TEXTURE_2D, i, format, mWidth, mHeight, 0, mSize, imageData + offset ); if ( mWidth 1 ) mWidth = (mWidth 1); else mWidth = 1; if ( mHeight 1 ) mHeight = (mHeight 1); else mHeight = 1; offset += mSize; } } //DDSファイルを読み込み,テクスチャを生成する GLuint DDSImage Load(const char *filename) { // ファイルの読み込み if ( !ReadDDS(filename) ) return 0; // テクスチャを生成 glGenTextures(1, ID); // テクスチャをバインド glBindTexture(GL_TEXTURE_2D, ID); // 拡大・縮小する方法の指定 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // テクスチャ環境の設定 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); // 解凍作業 DecompressDDS(); if ( imageData ) { delete [] imageData; imageData = NULL; } glBindTexture(GL_TEXTURE_2D, 0); // 生成したテクスチャ番号を返す return ID; } DDSImage texture; void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glOrtho(0.0, WIDTH, HEIGHT, 0.0, -1.0, 1.0); glEnable(GL_TEXTURE_2D);//テクスチャ有効 glBindTexture(GL_TEXTURE_2D, texture.ID); glEnable(GL_ALPHA_TEST);//アルファテスト開始 glBegin(GL_POLYGON); glTexCoord2f(0.0f, 1.0f); glVertex2d(10 , 230);//左下 glTexCoord2f(0.0f, 0.0f); glVertex2d(10 , 10);//左上 glTexCoord2f(1.0f, 0.0f); glVertex2d( 310 , 10);//右上 glTexCoord2f(1.0f, 1.0f); glVertex2d( 310 , 230);//右下 glEnd(); glDisable(GL_ALPHA_TEST);//アルファテスト終了 glDisable(GL_TEXTURE_2D);//テクスチャ無効 glutSwapBuffers(); } void idle(void) { glutPostRedisplay(); } void Init(){ //GLEWの初期化 if(glewInit() != GLEW_OK)printf( GLEWの初期化に失敗しました\n ); glClearColor(0.0, 0.0, 0.0, 1.0); glOrtho(0, WIDTH, HEIGHT, 0, -1, 1); texture.Load( sample.dds ); } int main(int argc, char *argv[]) { glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( 画像を読み込んで表示 ); glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); return 0; }
https://w.atwiki.jp/lmes2/pages/65.html
トレース情報を表示する 概要 タイトルのまんま 元ネタ ASP.NET / アプリケーションレベルの ASP.NET トレースの概要 前提条件 新しいwebサイトの作成 手順 web.config の system.web 以下に、traceタグを追加する。 system.web trace enabled="true" pageOutput="true" / /system.web もしくは、default.aspx.vb に以下を挿入する。 HttpContext.Current.Trace.IsEnabled = True 実行すると以下のようにトレース情報が見える。
https://w.atwiki.jp/opengl/pages/196.html
ツリービューを表示します。 階層構造を表現するのに便利です。 resource.h #define IDR_MENU1 100 #define ID_EXIT 101 #define ID_TEST 102 #define ID_A 103 #define ID_B 104 #define ID_Menu 105 #define ID_Whats 106 #define ID_Help 107 #define ID_STATUS 108 #define ID_TREEVIEW 1000 menu.rc #include resource.h IDR_MENU1 MENU BEGIN POPUP File BEGIN MENUITEM Exit , ID_EXIT END POPUP Test BEGIN MENUITEM てすつ , ID_TEST END POPUP Option BEGIN MENUITEM A , ID_A MENUITEM B , ID_B MENUITEM めにゅ~ , ID_Menu MENUITEM whats? , ID_Whats END MENUITEM ヘルプ , ID_Help END main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, comctl32.lib ) #include GL/freeglut/freeglut.h #include resource.h #include commctrl.h //CreateStatusWindow()のために必要 //FreeGlutのウインドウプロシージャを置き換える為の変数 WNDPROC WndProc=NULL; //元のウィンドウプロシージャ HWND hWnd2=NULL; //ウィンドウハンドル HMENU hMenu=NULL; //メニュー HWND hStatusbar; // ステータスバーのハンドル HWND hProgbar; //プログレスバーのハンドル HWND hTree;//ツリービューのハンドル wchar_t str[256]; HTREEITEM trp[4];//ツリービューの親アイテム設定用 TV_INSERTSTRUCT tv;//ツリービューのアイテム設定用 HTREEITEM hItem;//選択項目取得時にハンドル保存用 TVITEM tvitem;//選択内容取得用 #define TREE_WIDTH 200 #define TREE_HEIGHT 180 #define WIDTH 320 #define HEIGHT 240 //回転用 float anglex = 0.0f; //白 GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; //置き換えた後のプロシージャ LRESULT CALLBACK WndProc2(HWND hWnd , UINT msg , WPARAM wParam , LPARAM lParam){ switch( msg ){ case WM_SIZE MoveWindow(hTree, 0, 0, TREE_WIDTH, TREE_HEIGHT, TRUE); SendMessage( hStatusbar, WM_SIZE, wParam, lParam ); return 0; case WM_COMMAND switch (LOWORD(wParam)){ case ID_EXIT PostQuitMessage(0); } return 0; case WM_DESTROY exit(0); break; default if(WndProc){ return CallWindowProc(WndProc,hWnd , msg , wParam , lParam); }else{ return DefWindowProc(hWnd,msg,wParam,lParam); } } } //ウィンドウの検索 BOOL CALLBACK enumWindowsProc(HWND hWnd,LPARAM lParam){ HANDLE hModule=(HANDLE)GetWindowLong(hWnd,GWL_HINSTANCE); if(GetModuleHandle(NULL)==hModule){ wchar_t ClassName[256]; GetClassNameW(hWnd,ClassName,sizeof(ClassName)/sizeof(ClassName[0])); if(wcsncmp(ClassName,L FREEGLUT ,wcslen(ClassName))==0){ hWnd2=hWnd; return FALSE; } } return TRUE; } void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(150.0,150.0,-150.0, 0.0,0.0,0.0, 0.0,1.0,0.0); glMaterialfv(GL_FRONT, GL_DIFFUSE, white); //回転 glRotatef(anglex,1.0f,0.0f,0.0f);//X軸を回転 glutSolidSphere(40.0,16,16); glutSwapBuffers(); } void idle(void){ anglex+=2.0f; Sleep(1); glutPostRedisplay(); } void Init(){ glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glEnable(GL_DEPTH_TEST); //ワイヤーフレーム glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); } bool main(int argc, char *argv[]){ glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( ツリービュー ); //FreeGlutのウインドウハンドルとウインドウプロシージャを置き換える EnumWindows(enumWindowsProc,0); if(hWnd2){ WndProc=(WNDPROC)GetWindowLong(hWnd2,GWL_WNDPROC); SetWindowLong(hWnd2,GWL_WNDPROC,(LONG)WndProc2); }else{ return false; } //メニューを作成 hMenu=LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU1)); if(hMenu){ SetMenu(hWnd2,hMenu); }else{ return false; } // コモンコントロール関係の初期化 InitCommonControls(); // ステータスバーを作成 hStatusbar = CreateStatusWindowW(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, L ステータスバー ,hWnd2,ID_STATUS); //ツリービュー hTree = CreateWindowEx(0, WC_TREEVIEW, L , WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT, 0, 0, TREE_WIDTH, TREE_HEIGHT, hWnd2, (HMENU)ID_TREEVIEW, (HINSTANCE)GetWindowLong(hWnd2, GWL_HINSTANCE), NULL); memset((char *) tv, \0 , sizeof(tv)); //親アイテムを作成 tv.hInsertAfter = TVI_LAST; tv.item.mask = TVIF_TEXT; tv.hParent = TVI_ROOT; tv.item.pszText = L 3D ; trp[0] = TreeView_InsertItem(hTree, tv); tv.item.pszText = L 2D ; trp[1] = TreeView_InsertItem(hTree, tv); //親アイテムに挿入 tv.hParent = trp[0]; tv.item.pszText = L OpenGL ; trp[2] = TreeView_InsertItem(hTree, tv); tv.item.pszText = L DirectX ; trp[3] = TreeView_InsertItem(hTree, tv); //子アイテムに挿入 tv.hParent = trp[2]; tv.item.pszText = L 1 ; TreeView_InsertItem(hTree, tv); //子アイテムに挿入 tv.hParent = trp[2]; tv.item.pszText = L 2 ; TreeView_InsertItem(hTree, tv); //子アイテムに挿入 tv.hParent = trp[3]; tv.item.pszText = L 3 ; TreeView_InsertItem(hTree, tv); //子アイテムに挿入 tv.hParent = trp[3]; tv.item.pszText = L 4 ; TreeView_InsertItem(hTree, tv); glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); return true; }
https://w.atwiki.jp/opengl/pages/209.html
シェブロンデース レバーコントロールで隠されてしまったコントロールを ポップアップメニューで表示します。 resource.h #define IDR_MENU1 100 #define ID_EXIT 101 #define ID_TEST 102 #define ID_A 103 #define ID_B 104 #define ID_Menu 105 #define ID_Whats 106 #define ID_Help 107 #define ID_STATUS 108 #define ID_TOOLBAR 109 #define IDM_NEW 1010 #define IDM_OPEN 1020 #define IDM_SAVE 1030 #define IDM_COPY 1040 #define IDM_PASTE 1050 #define IDM_DELETE 1060 #define IDM_CUT 1070 #define IDM_FIND 1080 #define IDM_HELP 1090 #define IDM_PRINT 1110 #define IDM_REDOW 1120 #define IDM_REPLACE 1130 #define ID_REBAR 1140 #define ID_TOOL1 1150 #define ID_TOOL2 1160 menu.rc #include resource.h IDR_MENU1 MENU BEGIN POPUP File BEGIN MENUITEM Exit , ID_EXIT END POPUP Test BEGIN MENUITEM てすつ , ID_TEST END POPUP Option BEGIN MENUITEM A , ID_A MENUITEM B , ID_B MENUITEM めにゅ~ , ID_Menu MENUITEM whats? , ID_Whats END MENUITEM ヘルプ , ID_Help END FILE MENU DISCARDABLE BEGIN POPUP ダミー BEGIN MENUITEM 新規作成 , IDM_NEW MENUITEM 開く , IDM_OPEN MENUITEM 上書き保存 , IDM_SAVE MENUITEM コピー , IDM_COPY MENUITEM 切り取り , IDM_CUT MENUITEM 削除 , IDM_DELETE END END EDIT MENU DISCARDABLE BEGIN POPUP ダミー BEGIN MENUITEM 検索 , IDM_FIND MENUITEM ヘルプ , IDM_HELP MENUITEM 貼り付け , IDM_PASTE MENUITEM 印刷 , IDM_PRINT MENUITEM 元に戻す , IDM_REDOW MENUITEM 置き換え , IDM_REPLACE END END main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, comctl32.lib ) #define _WIN32_WINNT 0x0501 #include GL/freeglut/freeglut.h #include resource.h #include commctrl.h //CreateStatusWindow()のために必要 //FreeGlutのウインドウプロシージャを置き換える為の変数 WNDPROC WndProc=NULL; //元のウィンドウプロシージャ HWND hWnd2=NULL; //ウィンドウハンドル HMENU hMenu=NULL; //メニュー HWND hStatusbar; // ステータスバーのハンドル HWND hTool1, hTool2, hRebar; TBBUTTON tbButton1[] = { {STD_FILENEW, IDM_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_FILEOPEN, IDM_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_FILESAVE, IDM_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_COPY, IDM_COPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_CUT, IDM_CUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_DELETE, IDM_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0} }; TBBUTTON tbButton2[] = { {STD_FIND, IDM_FIND, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_HELP, IDM_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_PASTE, IDM_PASTE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_PRINT, IDM_PRINT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_REDOW, IDM_REDOW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, {STD_REPLACE, IDM_REPLACE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0} }; #define WIDTH 320 #define HEIGHT 240 //回転用 float anglex = 0.0f; //白 GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; //置き換えた後のプロシージャ LRESULT CALLBACK WndProc2(HWND hWnd , UINT msg , WPARAM wParam , LPARAM lParam){ LPNMHDR lpnmhdr; NMREBARCHEVRON *lpnmchevron; RECT rc1, rc2; POINT pt; RECT rc1_scr, rc2_scr, rc3_scr; REBARBANDINFO rbinfo; int nBtn, i; int nHideBtn = 0; wchar_t szResourceName[32]; HMENU hPopMenu, hSubMenu; switch( msg ){ case WM_SETCURSOR return DefWindowProc(hWnd,msg,wParam,lParam); case WM_SIZE SendMessage(hRebar, WM_SIZE, wParam, lParam); SendMessage( hStatusbar, WM_SIZE, wParam, lParam ); return 0; case WM_COMMAND switch (LOWORD(wParam)){ case IDM_NEW MessageBox(hWnd, L 変更を保存しますか , L 注意 , MB_YESNO | MB_ICONQUESTION); break; case IDM_SAVE MessageBox(hWnd, L 上書きしてもよろしいですか , L 上書き保存 , MB_YESNO | MB_ICONQUESTION); break; /* 他省略 */ case ID_EXIT PostQuitMessage(0); } return 0; case WM_DESTROY exit(0); break; case WM_NOTIFY lpnmhdr = (LPNMHDR)lParam; if (lpnmhdr- code == TTN_POP) { return 0; } switch (wParam) { case ID_REBAR switch (lpnmhdr- code) { case RBN_CHEVRONPUSHED lpnmchevron = (NMREBARCHEVRON *)lParam; if (SendMessage(hRebar, RB_GETRECT, (WPARAM)lpnmchevron- uBand, (LPARAM) rc1) == 0) { MessageBox(hWnd, L RB_GETRECT ERROR , L OK , MB_OK); return FALSE; } pt.x = rc1.left; pt.y = rc1.top; ClientToScreen(hRebar, pt); rc1_scr.left = pt.x; rc1_scr.top = pt.y; pt.x = rc1.right; pt.y = rc1.bottom; ClientToScreen(hRebar, pt); rc1_scr.right = pt.x; rc1_scr.bottom = pt.y; memset( rbinfo, 0, sizeof(REBARBANDINFO)); rbinfo.cbSize = sizeof(REBARBANDINFO); rbinfo.fMask = RBBIM_CHILD; if (SendMessage(hRebar, RB_GETBANDINFO, (WPARAM)lpnmchevron- uBand, (LPARAM) rbinfo) == 0) MessageBox(hWnd, L Error RB_GETBANDINFO , L Error , MB_OK); nBtn = SendMessage(rbinfo.hwndChild, TB_BUTTONCOUNT, 0, 0); for (i = 0; i nBtn; i++) { SendMessage(rbinfo.hwndChild, TB_GETITEMRECT, (WPARAM)i, (LPARAM) rc2); pt.x = rc2.left; pt.y = rc2.top; ClientToScreen(rbinfo.hwndChild, pt); rc2_scr.left = pt.x; rc2_scr.top = pt.y; pt.x = rc2.right; pt.y = rc2.bottom; ClientToScreen(rbinfo.hwndChild, pt); rc2_scr.right = pt.x; rc2_scr.bottom = pt.y; IntersectRect( rc3_scr, rc2_scr, rc1_scr); if (!EqualRect( rc2_scr, rc3_scr)) { nHideBtn = nBtn - i; break; } } if (rbinfo.hwndChild == hTool1) { wcscpy(szResourceName, L FILE ); } else if (rbinfo.hwndChild == hTool2) { wcscpy(szResourceName, L EDIT ); } else { MessageBox(hWnd, L Error , L Error , MB_OK); return FALSE; } hPopMenu = LoadMenu((HINSTANCE)GetWindowLong(hWnd2, GWL_HINSTANCE), szResourceName); if (hPopMenu == NULL) { MessageBox(hWnd, L LoadMenu Error , L Error , MB_OK); break; } hSubMenu = GetSubMenu(hPopMenu, 0); if (nHideBtn == 0) nHideBtn = 1; for (i = 0; i nBtn - nHideBtn; i++) { if (DeleteMenu(hSubMenu, 0, MF_BYPOSITION) == 0) { MessageBox(hWnd, L DeleteMenu Error , L Error , MB_OK); return 0; } } TrackPopupMenu(hSubMenu, TPM_LEFTALIGN, rc1_scr.right-10, rc1_scr.bottom, 0, hWnd, NULL); DestroyMenu(hPopMenu); break; default return DefWindowProc(hWnd, msg, wParam, lParam); } break; } default if(WndProc){ return CallWindowProc(WndProc,hWnd , msg , wParam , lParam); }else{ return DefWindowProc(hWnd,msg,wParam,lParam); } } } //ウィンドウの検索 BOOL CALLBACK enumWindowsProc(HWND hWnd,LPARAM lParam){ HANDLE hModule=(HANDLE)GetWindowLong(hWnd,GWL_HINSTANCE); if(GetModuleHandle(NULL)==hModule){ wchar_t ClassName[256]; GetClassNameW(hWnd,ClassName,sizeof(ClassName)/sizeof(ClassName[0])); if(wcsncmp(ClassName,L FREEGLUT ,wcslen(ClassName))==0){ hWnd2=hWnd; return FALSE; } } return TRUE; } void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(150.0,150.0,-150.0, 0.0,0.0,0.0, 0.0,1.0,0.0); glMaterialfv(GL_FRONT, GL_DIFFUSE, white); //回転 glRotatef(anglex,1.0f,0.0f,0.0f);//X軸を回転 glutSolidSphere(40.0,16,16); glutSwapBuffers(); } void idle(void){ anglex+=2.0f; Sleep(1); glutPostRedisplay(); } void Init(){ glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glEnable(GL_DEPTH_TEST); //ワイヤーフレーム glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); } HWND MakeToolbar(HWND hWnd, int n, TBBUTTON *tbButton, int id){ HWND hTool; TBADDBITMAP tbab; int stdid, i; hTool = CreateToolbarEx(hWnd, WS_VISIBLE | WS_CHILD| CCS_NODIVIDER | CCS_NORESIZE | TBSTYLE_FLAT, id , 0, NULL, NULL, tbButton, 0, 0, 0, 0, 0, sizeof(TBBUTTON)); tbab.hInst = HINST_COMMCTRL; tbab.nID = IDB_STD_SMALL_COLOR; stdid = SendMessage(hTool, TB_ADDBITMAP, n, (LPARAM) tbab); for (i = 0; i n; i++)tbButton[i].iBitmap += stdid; SendMessage(hTool, TB_ADDBUTTONS, n, (LONG)tbButton); SendMessage(hTool, TB_AUTOSIZE, 0, 0); return hTool; } bool main(int argc, char *argv[]){ glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( シェブロン ); //FreeGlutのウインドウハンドルとウインドウプロシージャを置き換える EnumWindows(enumWindowsProc,0); if(hWnd2){ WndProc=(WNDPROC)GetWindowLong(hWnd2,GWL_WNDPROC); SetWindowLong(hWnd2,GWL_WNDPROC,(LONG)WndProc2); }else{ return false; } //メニューを作成 hMenu=LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU1)); if(hMenu){ SetMenu(hWnd2,hMenu); }else{ return false; } // コモンコントロール関係の初期化 INITCOMMONCONTROLSEX ic; ic.dwSize = sizeof(INITCOMMONCONTROLSEX); ic.dwICC = ICC_BAR_CLASSES | ICC_COOL_CLASSES | ICC_PAGESCROLLER_CLASS; InitCommonControlsEx( ic); // ステータスバーを作成 hStatusbar = CreateStatusWindowW(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, L ステータスバー ,hWnd2,ID_STATUS); hRebar = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | RBS_BANDBORDERS | RBS_VARHEIGHT, 0, 0, 0, 0, hWnd2, (HMENU)ID_REBAR, (HINSTANCE)GetWindowLong(hWnd2, GWL_HINSTANCE), NULL); hTool1 = MakeToolbar(hRebar, 6, tbButton1, ID_TOOL1); hTool2 = MakeToolbar(hRebar, 6, tbButton2, ID_TOOL2); REBARBANDINFO rbinfo; RECT rc; memset( rbinfo, 0, sizeof(REBARBANDINFO)); rbinfo.cbSize = sizeof(REBARBANDINFO); rbinfo.fMask = /*RBBIM_TEXT |*/ RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE | RBBIM_IDEALSIZE; rbinfo.fStyle = RBBS_CHILDEDGE | RBBS_USECHEVRON; rbinfo.hwndChild = hTool1; rbinfo.cxMinChild = 0; rbinfo.cyMinChild = 25; rbinfo.cxIdeal = 144; rbinfo.cx = 160; SendMessage(hRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM) rbinfo); GetWindowRect(hRebar, rc); rbinfo.hwndChild = hTool2; rbinfo.cxMinChild = 0; rbinfo.cyMinChild = 25; rbinfo.cxIdeal = 176; rbinfo.cx = 192; SendMessage(hRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM) rbinfo); glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); return 0; }
https://w.atwiki.jp/opengl/pages/17.html
とりあえず、何もないウインドウを表示します。 ファイル main.cpp main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h void display(void) { glClearColor(0.0, 0.0, 0.0, 1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glFlush(); } int main(int argc, char *argv[]) { glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA); glutCreateWindow( Hellow OpenGL World !! ); glutDisplayFunc(display); glutMainLoop(); return 0; }
https://w.atwiki.jp/opengl/pages/193.html
リストビューです。 JAVAではテーブルとも呼ばれます。 頑張ればExcelもどきも作れるかもしれませんね。 resource.h #define IDR_MENU1 100 #define ID_EXIT 101 #define ID_TEST 102 #define ID_A 103 #define ID_B 104 #define ID_Menu 105 #define ID_Whats 106 #define ID_Help 107 #define ID_STATUS 108 #define ID_LISTVIEW 1000 menu.rc #include resource.h IDR_MENU1 MENU BEGIN POPUP File BEGIN MENUITEM Exit , ID_EXIT END POPUP Test BEGIN MENUITEM てすつ , ID_TEST END POPUP Option BEGIN MENUITEM A , ID_A MENUITEM B , ID_B MENUITEM めにゅ~ , ID_Menu MENUITEM whats? , ID_Whats END MENUITEM ヘルプ , ID_Help END main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, comctl32.lib ) #include GL/freeglut/freeglut.h #include resource.h #include commctrl.h //CreateStatusWindow()のために必要 //FreeGlutのウインドウプロシージャを置き換える為の変数 WNDPROC WndProc=NULL; //元のウィンドウプロシージャ HWND hWnd2=NULL; //ウィンドウハンドル HMENU hMenu=NULL; //メニュー HWND hStatusbar; // ステータスバーのハンドル HWND hProgbar; //プログレスバーのハンドル HWND hList;//リストビュー用 LV_COLUMN lvcol; LV_ITEM item; #define LIST_WIDTH 200 #define LIST_HEIGHT 150 #define WIDTH 320 #define HEIGHT 240 //回転用 float anglex = 0.0f; //白 GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; //置き換えた後のプロシージャ LRESULT CALLBACK WndProc2(HWND hWnd , UINT msg , WPARAM wParam , LPARAM lParam){ switch( msg ){ case WM_SIZE MoveWindow(hList, 0, 0, LIST_WIDTH, LIST_HEIGHT, TRUE); SendMessage( hStatusbar, WM_SIZE, wParam, lParam ); return 0; case WM_COMMAND switch (LOWORD(wParam)){ case ID_EXIT PostQuitMessage(0); } return 0; case WM_DESTROY exit(0); break; default if(WndProc){ return CallWindowProc(WndProc,hWnd , msg , wParam , lParam); }else{ return DefWindowProc(hWnd,msg,wParam,lParam); } } } //ウィンドウの検索 BOOL CALLBACK enumWindowsProc(HWND hWnd,LPARAM lParam){ HANDLE hModule=(HANDLE)GetWindowLong(hWnd,GWL_HINSTANCE); if(GetModuleHandle(NULL)==hModule){ wchar_t ClassName[256]; GetClassNameW(hWnd,ClassName,sizeof(ClassName)/sizeof(ClassName[0])); if(wcsncmp(ClassName,L FREEGLUT ,wcslen(ClassName))==0){ hWnd2=hWnd; return FALSE; } } return TRUE; } void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(150.0,150.0,-150.0, 0.0,0.0,0.0, 0.0,1.0,0.0); glMaterialfv(GL_FRONT, GL_DIFFUSE, white); //回転 glRotatef(anglex,1.0f,0.0f,0.0f);//X軸を回転 glutSolidSphere(40.0,16,16); glutSwapBuffers(); } void idle(void){ anglex+=2.0f; Sleep(1); glutPostRedisplay(); } void Init(){ glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glEnable(GL_DEPTH_TEST); //ワイヤーフレーム glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); } bool main(int argc, char *argv[]){ glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( リストビュー ); //FreeGlutのウインドウハンドルとウインドウプロシージャを置き換える EnumWindows(enumWindowsProc,0); if(hWnd2){ WndProc=(WNDPROC)GetWindowLong(hWnd2,GWL_WNDPROC); SetWindowLong(hWnd2,GWL_WNDPROC,(LONG)WndProc2); }else{ return false; } //メニューを作成 hMenu=LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU1)); if(hMenu){ SetMenu(hWnd2,hMenu); }else{ return false; } // コモンコントロール関係の初期化 InitCommonControls(); // ステータスバーを作成 hStatusbar = CreateStatusWindowW(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, L ステータスバー ,hWnd2,ID_STATUS); //リストビュー hList = CreateWindowEx(0, WC_LISTVIEW, L ,WS_CHILD | WS_VISIBLE | LVS_REPORT, 0, 0, LIST_WIDTH, LIST_HEIGHT,hWnd2,(HMENU)ID_LISTVIEW, (HINSTANCE)GetWindowLong(hWnd2, GWL_HINSTANCE),NULL); //拡張スタイルの設定 DWORD dwStyle; dwStyle = ListView_GetExtendedListViewStyle(hList);//現在のスタイルを取得 dwStyle |= LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES; ListView_SetExtendedListViewStyle(hList, dwStyle);//拡張スタイルを指定 //ラベル作成 lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvcol.fmt = LVCFMT_LEFT;//テキスト左寄せ lvcol.cx = 100;//ラベル幅 lvcol.pszText = L 年 ;//ラベルに表示するテキスト lvcol.iSubItem = 0; ListView_InsertColumn(hList, 0, lvcol); lvcol.cx = 120; lvcol.pszText = L 月 ; lvcol.iSubItem = 1; ListView_InsertColumn(hList, 1, lvcol); item.mask = LVIF_TEXT;//「テキストを入れます」というフラグ item.pszText = L 2000年 ;//入れるテキスト item.iItem = 0;//アイテムNo. item.iSubItem = 0;//サブアイテムNo. ListView_InsertItem(hList, item);//リストビューの項目追加関数 item.pszText = L 2001年 ; item.iItem = 1; item.iSubItem = 0; ListView_InsertItem(hList, item); item.pszText = L 2002年 ; item.iItem = 2; item.iSubItem = 0; ListView_InsertItem(hList, item); item.pszText = L 1月 ; item.iItem = 0; item.iSubItem = 1; ListView_SetItem(hList, item); item.pszText = L 1月 ; item.iItem = 1; item.iSubItem = 1; ListView_SetItem(hList, item); item.pszText = L 1月 ; item.iItem = 2; item.iSubItem = 1; ListView_SetItem(hList, item); glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); return true; }
https://w.atwiki.jp/android_development/pages/29.html
Top 開発 Admobの広告を表示する Admobの広告を表示する Admobとは Admobとは、世界最大のモバイル広告ネットワークである。(HP:http //jp.admob.com/) Admobの広告をアプリケーションで表示するには、 1.パブリッシャーIDを取得 2.「AdMob Android SDK」のダウンロード 3.アプリケーションにコードを書く をする必要がある。 1. パブリッシャーの取得&「AdMob Android SDK」のダウンロード ①Admobにログイン ②サイト/アプリケーションの追加をクリック ③アプリケーションの種類を選択(Android)し、詳細を入力 -App名:名前 -URL:マーケット等のURL(とりあえず「http //」でOK) -ジャンル:なんでもOK -Appの説明:説明書きます 「次へ」をクリック ④「AdMob Android SDKのダウンロード」をクリックし,SDKを取得(任意のフォルダに配置) ⑤作成したサイトの「設定を管理」をクリックすると「パブリッシャーID」が表示されている 2. アプリケーションにコードを書く ①まず、eclipseを使って「AdMob Android SDK」をプロジェクトに読み込む 「プロジェクト」→「プロパティ」→「Javaのビルド・パス」→「外部JARの追加」をクリック 「admob-sdk-android\admob-sdk-android.jar」を選択する。 ②AndroidManifest.xmlを編集 meta-data android value="「パブリッシャーID」" android name="ADMOB_PUBLISHER_ID" / 上記を「applicationタグ」内に入れる.「パブリッシャーID」の箇所に取得したIDを入れる permissionを追加(manifestタグ内) uses-permission android name="android.permission.INTERNET" / uses-permission android name="android.permission.ACCESS_COARSE_LOCATION" / ③「res\values」内に「attrs.xml」を作成する。 ?xml version="1.0" encoding="utf-8"? resources declare-styleable name="com.admob.android.ads.AdView" attr name="backgroundColor" format="color" / attr name="primaryTextColor" format="color" / attr name="secondaryTextColor" format="color" / attr name="keywords" format="string" / attr name="refreshInterval" format="integer" / /declare-styleable /resources ④main.xmlを編集する。 「Layoutタグ」を編集。2行目を追加 LinearLayout xmlns android="http //schemas.android.com/apk/res/android" xmlns myapp="http //schemas.android.com/apk/res/「パッケージ名」" android orientation="vertical" android layout_width="fill_parent" android layout_height="fill_parent" 「パッケージ名」をアプリケーションのパッケージ名に変更する。 広告を表示する箇所に以下のコードを追加 com.admob.android.ads.AdView android id="@+id/ad" android layout_width="fill_parent" android layout_height="wrap_content" myapp backgroundColor="#000000" myapp primaryTextColor="#FFFFFF" myapp secondaryTextColor="#CCCCCC" / これで、広告が表示されます! エミュレータで確認する場合 onCreateメソッド内に以下を追加すると、エミュレータでも広告が表示されます。 AdManager.setTestDevices( new String[] { AdManager.TEST_EMULATOR, } ); Top 開発 Admobの広告を表示する
https://w.atwiki.jp/ack_sora/pages/30.html
フォルダの内容をソートして表示する java.io.*, java.util.* をimportする ファイルとフォルダの区別はされない (単純に名前をソート、表示するだけ) <% String path = application.getRealPath("/") + "フォルダ名"; File dir = new File(path); if(dir.exists() != true){ dir.mkdir(); //なければ作成 } →Fileオブジェクトのexists()メソッドでパスが示すファイルまたはフォルダが存在するかどうか確認する。 String[] files = dir.list(); →Fileオブジェクトのlist()メソッドでパスが示すフォルダの中のファイルまたはフォルダを表す配列を取得。 Arrays.sort(files); //昇順にソート for(int i = 0; i files.length; i++){ out.println(files[i] + "<br />"); } %>