BOOL DialogImageTextureName::OnInitDialog() { CDialog::OnInitDialog(); // TODO: この位置に初期化の補足処理を追加してください ImageTextureNode *imgTex; char *selectString = NULL; SendDlgItemMessage(IDC_IMAGETEXTURE_NAME, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0L); for (imgTex = GetWorld()->getSceneGraph()->findImageTextureNode(); imgTex; imgTex=imgTex->nextTraversal()) { if (imgTex && StringLength(imgTex->getName()) && StringNCompare(imgTex->getName(), CTB_NODE_NAME, strlen(CTB_NODE_NAME))) SendDlgItemMessage(IDC_IMAGETEXTURE_NAME, CB_ADDSTRING, 0, (LONG)(LPSTR)imgTex->getName()); if (!selectString) selectString = imgTex->getName(); } Node *node = getNode(); if (node) SendDlgItemMessage(IDC_IMAGETEXTURE_NAME, CB_SELECTSTRING,(WPARAM)-1, (LPARAM)(LPCSTR)node->getName()); else if (selectString) SendDlgItemMessage(IDC_IMAGETEXTURE_NAME, CB_SELECTSTRING,(WPARAM)-1, (LPARAM)(LPCSTR)selectString); return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります // 例外: OCX プロパティ ページの戻り値は FALSE となります }
ImageTextureNode *SceneGraph::findImageTextureNode(char *name) { if (!name || strlen(name) <= 0) return NULL; for (ImageTextureNode *node = findImageTextureNode(); node; node = node->nextTraversal()) { const char *nodeName = node->getName(); if (nodeName && strlen(nodeName)) { if (!strcmp(name, nodeName)) return node; } } return NULL; }