C++ WinAPI Создать нить, рекурсивно создающую себя с завершением родительской нитиСоздать нить, рекурсивно создающую себя с завершением
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI ThreadProc(CONST LPVOID lpParam) {
cout << "Created Thread" << endl;https://www.cyberforum.ru/ win-api/ thread1810742.html
Найти ошибку в программе: Создать нить, выводящую через каждую секунду свой текущий приоритет C++ WinAPI Есть задание "Создать нить, выводящую через каждую секунду свой текущий приоритет."
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI ThreadProc(CONST LPVOID lpParam) {
cout << "Created Thread" << GetThreadPriority(lpParam) << endl;
C++ WinAPI Эмуляция нажатия кнопки джойстиком Xboxhttps://www.cyberforum.ru/ win-api/ thread1810709.html Купил шлем виртуальной реальности Oculus Rift без дистанционки и без джойстика Xbox. Тенденция в последнее время такая, что все разработчики игр все больше используют последний драйвер версии 1.3 для этого шлема. А разработчики этого драйвера (они же и разработчики шлема) впихнули в свой драйвер целый магазин по продаже игр для этого шлема. И вот этот самый драйвер - магазин перед каждой игрой...
C++ WinAPI Автоперенос в EditДобрый день. Подскажите пожалуйста, как сделать автоперенос строки в edit? Флаги для многострочности и принятия Enter включены. Заранее спасибо.
Добавлено через 1 минуту
Решено. Достаточно было отключить горизонтальную прокрутку.https://www.cyberforum.ru/ win-api/ thread1810546.html
WM_CHAR, TranslateMessage и т.п. - нужно отладить программу на tcl/tk C++ WinAPI Доброго времени суток!
Есть такой проект - tcl/tk. На нём я написал свою программу. Но иногда я печатаю (руками) в тк-шном редакторе и проскакивают неверные буквы. Например, я печатаю "вававава", а получается "вава2а2а". Просидел сегодня весь день в отладчике, но так и не разобрался. Моя версия состоит в том, что поступает слишком много событий (у меня ещё идёт обмен по сети) и tcl/tk, который...
C++ WinAPI Определить разрядность windows из 32-битного процессаhttps://www.cyberforum.ru/ win-api/ thread1810215.html нужно определить разрядность операционной системы из 32-битного процесса
нашел такой кусок кода, но он показывает 32 бита в 64битной виндовс
int GetWindowsBitness()
{
int result = 32;
IW64PFP IW64P = (IW64PFP)GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process");
//
C++ WinAPI Отображение окна по нажатию кнопкиВсем привет.
Только начал изучать, пишу программу для лабораторной winAPI c++, нужно создать главное окно с 2мя кнопками, каждая кнопка будет выводить окно соответствующее одному из 2х заданий по лабораторной.
Создал главное окно, кнопку, и 2е окно, 2 процедуры для главного и 2го окна, но при нажатии на кнопку 2е окно не показывается.
Вот код полностью:
#include <Windows.h>//подключение...https://www.cyberforum.ru/ win-api/ thread1809666.html
C++ WinAPI Отслеживание нажатия моей кнопки в чужом окнеДоброго времени суток прошу вашей помощи в некой задаче
Вобщем есть приложение через которое я запускаю другое приложение получая его ProcessId
Затем получаю дескриптор окна и создаю через CreateWindow несколько кнопок в запущеном приложении
Собственно проблема
все как бы хорошо все создается но как отследить и обработать нажатия на созданые мной кнопки ?
прогуглив часов 5 я нашол...https://www.cyberforum.ru/ win-api/ thread1809552.html
C++ WinAPI Атомарность присвоения У меня тут вопрос возник: будет ли обычное 32-битное присвоение (X = 10 или mov ,eax), если переменная не выровнена по границе памяти, атомарным? Т.е. переменная 32-битная находится, скажем, по адресу 00FFFFFFh.
p.s. Поскольку в "ассемблере для экспертов" мне пока не разрешено создавать сообщения, приходится спрашивать здесь...
абота с потоками и с синхронизацией поддерживается всеми современными С++11(14) компиляторами "из коробки". Используй шатный std::thread. WinApi - это непереносимо и имеет смыл использовать лишь если нужна супер оптимизация под винду.
Вот там, где я сейчас работаю с современными компиляторами беда. А тут за это задание взялся и понял, что работал больше с Си, чем С++ и STL.
Сообщение от shmkv
если просто без потоков эту функцию запускаешь, то работает? Просто тут ты отрывок дал и не видно как из других потоков ты с этим хозяйством взаимодействуешь.
Сама функция работает криво, неважно в потоке или нет. Вроде нашел место:
#include "signClass.h"#include <future>void SignCreater::getInOutFile(){char ch =0;do{try{cout<<"Введите полный путь до входящего файла:"<<endl;cin.unsetf(ios::skipws);cin.getline(innerFile, MAXLEN);if(cin.good()){
hInnerFile.exceptions(ios::failbit|ios::badbit|ios::eofbit);
hInnerFile.open(innerFile, ios::out|ios::binary);cout<<"Enter path for outputfile: "<<endl;cin.getline(outerFile, MAXLEN);if(outerFile ==0){cout<<"File will be create in local directory!"<<endl;}
hOuterFile.exceptions(ios::failbit|ios::badbit);
hOuterFile.open(outerFile, ios::in|ios::binary|ios::app);cout<<"Enter size of block (Kb): ";cin>>blockSize;if(cin.good()){if(blockSize ==0){
blockSize = DEFBLOCKSIZE;}
blockSize *=1024;}break;}}catch(ios::failure&err){cerr<<"Ошибка: "<<err.what()<<endl;cerr<<"Невозможно найти или открыть Inner файл!"<<endl;cin.clear();cout<<"Хотите попробовать еще раз? y/n"<<endl;cin>>ch;}catch(range_error &err){cerr<<"Ошибка: "<< err.what()<<endl;cin.clear();cout<<"Хотите попробовать еще раз? y/n"<<endl;cin>>ch;}}while(ch =='y');}void SignCreater::readFile(){unsignedint size;
hInnerFile.seekg(0, ios::end);
size = hInnerFile.tellg();
hInnerFile.seekg(0, ios::beg);try{if(!hInnerFile.is_open()){// throw system_error(errno);}else{int k=0;while(!hInnerFile.fail()&&!hInnerFile.eof()){if(size<blockSize)
blockSize = size;
shared_ptr<char> pInBlock(newchar[blockSize], [](char* buf){delete[] buf;});
hInnerFile.read(pInBlock.get(), blockSize);
fifoWrite.push(pInBlock);
fifoHash.push(pInBlock);
size -= blockSize;++k;cout<<k<<endl;}
finish.store(true);
hInnerFile.close();}}catch(system_error &err){}}//Функция перед запуском должна проверяться на наличие элементов в очереди//Должна быть функция обрабатывающая очередь и передающая указатель блока на запись и подсчет хэшаvoid SignCreater::writeFile(){try{if(!hOuterFile){//здесь что то должно быть}else{
hOuterFile.clear();while(!finish.load()&&!fifoWrite.empty()){
shared_ptr<char> pOutBlock(newchar[2048], [](char*buf){delete[] buf;});
fifoWrite.pop(pOutBlock);
hOuterFile.write(reinterpret_cast<char*>(pOutBlock.get()), 2048);}cout<<"Finish:"<<finish<<endl;}}catch(system_error &err){}}void SignCreater::processing(){
this->getInOutFile();try{
std::thread readingThread(&SignCreater::readFile, this);if(readingThread.joinable())
readingThread.detach();
std::thread writeThread(&SignCreater::writeFile, this);if(writeThread.joinable())
writeThread.join();}catch(system_error& err){cerr<<"Error thread: "<<err.what()<<endl;}}