|
Mainly because the "core" program is build using defines and I am still not too comfortable using enum.
BTW after I "solved" this problem I have decided to "improve" on on it a got stuck again.
Life is fun.
|
|
|
|
|
I can only agree with Carlo on this. More generally, whenever there is a suitable way to use standard language features instead of #define, use that standard language feature. Even if it means you need to type more!
Modern editors offer autocompletion that makes typing effort a non-argument! Moreover, code riddled with #define macros is much harder for editors to interpret, preventing it from offering correct and complete autocompletion lists. Therefore the use of #define has the very real potential to actually increase the typing effort by hamstringing the editors capabilities!
Besides, as you've already stated, #defines will just keep tripping you up. Most of the time it is due to their entire lack of context-related syntax checking at the time of writing. And sometimes it is because your macro name conflicts with another non-macro symbol in some totally unrelated part of the code - that latter issue will lead to obscure errors that can keep you busy for days. I am speaking from my own experience.
Therefore: save time - do not use #define unless there is no other way to achieve the intended results. And if you do, don't place these macros in a header that gets included in unrelated source files - either put them right into the source file that needs them, or, if there are multiple source files that need them, put the macros in a separate header just for that purpose.
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
I would like to know how to send a text file from C to java, in which java has to receive the file and send it back to C. I have developed the code, but i am facing error in the receive function
#include<time.h>
#include<errno.h>
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
#include<sys stat.h="">
#include<sys time.h="">
#include<sys ioctl.h="">
#include<sys types.h="">
#include<arpa inet.h="">
#include<sys select.h="">
#include<sys socket.h="">
int send_text(int socket)
{
FILE *text;
char a[50];
int size, read_size, stat, packet_index;
char send_buffer[8008], read_buffer[8008];
int wrt=0,sock_fd,tsize=0;
packet_index = 1;
int i=0;
text = fopen("/home/sosdt009/Desktop/character3.txt", "r");
if (text == NULL)
{
printf("Error Opening text File:");
exit(-1);
}
printf("Getting text Size:\n");
gets(a);
fseek(text, 0, SEEK_END);
size = ftell(text);
fseek(text, 0, SEEK_SET);
printf("Total text size: %d \n", size);
gets(a);
printf("Sending text Size:\n",size);
gets(a);
send(socket, (void *)&size, sizeof(size), 0);
while(stat < 0)
printf("Socket data:%s \n", read_buffer);
gets(a);<br />
while(size>tsize)
{
read_size = fread(send_buffer,1,sizeof(send_buffer),text);
printf("The size of send buffer:%c \n",send_buffer);
gets(a);
printf("The read size value is :%d \n", read_size);
gets(a);
do
{<br />
stat = send(socket, send_buffer, read_size, 0);
printf("The send size value is: %d \n", size);
gets(a);
printf("The read size value is: %d \n", read_size);
gets(a);
} while (stat < 0);
printf("Packet %d, sent %d bytes.\n", packet_index, read_size);
gets(a);
tsize = tsize+read_size;
printf("The tsize value is:%d \n",tsize);
gets(a);
memset(send_buffer,0, sizeof(send_buffer));
if(read_size<=NULL)
{
printf("The connection is transferred to received text: \n");
gets(a);
}
}
fclose(text);
printf("Text successfully send:\n");
gets(a);
return 0;
}
int receive_text(int socket)
{
int buffersize = 77,recv_size=0,read_size = 1, write_size,size;
char *pBuf,a[50],b[77];
int errnom,i;
FILE *textnew;
size_t rec;
textnew = fopen("/home/sosdt009/Desktop/receivednew.txt", "a");
if (textnew == NULL)
{
printf("Error has occurred, text file could not be opened \n");
return -1;
}
while(read_size > 0)
{
printf("The Buffersize is :%d\n",buffersize);
gets(a);
printf("The size of socket is:%d\n",socket);
gets(a);
if (buffersize > 0)
{
printf("Buffersize value is :%d\n", buffersize);
gets(a);
pBuf = malloc(sizeof(b));
if (!pBuf)
{
printf(errnom, "Memory Error Cannot Allocate!\n");
gets(a);
exit(-1);
}
read_size = recv(socket,pBuf,sizeof(pBuf),1);
printf("Read size value is :%d \n",read_size);
gets(a);
printf("Buffersize value is:%d \n",sizeof(pBuf));
gets(a);
write_size = fwrite(pBuf,1,sizeof(pBuf),textnew);
free(pBuf);
printf("Write size value is :%d \n",write_size);
gets(a);
printf("Buffer size value is :%d \n",sizeof(pBuf));
gets(a);
recv_size += read_size;
printf("Received size value is:%d \n",recv_size);
gets(a);
printf("Read size value is :%d \n",read_size);
gets(a);
}
}
free:
fclose(textnew);
close(socket);
printf("Text Successfully Received:\n");
gets(a);
return 0;
}
int main(int argc,char *argv[])
{
int socket_desc;
struct sockaddr_in server;
char *parray,errnomu;
socket_desc = socket(AF_INET,SOCK_STREAM,0);
if(socket_desc == -1)
{
printf("Could not create socket \n");
}
memset(&server,0,sizeof(server));
server.sin_addr.s_addr = inet_addr("10.170.0.38");
server.sin_family = AF_INET;
server.sin_port = htons(6999);
if (connect(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
{
printf(strerror(errnomu));<br />
printf("Connect Error \n");
return -1;<br />
}
puts("Connected");
send_text(socket_desc);
receive_text(socket_desc);
close(socket_desc);
return 0;
}
|
|
|
|
|
|
venkat28vk wrote: ...but i am facing error in the receive function And you are withholding that error for what reason?
You seriously need to remove all but the relevant pieces of code. Otherwise, few, if any, people will bother to wade through it all.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Agree with Mr David, what type of error are you facing? is at compile time or runtime.. are you able to send file to JAVA Client? or it problem sending from java client to c++?
|
|
|
|
|
Wow, Alok! It has been a while...

|
|
|
|
|
Really ! 
|
|
|
|
|
Jokes apart , have started working in VC++ again after long time...happy to back in fold
|
|
|
|
|
I created a CMFCToolBarComboBoxButton in a CMFCToolBar as following:
afx_msg LRESULT CMainFrame::OnToolbarReset(WPARAM wp, LPARAM lp)
{
UINT uiToolBarId = (UINT) wp;
if (uiToolBarId == IDR_TOOLBAR_FILES)
{
CMFCToolBarComboBoxButton omboButton1(IDC_SRC_PRO_LIST, GetCmdMgr ()->GetCmdImage(IDC_SRC_PRO_LIST, FALSE), CBS_DROPDOWNLIST);
comboButton1.EnableWindow(FALSE);
comboButton1.SetCenterVert();
comboButton1.SetDropDownHeight(200);
comboButton1.SetFlatMode();
m_wndFilesBar.ReplaceButton (IDC_SRC_PRO_LIST, comboButton1);
}
}
It runs well.
But when I want to add some content into it from another thread.I defined a function:
int CMainFrame::CBAddItem(LPCTSTR lpszItem, DWORD_PTR dwData)
{
int r = -1;
CMFCToolBarComboBoxButton* pSrcCombo = CMFCToolBarComboBoxButton::GetByCmd (IDC_SRC_PRO_LIST);
if(pSrcCombo)
{
r = pSrcCombo->AddItem(lpszItem, dwData);
}
return r;
}
The function CMFCToolBarComboBoxButton::GetByCmd always return NULL. And I traced this function, found:
int __stdcall CMFCToolBar::GetCommandButtons(UINT uiCmd, CObList& listButtons)
{
.....
for (POSITION posTlb = afxAllToolBars.GetHeadPosition(); posTlb != NULL;)
{
CMFCToolBar* pToolBar = (CMFCToolBar*) afxAllToolBars.GetNext(posTlb);
ENSURE(pToolBar != NULL);
if (CWnd::FromHandlePermanent(pToolBar->m_hWnd) != NULL)
CWnd::FromHandlePermanent(pToolBar->m_hWnd) always return NULL.
So why?
|
|
|
|
|
Check if you met the requirements described at the MSDN page Multithreading: Programming Tips[^].
A common solution to access MFC objects from other threads is posting user defined messages. Then the manipulation of the object occurs inside the thread that owns the MFC object. If your thread is a worker thread see the CP article Using Worker Threads[^] for examples.
|
|
|
|
|
I have this code
BOOL CFormOptions::OnPreparePrinting(CPrintInfo* pInfo)
{
tagPDA pPrintDlg;
AfxGetApp()->GetPrinterDeviceDefaults (&pPrintDlg);
pInfo->m_pPD->m_pd.hDevMode = pPrintDlg.hDevMode;
LPDEVMODE devMode = pInfo->m_pPD->GetDevMode();
if (devMode)
{
if (m_legal)
devMode->dmPaperSize = 45; else
devMode->dmPaperSize = DMPAPER_LEGAL;
devMode->dmPaperWidth = 2000;
GlobalUnlock(devMode);
}
if ( pInfo->m_bPreview ) return DoPreparePrinting(pInfo);
return DoPreparePrinting(pInfo);
}
and I can adjust the paper size from letter to legal. But if I try to adjust the paper size to DMPAPER_10X11 or any other size, the software ignores it and just uses letter size.
How can I adjust the paper size to be something like DMPAPER_10X11? I tried adjust the PaperWidth as well and that is ignored as well. So Im not sure what Im doing wrong.
Any help, any direction any one can provide will be greatly appreciated.
|
|
|
|
|
I think you might need to tell the devMode which fields are being initialized by setting the dmFields member
example of setting landscape orientation:
devMode->dmOrientation = DMORIENT_LANDSCAPE;
devMode->dmFields |= DM_ORIENTATION;
|
|
|
|
|
Howdy!
With the new great OS -- 10 -- we're seeing something odd.
Running our installer is not shutting down our app.
We do receive the WM_QUERY_ENDSESSION and we do reply with TRUE ( ok to shutdown )
But, upon receiving the WM_ENDSESSION we receive a FALSE (don't shutdown).
Somewhere between the QUERY and the END -- "someone" is saying NO to this.
How does one go about debugging this sort of thing?
I've used SPY++ but am not finding it to be the most useful tool, except to confirm what I knew in code. SPY is not telling me who sends the QUERY. If I could figure out where these messages are coming from, maybe I could watch the conversations taking place around this transaction.
-- in previous versions of Windows this was not an issue -- it worked like we would expect. But Windows10 is telling me not to end my session.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
<a href="http://www.soonr.com">soonr.com -- PC Power delivered to your phone</a>
|
|
|
|
|
hi i had learn c++ and something about the framework Qt but the problem that the Qt is not used for building apps smartphone like C# or JAVA !!
so do u advice me to leave c++ and Qt and start with C# or JAVA ??
please i need your Advice Thank you

|
|
|
|
|
Pick one place and post there, not in QA, C++, and C#.
Otherwise, you duplicate work and annoy people.
You have this posted in QA, so leave it there.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
pick whatever provide you job! beggar are not chooser
|
|
|
|
|
Hi Friends,
I am trying to set focus on the first button in a toolbar control if a key combination like ALT + SHIFT + A is pressed. I am using preTranslate Message, like this
if ( pMsg->message == WM_SYSCHAR && (GetKeyState(VK_SHIFT) & 0x8000) && (pMsg->wParam == 'a' || pMsg->wParam == 'A') )
{
m_wndToolBar.SetFocus();
}
Now. I am getting focus on first button of toolbar. I clicked SPACEBAR and this button get pressed. It open a dialog , after my operation I closed it.
After that, Unfortunately second button get activated. I pressed spacebar again.It will pressed that button and called related function , which will open another dialog. After my operation, I closed it .
Now the focus went to First button. According to project requirement the focus must retain to the last clicked button. I checked in project code, nowhere first button getting activated explicitly.
Please help me out.
Regasrd,
Amrit Agrawal
|
|
|
|
|
I am working on a legacy Windows app written in Win32.
There's a checkbox in the screen and i call the SetFocus() function to have the focus on it. I know that it works as far as setting the focus, because now i can use space button in keyboard to check and uncheck the checkbox.
But the problem is, when a control get's the focus, it's supposed show a broken rectangle around it. In my case this broken rectangle is not drawn/shown all the time. Sometimes it shows the broken rectangle and some times it doesn't.
I need to show some visual indication to user that this checkbox has the focus. I tried using WM_CTLCOLORSTATIC, but that creates some painting issues in the window.
So am looking for a simpler solution, by which i could show some visual indicator to user that this checkbox is having focus.
Like changing the text color or background color or even force draw a broken rectangle.
But i have no idea how to do this without using the WM_CTLCOLORSTATIC.
Is there a easier way to show some sort of visual indication on a checkbox in Win32?
Thanks in advance!
|
|
|
|
|
I don't know exactly, but it seems to me that you should never call SetFocus() method. Instead, we have to post WM_SETFOCUS message to the checkbox control as follows:
HWND hCheckBoxWnd = NULL;
if ((hCheckBoxWnd = ::GetDlgItem(hDlg,IDC_YOUR_CHECK_BOX_ID)))
::PostMessage(hCheckBoxWnd, WM_SETFOCUS, 0, 0);
Actually, you should not send the message using SendMessage(...) Win32API function, all you have to do is to post the message using PostMessage(...) instead.
|
|
|
|
|
I have 10+ years experience with C#. I now have an opportunity learn C++.
I'd like to work in Visual Studio (2012 and higher).
Can someone recommend a decent starter book or web reference?
Thanks
If it's not broken, fix it until it is
|
|
|
|
|
There's a bunch of good texts listed in this[^] thread.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
Thanks
If it's not broken, fix it until it is
|
|
|
|
|
|
My app was running fine with Windows 7 & 8.1 using URLDownloadTofile(NULL,sUrl,SFile,0,NULL). With the upgrade to Windows 10 it has stopped working. I've made sure my app has security settings to allow it through the firewall (and this hasn't changed) but now the request to download fails. Also the Visual Studio 2008 Document explorer now just comes up with "Unable to download <help page="">" which makes me suspect it's a more general problem that just my app. I can't find any security settings that should be blocking my app.
If any one could shed some light on my problem I'd be grateful. I've trawled around the web for a day with no useful results.
Thanks,
David.
|
|
|
|
|