Страница 1 из 10 Часто задаваемые вопросы по Visual C++.
Как сделать так, чтобы при редактировании были видны комментарии для _своих_ методов или переменных? 1. Надо отметить, если не отмечено, все опции флажками в Tools/Options/Statement completion options; 2. Оставлять комментарии _перед_ объявлением, как например: //Minimize to tray //Надо ли минимизировать в System Tray BOOL bTrayMin;
Как сделать так, чтобы показывалось только имя приложения?
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; cs.style &= ~(FWS_PREFIXTITLE|FWS_ADDTOTITLE); return TRUE; }
Как в консольной программе выводить цветные надписи и менять палитру?
=== Hачало CTEST.CPP === #include
void main() { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); SMALL_RECT srct; CHAR_INFO chiBuffer[160]; COORD coord1, coord2; char ddd[666]; CharToOem("2:5095/38 - злобный ламеpюга", ddd); DWORD cWritten; coord1.Y = 0; coord1.X = 0; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); WriteConsoleOutputCharacter(hStdout, ddd, lstrlen(ddd), coord1, &cWritten); for (int i = 0; i < lstrlen(ddd); i++) { WORD wColors = 1 + i * 3; coord1.X = i; WriteConsoleOutputAttribute(hStdout, &wColors, 1, coord1, &cWritten); } srct.Top = 0; srct.Left = 0; srct.Bottom = 1; srct.Right = 79; coord1.Y = 0; coord1.X = 0; coord2.Y = 1; coord2.X = 80; ReadConsoleOutput(hStdout, chiBuffer, coord2, coord1, &srct); for (i = 0; i < 50; i++) { srct.Left = (SHORT)((double)(79 - lstrlen(ddd)) * rand() / RAND_MAX); srct.Top = (SHORT)((double)25 * rand() / RAND_MAX); srct.Bottom = srct.Top + 1; WriteConsoleOutput(hStdout, chiBuffer, coord2, coord1, &srct); } Sleep(10000); } === Конец CTEST.CPP ===
Как подгрузить Riched32.dll в InitInstance()?
BOOL CTestApp::InitInstance() { HMODULE hmod = LoadLibrary("Riched32.dll"); //Загружаем if(hmod == NULL){ AfxMessageBox("RichEdit пахать не будет"); return false; }
CTestDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); // в TestDlg нарисован RichEdit
FreeLibrary(hmod); //Выгружаем
return false; }
Как программно определить тип файловой системы? Используйте Win32 API - функцию GetVolumeInformation(...)
Как на VC5.0 создать окошко на full-screen?
BOOL CMyWnd::Create() { ... CRect rect(0, 0, GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN)); strClass - заpегистpиpованный оконный класс. CreateEx(WS_EX_APPWINDOW, strClass, AfxGetAppName(), WS_SYSMENU | WS_POPUP | WS_VISIBLE, 0, 0, rect.right, rect.bottom, NULL, NULL, 0); ... }
или hwnd=CreateWindowEx(0, "Name", "Title", WS_POPUP|WS_SYSMENU, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 0, 0, hInstance, 0);
Как занести строку из CEdit'a в CListBox?
m_Edit.SetWindowText("aaa\r\nbbb\r\nccc"); // в Edit теперь три строки. Ловим первую char buffer[100]; // Выделяем буфер int count = m_Edit.GetLine(0, // индекс строки buffer, // указатель на буфер sizeof(buffer)); // размер буфера // Если OK, то возвращает кол-во скопированных символов buffer[count] = 0; // Скопированная строка не заканчивается \0 m_ListBox.AddString(buffer); // В данном случае "aaa"
или с помощью MFC: CTreeCtrl *list = (CTreeCtrl*)GetDlgItem(IDC_TREE); list->InsertItem( string, NULL, TVI_LAST ); Почему функция CreateProcess не запускает *.lnk-файлы? Потому что она создает процессы только для _запускаемых_ файлов. *.lnk-файлы не являются запускаемыми.Чтобы это сделать используйте ShellExecute.
Как поменять указатель мыши со стрелки на часики и обратно? Используйте функции BeginWaitCursor() и EndWaitCursor(). Есть еще один (из многих) путь: void CTest::MyBiiiiigFunc() { CWaitCursor wait; for(int j=0; j<0x7ffffff; j++){ //...... Sleep(1000); // И тут все время крутятся часики } } // А вот тут их уже нет. При создании объекта курсор заменяется на часики дефолтным конструктором. Деструктором - восстанавливается прежний. |